uv
maxcov(Xu,Yv).(1)
Ycov(Xu,y)≡Var(Xu)1/2×cor(Xu,y)×Var(y)1/2,st.∥u∥=1.
Karena tidak bergantung pada , kita harus memaksimalkan . Mari kita pertimbangkan , di mana data distandarisasi secara individual (saya awalnya membuat kesalahan penskalaan kombinasi linear Anda bukan dan secara terpisah!), Sehingga ; Namun, dan tergantung pada . Sebagai kesimpulan,
memaksimalkan korelasi antara komponen laten dan variabel respons tidak akan menghasilkan hasil yang samaVar(y)uVar(Xu)1/2×cor(Xu,y)X=[x_1;x_2]
x1x2Var(x1)=Var(x2)=1Var(Xu)≠1u.
Saya harus berterima kasih kepada Arthur Tenenhaus yang menunjuk saya ke arah yang benar.
Menggunakan vektor bobot unit tidak membatasi dan beberapa paket ( pls. regression
dalam bentuk plsgenomik , berdasarkan kode dari paket Wehrens sebelumnya pls.pcr
) akan mengembalikan vektor bobot yang tidak standar (tetapi dengan komponen laten masih dalam norma 1), jika diminta. Tetapi sebagian besar paket PLS akan mengembalikan terstandarisasi , termasuk yang Anda gunakan, terutama yang mengimplementasikan algoritma SIMPLS atau NIPALS; Saya menemukan ikhtisar yang baik dari kedua pendekatan dalam presentasi Barry M. Wise, Properties of Partial Least Squares (PLS) Regresi, dan perbedaan antara Algoritma , tetapi chemometricsusketsa menawarkan diskusi yang bagus juga (hlm. 26-29). Yang juga sangat penting adalah kenyataan bahwa sebagian besar rutinitas PLS (setidaknya yang saya tahu di R) mengasumsikan bahwa Anda memberikan variabel yang tidak standar karena pemusatan dan / atau penskalaan ditangani secara internal (ini terutama penting ketika melakukan validasi silang, misalnya ).
Dengan batasan , vektor ditemukan menjadiu′u=1u
u=X′y∥X′y∥.
Menggunakan sedikit simulasi, dapat diperoleh sebagai berikut:
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
Anda dapat membandingkan hasil di atas ( u=[0.5792043;0.8151824]
, khususnya) dengan apa yang akan diberikan paket R. Misalnya, menggunakan NIPALS dari paket chemometrics (implementasi lain yang saya tahu tersedia dalam paket mixOmics ), kita akan mendapatkan:
library(chemometrics)
pls1_nipals(X, y, 1)$W # X weights [0.5792043;0.8151824]
pls1_nipals(X, y, 1)$P # X loadings
Hasil serupa akan diperoleh dengan plsr
dan algoritma PLS kernel default:
> library(pls)
> as.numeric(loading.weights(plsr(y ~ X, ncomp=1)))
[1] 0.5792043 0.8151824
Dalam semua kasus, kita dapat memeriksa bahwa memiliki panjang 1.u
Asalkan Anda mengubah fungsi Anda untuk mengoptimalkan ke yang berbunyi
f <- function(u) cov(y, X%*%(u/sqrt(crossprod(u))))
dan menormalkan u
setelah itu ( u <- u/sqrt(crossprod(u))
), Anda harus lebih dekat dengan solusi di atas.
Sidenote : Karena kriteria (1) setara dengan
dapat ditemukan sebagai vektor singular kiri dari SVD sesuai dengan nilai eigen terbesar:u X ′ Y
maxu′X′Yv,
uX′Y
svd(crossprod(X, y))$u
Dalam kasus yang lebih umum (PLS2), cara untuk meringkas di atas adalah dengan mengatakan bahwa vektor kanonik PLS pertama adalah perkiraan terbaik dari matriks kovarians X dan Y di kedua arah.
Referensi
- Tenenhaus, M (1999). L'approche PLS . Revue de Statistique Appliquée , 47 (2), 5-40.
- ter Braak, CJF dan de Jong, S (1993). Fungsi objektif dari regresi kuadrat terkecil parsial . Jurnal Chemometrics , 12, 41–54.
- Abdi, H (2010). Regresi kuadrat terkecil terkecil dan proyeksi pada regresi struktur laten (Regresi PLS) . Wiley Interdisciplinary Ulasan: Statistik Komputasi , 2, 97-106.
- Boulesteix, AL dan Strimmer, K (2007). Parsial kuadrat terkecil: alat serbaguna untuk analisis data genomik dimensi tinggi . Briefing dalam Bioinformatika , 8 (1), 32-44.
pls
paket dan regresi PLS dalam makalah JSS ini .