R'de kısmi en küçük kareler regresyonu: standartlaştırılmış verilerdeki PLS neden korelasyonu en üst düzeye çıkarmaya eşdeğer değil?


12

Ben kısmi en küçük kareler (PLS) çok yeni ve R işlevin çıktısını anlamaya çalışma plsr()içinde plspaketin. Verileri simüle edip PLS'yi çalıştıralım:

library(pls)
n <- 50
x1 <- rnorm(n); xx1 <- scale(x1) 
x2 <- rnorm(n); xx2 <- scale(x2)
y <- x1 + x2 + rnorm(n,0,0.1); yy <- scale(y)
p <- plsr(yy ~ xx1+xx2, ncomp=1)

Aşağıdaki ve sayılarını bekliyordumab

> ( w <- loading.weights(p) )

Loadings:
    Comp 1
xx1 0.723 
xx2 0.690 

               Comp 1
SS loadings       1.0
Proportion Var    0.5
> a <- w["xx1",]
> b <- w["xx2",]
> a^2+b^2
[1] 1

maksimize etmek için hesaplanır

> cor(y, a*xx1+b*xx2)
          [,1]
[1,] 0.9981291

ancak durum tam olarak böyle değildir:

> f <- function(ab){
+ a <- ab[1]; b <- ab[2]
+ cor(y, a*xx1+b*xx2)
+ }
> optim(c(0.7,0.6), f, control=list(fnscale=-1))
$par
[1] 0.7128259 0.6672870

$value
[1] 0.9981618

Sayısal bir hata mı yoksa ve yapısını yanlış mı anlıyorum ?bab

Ayrıca bu katsayıların neler olduğunu bilmek istiyorum:

> p$coef
, , 1 comps

           yy
xx1 0.6672848
xx2 0.6368604 

EDIT : Şimdi ne p$coefolduğunu görüyorum :

> x <- a*xx1+b*xx2
> coef(lm(yy~0+x))
        x 
0.9224208 
> coef(lm(yy~0+x))*a
        x 
0.6672848 
> coef(lm(yy~0+x))*b
        x 
0.6368604 

Sanırım ve doğası hakkında haklıyım .bab

EDIT: @chl tarafından verilen yorumların ışığında sorumun yeterince açık olmadığını hissediyorum, bu yüzden daha fazla ayrıntı vereyim. Örneğimde orada bir vektör tepkilerinin ve iki sütun matrisi belirleyicileri ve normalize sürümü kullanmak ve ve normalize versiyonu ve (merkezlenmiş ve standart sapma ile bölünür). İlk PLS bileşenininX ˜ Y Y ˜ X X t 1YXY~YX~Xt1 olan ile bir ve bt1=aX~1+bX~2abİç çarpım, bir maksimal değere sahip olmak amacıyla seçilen . Dolayısıyla t 1 ve Y arasındaki korelasyonu en üst düzeye çıkarmakla eşdeğerdir , değil mi?t1,Y~t1Y


2
PLS regresyonu korelasyon değil (Kanonik Korelasyon Analizinde yapıldığı gibi ) faktör skorlarını (yük vektör (ler) i ile ham verilerin ürünü olarak hesaplanır) kovaryansını maksimuma çıkarır . Bu JSS belgesinde paket ve PLS regresyonuna iyi bir genel bakış var . pls
chl

1
Tüm vektörler ortalandığından ve normalleştirildiğinden, kovaryans korelasyondur, değil mi? Üzgünüz ama JSS kağıdı yeni başlayanlar için çok fazla teknik.
Stéphane Laurent

Genel olarak, işleri biraz karmaşıklaştıran asimetrik bir deflasyon işlemi (bir bloğun doğrusal kombinasyonunun diğerinin doğrusal kombinasyonuna gerilemesinden kaynaklanan) vardır. Bu yanıtta bazı şematik resimler sağladım . Hervé Abdi , PLS regresyonuna genel bir bakış verdi ve Wegelin'in Kısmi En Küçük Kareler Araştırması (PLS) da oldukça faydalı. Bu noktada, muhtemelen tüm bu yorumları bir cevaba dönüştürmeliyim ...
chl

Örneğimde orada bir vektör tepkilerinin ve iki sütun matrisi X belirleyicileri ve normalize sürümü kullanmak ~ Y, ve Y ve normalize versiyonu ~ X ve XYXY~YX~X (merkezlenmiş ve standart sapma ile bölünür). İlk PLS bileşen benim tanımı olan t 1 = bir ~ x 1 + b ~ x 2 ile bir ve b Skalar çarpımın maksimal değere sahip olmak amacıyla seçilen t 1 ,t1t1=aX~1+bX~2ab. İyi tanım değil mi? t1,Y~
Stéphane Laurent

Üzgünüz, @ Stéphane, çünkü yukarıdaki yorumlarım sadece bir bileşen talep ettiğinizi dikkate almadı (bu yüzden deflasyon burada kritik bir rol oynamıyor). Ancak, optimizasyon fonksiyonu, birim norm ağırlık vektörleri empoze etmediğini görünüyor, öyle ki sonunda. (btw, bu 'katsayıların' ne olduğu hakkında size daha fazla bilgi verecektir, ancak görünüşe göre kendinizi kendiniz keşfettiniz.)a2+b21?coef.mvr
chl

Yanıtlar:


17

uv Sizin durumunuzda, Y tek değişkenli olduğundan, cov (

maxcov(Xu,Yv).(1)
Y
cov(Xu,y)Var(Xu)1/2×cor(Xu,y)×Var(y)1/2,st.u=1.
Var(y)uVar(Xu)1/2×cor(Xu,y)X=[x_1;x_2]x1x2Var(x1)=Var(x2)=1Var(Xu)1u

Beni doğru yöne yönlendiren Arthur Tenenhaus'a teşekkür etmeliyim .

pls. regressionpls.pcruskeç de iyi bir tartışma sunar (s.26-29). Ayrıca, PLS rutinlerinin çoğunun (en azından R'de bildiğim) standart olmayan değişkenler sağladığınızı varsayması da önemlidir, çünkü merkezleme ve / veya ölçekleme dahili olarak ele alınır (örneğin, çapraz doğrulama yapılırken özellikle önemlidir) ).

uu=1u

u=XyXy.

Küçük bir simülasyon kullanarak, aşağıdaki gibi elde edilebilir:

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

Yukarıdaki sonuçları ( u=[0.5792043;0.8151824]özellikle) R paketlerinin vereceği sonuçlarla karşılaştırabilirsiniz . Örneğin, gelen NIPALS kullanarak kemometri paketi (başka uygulama ı mevcuttur biliyoruz mixOmics paketinde), biz yapılacağı:

library(chemometrics)
pls1_nipals(X, y, 1)$W  # X weights [0.5792043;0.8151824]
pls1_nipals(X, y, 1)$P  # X loadings

Benzer sonuçlar plsrve varsayılan çekirdek PLS algoritması ile elde edilir :

> library(pls)
> as.numeric(loading.weights(plsr(y ~ X, ncomp=1)))
[1] 0.5792043 0.8151824

u

Fonksiyonunuzu, aşağıdakileri okuyan bir optimizasyona getirecek şekilde değiştirmeniz şartıyla

f <- function(u) cov(y, X%*%(u/sqrt(crossprod(u))))

ve usonra normalleştirin ( u <- u/sqrt(crossprod(u))), yukarıdaki çözüme daha yakın olmalısınız.

Kenar notu

maxuXYv,
uXY
svd(crossprod(X, y))$u

Daha genel durumda (PLS2), yukarıdakileri özetlemenin bir yolu, birinci PLS kanonik vektörlerinin her iki yönde X ve Y kovaryans matrisinin en iyi yaklaşımı olduğunu söylemektir.

Referanslar

  1. Tenenhaus, M (1999). L'approche PLS . Revue de Statistique Aplikesi , 47 (2), 5-40.
  2. ter Braak, CJF ve de Jong, S (1993). Kısmi en küçük kareler regresyonunun objektif fonksiyonu . Journal of Chemometrics , 12, 41-54.
  3. Abdi, H (2010). Kısmi en küçük kareler regresyonu ve gizli yapı regresyonuna projeksiyon (PLS Regresyonu) . Wiley Disiplinlerarası İncelemeler: Hesaplamalı İstatistik , 2, 97-106.
  4. Boulesteix, AL ve Strimmer, K (2007). Kısmi en küçük kareler: yüksek boyutlu genomik verilerin analizi için çok yönlü bir araç . Biyoinformatikte Brifingler , 8 (1), 32-44.

Teşekkürler chl. Cevabınızı mümkün olduğunda okuyacağım (ve kesinlikle onay işaretine tıklayın ve onay işaretini tıklayın!)
Stéphane Laurent

Cevabınızı yeni okudum - tebrikler ve çok teşekkür ederim.
Stéphane Laurent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.