Hồi quy bình phương tối thiểu một phần trong R: tại sao PLS trên dữ liệu được tiêu chuẩn hóa không tương đương với tối đa hóa tương quan?


12

Tôi rất mới trong bình phương tối thiểu một phần (PLS) và tôi cố gắng hiểu đầu ra của hàm R plsr()trong plsgói. Hãy để chúng tôi mô phỏng dữ liệu và chạy PLS:

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)

Tôi đã mong đợi rằng các số sau ab

> ( 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

được tính toán để tối đa hóa

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

nhưng đây không phải là trường hợp chính xác:

> 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

Đây có phải là một lỗi số hay tôi hiểu sai bản chất của ab ?

Tôi cũng muốn biết các hệ số này là gì:

> p$coef
, , 1 comps

           yy
xx1 0.6672848
xx2 0.6368604 

EDIT : Bây giờ tôi thấy những gì p$coeflà:

> 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 

Vì vậy, tôi nghĩ rằng tôi đúng về bản chất của b .ab

EDIT: Theo quan điểm của các bình luận được đưa ra bởi @chl Tôi cảm thấy câu hỏi của tôi không đủ rõ ràng, vì vậy hãy để tôi cung cấp thêm chi tiết. Trong ví dụ của tôi có một vectơ phản hồi và ma trận hai cột X của các yếu tố dự đoán và tôi sử dụng phiên bản chuẩn hóa ˜ Y của Y và phiên bản chuẩn hóa ˜ X của X (tập trung và chia cho độ lệch chuẩn). Định nghĩa của PLS đầu tiên thành phần t 1t 1 = một ~ X 1 + b ~ X 2 với mộtbYXY~YX~Xt1t1=aX~1+bX~2ablựa chọn để có một giá trị tối đa của sản phẩm bên trong . Do đó, nó tương đương với việc tối đa hóa mối tương quan giữa t 1Y , phải không?t1,Y~t1Y


2
Hồi quy PLS tối đa hóa điểm yếu tố (được tính là sản phẩm của dữ liệu thô với hiệp phương sai tải (s)) , không tương quan (như được thực hiện trong Phân tích tương quan Canonical). Có một tổng quan tốt về plsgói và hồi quy PLS trong bài báo JSS này .
chl

1
Vì tất cả các vectơ là trung tâm và chuẩn hóa, hiệp phương sai là tương quan, phải không? Xin lỗi nhưng giấy JSS là quá nhiều kỹ thuật cho người mới bắt đầu.
Stéphane Laurent

Nói chung, có một quá trình giảm phát không đối xứng (kết quả từ hồi quy kết hợp tuyến tính của một khối thành kết hợp tuyến tính của khối kia) làm phức tạp mọi thứ một chút. Tôi đã cung cấp một số hình ảnh sơ đồ trong phản ứng này . Hervé Abdi đã đưa ra một số tổng quan chung về hồi quy PLS và Phương pháp khảo sát bình phương từng phần (PLS) của Wegelin cũng khá hữu ích. Tại thời điểm này, tôi có lẽ nên chuyển đổi tất cả những nhận xét đó thành một câu trả lời ...
chl

Trong ví dụ của tôi có một vectơ phản hồi và ma trận hai cột X của các yếu tố dự đoán và tôi sử dụng phiên bản chuẩn hóa ˜ Y của Y và phiên bản chuẩn hóa ˜ X của X (tập trung và chia cho độ lệch chuẩn). Định nghĩa của tôi về PLS đầu tiên thành phần t 1t 1 = một ~ X 1 + b ~ X 2 với mộtb lựa chọn để có một giá trị tối đa của sản phẩm vô hướng t 1 ,YXY~YX~Xt1t1=aX~1+bX~2ab. Đó không phải là định nghĩa tốt sao? t1,Y~
Stéphane Laurent

Xin lỗi, @ Stéphane, vì các nhận xét của tôi ở trên không tính đến thực tế là bạn chỉ yêu cầu một thành phần (vì vậy giảm phát không đóng vai trò quan trọng ở đây). Tuy nhiên, có vẻ như chức năng tối ưu hóa của bạn không áp đặt các vector trọng lượng đơn vị tiêu chuẩn, như vậy mà cuối cùng. (btw, sẽ cung cấp cho bạn thêm thông tin về các 'hệ số' đó là gì, nhưng bạn đã phát hiện ra rằng chính mình rõ ràng.)a2+b21?coef.mvr
chl

Câu trả lời:


17

uv

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

Tôi nên cảm ơn Arthur Tenenhaus , người đã chỉ cho tôi đi đúng hướng.

Sử dụng vectơ trọng lượng đơn vị là không hạn chế và một số gói ( pls. regressiontrong xingenomicspls.pcruhọa tiết cung cấp một cuộc thảo luận tốt quá (trang 26-29). Điều đặc biệt quan trọng cũng là thực tế là hầu hết các thói quen PLS (ít nhất là thói quen tôi biết trong R) cho rằng bạn cung cấp các biến không đạt tiêu chuẩn vì việc định tâm và / hoặc chia tỷ lệ được xử lý bên trong (ví dụ, điều này đặc biệt quan trọng khi thực hiện xác thực chéo ).

uu=1u

u=XyXy.

Sử dụng một mô phỏng nhỏ, nó có thể thu được như sau:

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

Bạn có thể so sánh các kết quả trên ( u=[0.5792043;0.8151824]cụ thể) với các gói R sẽ cung cấp. Ví dụ: sử dụng NIPALS từ hóa học gói (một triển khai khác mà tôi biết có sẵn trong gói mixOmics ), chúng tôi sẽ có được:

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

Kết quả tương tự sẽ đạt được với plsr thuật toán PLS kernel mặc định của nó:

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

Trong mọi trường hợp, chúng tôi có thể kiểm tra xem u

Miễn là bạn thay đổi chức năng của mình để tối ưu hóa thành chức năng đọc

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

và bình thường hóa u sau đó ( u <- u/sqrt(crossprod(u))), bạn nên gần gũi hơn với giải pháp trên.

maxuXYv,
uXY tương ứng với giá trị riêng lớn nhất:
svd(crossprod(X, y))$u

Trong trường hợp tổng quát hơn (PLS2), một cách để tóm tắt ở trên là để nói rằng các vectơ chính tắc PLS đầu tiên là xấp xỉ tốt nhất của ma trận hiệp phương sai của X và Y theo cả hai hướng.

Người giới thiệu

  1. Tenenhaus, M (1999). L'approche PLS .Revue de Statistique Appliquée , 47 (2), 5-40.
  2. ter Braak, CJF và de Jong, S (1993). Hàm mục tiêu của hồi quy bình phương nhỏ nhất một phần .Tạp chí Hóa học , 12, 41 Hàng54 .
  3. Abdi, H (2010). Hồi quy bình phương nhỏ nhất một phần và phép chiếu trên hồi quy cấu trúc tiềm ẩn (Hồi quy PLS) . Đánh giá liên ngành của Wiley: Thống kê tính toán , 2, 97-106.
  4. Boulesteix, AL và Strimmer, K (2007). Bình phương tối thiểu một phần: một công cụ linh hoạt để phân tích dữ liệu genom chiều cao . Tóm tắt về Tin sinh học , 8 (1), 32-44.

Cảm ơn chl. Tôi sẽ đọc câu trả lời của bạn bất cứ khi nào có thể (và chắc chắn upvote và nhấp vào dấu kiểm!)
Stéphane Laurent

Tôi vừa đọc câu trả lời của bạn - xin chúc mừng và cảm ơn bạn rất nhiều.
Stéphane Laurent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.