php*_*ash 7 r linear-regression pca
假设我有一个数据矩阵d
pc = prcomp(d)
# pc1 and pc2 are the principal components
pc1 = pc$rotation[,1]
pc2 = pc$rotation[,2]
Run Code Online (Sandbox Code Playgroud)
那么这应该适合线性回归模型吗?
r = lm(y ~ pc1+pc2)
Run Code Online (Sandbox Code Playgroud)
但后来我得到了这个错误:
Errormodel.frame.default(formula = y ~ pc1+pc2, drop.unused.levels = TRUE) :
unequal dimensions('pc1')
Run Code Online (Sandbox Code Playgroud)
我想那里有一个自动执行此操作的软件包,但这也应该有用吗?
Ben*_*ker 17
答:你不想要pc $旋转,它是旋转矩阵,而不是旋转值矩阵(分数).
补充一些数据:
x1 = runif(100)
x2 = runif(100)
y = rnorm(2+3*x1+4*x2)
d = cbind(x1,x2)
pc = prcomp(d)
dim(pc$rotation)
## [1] 2 2
Run Code Online (Sandbox Code Playgroud)
哎呀."x"组件就是我们想要的.来自?prcomp:
x:如果'retx'为真,则返回旋转数据的值(居中(和缩放,如果请求)数据乘以'旋转'矩阵).
dim(pc$x)
## [1] 100 2
lm(y~pc$x[,1]+pc$x[,2])
##
## Call:
## lm(formula = y ~ pc$x[, 1] + pc$x[, 2])
## Coefficients:
## (Intercept) pc$x[, 1] pc$x[, 2]
## 0.04942 0.14272 -0.13557
Run Code Online (Sandbox Code Playgroud)