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 pls
gó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 và
> ( 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 và ?
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$coef
là:
> 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 và b .
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 1 là t 1 = một ~ X 1 + b ~ X 2 với một và blự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 1 và Y , phải không?
?coef.mvr
pls
gói và hồi quy PLS trong bài báo JSS này .