La regressione di PLS si basa su algoritmi iterativi (ad es. NIPALS, SIMPLS). La descrizione delle idee principali è corretta: cerchiamo uno (PLS1, una variabile di risposta / predittori multipli) o due (PLS2, con diverse modalità, variabili di risposta multipla / predittori multipli) vettore (i) di pesi, (e ) , diciamo, per formare combinazioni lineari delle variabili originali in modo tale che la covarianza tra Xu e Y (Yv, per PLS2) sia massima. Concentriamoci sull'estrazione della prima coppia di pesi associati al primo componente. Formalmente, il criterio per ottimizzare le letture
Nel tuo caso, è univariato, quindi equivale a massimizzare
uv
maxcov(Xu,Yv).(1)
Ycov(Xu,y)≡Var(Xu)1/2×cor(Xu,y)×Var(y)1/2,st.∥u∥=1.
Dal momento che non dipende da , dobbiamo massimizzare . Consideriamo , dove i dati sono standardizzati individualmente (inizialmente ho commesso l'errore di ridimensionare la combinazione lineare invece di e separatamente!), In modo che ; tuttavia, e dipende . In conclusione,
massimizzare la correlazione tra la componente latente e la variabile di risposta non produrrà gli stessi risultatiVar(y)uVar(Xu)1/2×cor(Xu,y)X=[x_1;x_2]
x1x2Var(x1)=Var(x2)=1Var(Xu)≠1u.
Dovrei ringraziare Arthur Tenenhaus che mi ha indicato la giusta direzione.
L'uso di vettori di peso unitario non è restrittivo e alcuni pacchetti ( pls. regression
in plsgenomics , basati sul codice del pacchetto precedente di Wehrens pls.pcr
) restituiranno vettori di peso non standardizzati (ma con componenti latenti ancora conformi alla norma 1), se richiesto. Ma la maggior parte dei pacchetti PLS restituirà standardizzato , incluso quello che hai usato, in particolare quelli che implementano l'algoritmo SIMPLS o NIPALS; Ho trovato una buona panoramica di entrambi gli approcci nella presentazione di Barry M. Wise, Regressione delle proprietà dei minimi quadrati parziali (PLS) e differenze tra algoritmi , ma la chemiometriauvignette offre anche una buona discussione (pagg. 26-29). Di particolare importanza è anche il fatto che la maggior parte delle routine PLS (almeno quella che conosco in R) presume che tu fornisca variabili non standardizzate perché il centraggio e / o il ridimensionamento sono gestiti internamente (questo è particolarmente importante quando si esegue la validazione incrociata, ad esempio ).
Dato il vincolo , il vettore è risultato essereu′u=1u
u=X′y∥X′y∥.
Utilizzando una piccola simulazione, è possibile ottenere come segue:
set.seed(101)
X <- replicate(2, rnorm(100))
y <- 0.6*X[,1] + 0.7*X[,2] + rnorm(100)
X <- apply(X, 2, scale)
y <- scale(y)
# NIPALS (PLS1)
u <- crossprod(X, y)
u <- u/drop(sqrt(crossprod(u))) # X weights
t <- X%*%u
p <- crossprod(X, t)/drop(crossprod(t)) # X loadings
Puoi confrontare i risultati di cui sopra ( u=[0.5792043;0.8151824]
, in particolare) con ciò che i pacchetti R darebbero. Ad esempio, utilizzando NIPALS dal pacchetto chemometrics (un'altra implementazione che conosco è disponibile nel pacchetto mixOmics ), otterremmo:
library(chemometrics)
pls1_nipals(X, y, 1)$W # X weights [0.5792043;0.8151824]
pls1_nipals(X, y, 1)$P # X loadings
Risultati simili sarebbero stati ottenuti con plsr
e il suo algoritmo PLS kernel predefinito:
> library(pls)
> as.numeric(loading.weights(plsr(y ~ X, ncomp=1)))
[1] 0.5792043 0.8151824
In tutti i casi, possiamo verificare che sia di lunghezza 1.u
A condizione che modifichi la tua funzione per ottimizzare quella che legge
f <- function(u) cov(y, X%*%(u/sqrt(crossprod(u))))
e normalizzare in u
seguito ( u <- u/sqrt(crossprod(u))
), dovresti essere più vicino alla soluzione sopra.
Sidenote : Come criterio (1) è equivalente a
può essere trovato come singolare vettore sinistro dalla SVD di corrispondente autovalore:
maxu′X′Yv,
uX′Y
svd(crossprod(X, y))$u
Nel caso più generale (PLS2), un modo per riassumere quanto sopra è dire che i primi vettori canonici PLS sono la migliore approssimazione della matrice di covarianza di X e Y in entrambe le direzioni.
Riferimenti
- Tenenhaus, M (1999). L'approche PLS . Revue de Statistique Appliquée , 47 (2), 5-40.
- ter Braak, CJF e de Jong, S (1993). La funzione oggettiva della regressione parziale dei minimi quadrati . Journal of Chemometrics , 12, 41–54.
- Abdi, H (2010). Regressione parziale dei minimi quadrati e proiezione sulla regressione della struttura latente (regressione PLS) . Recensioni interdisciplinari di Wiley: statistiche computazionali , 2, 97-106.
- Boulesteix, AL e Strimmer, K (2007). Minimi quadrati parziali: uno strumento versatile per l'analisi di dati genomici ad alta dimensione . Briefing in Bioinformatics , 8 (1), 32-44.
pls
pacchetto e della regressione PLS in questo documento JSS .