首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当回归主成分的不同组合时,回归系数不会改变

当回归主成分的不同组合时,回归系数不会改变
EN

Stack Overflow用户
提问于 2018-07-06 23:36:59
回答 1查看 127关注 0票数 1

我使用9个变量运行PCA,然后使用前3个主成分运行所有可能的线性模型。然而,当我运行8个不同的线性模型时,无论我在模型中使用什么因变量,截距和系数估计都是完全相同的。

我已经更新了R和R Studio,但仍然得到相同的结果。如果有人以前处理过这个问题或有任何建议,我将非常感谢您的帮助。谢谢!

下面是我用来获取主分量值和线性模型的代码。

代码语言:javascript
复制
MOOPCA <- prcomp (MOOSE [, -1], cor = TRUE, scale = TRUE)
PCApredict <- predict(MOOPCA)
PC1 <- PCApredict[, 1]
PC2 <- PCApredict[, 2]
PC3 <- PCApredict[, 3]

Full <- lm(Density ~ PC1 + PC2 + PC3)
summary(Full)

MOO1 <- lm(Density ~ PC1)
summary(MOO1)

MOO2 <- lm(Density ~ PC1 + PC2)
summary(MOO2)

所有模型都有intercept和PC1的回归系数。为什么?

EN

回答 1

Stack Overflow用户

发布于 2018-07-06 23:50:08

主成分是相互正交的,即它们之间没有线性相关性。

代码语言:javascript
复制
set.seed(0)
X <- matrix(runif(50), 10, 5)
pca <- prcomp(X, scale = TRUE)  ## no "cor" argument to `prcomp`
XO <- pca$x  ## or `XO <- predict(pca)`
round(crossprod(XO), 6)
#         PC1      PC2      PC3      PC4      PC5
#PC1 18.35253  0.00000 0.000000 0.000000 0.000000
#PC2  0.00000 11.24924 0.000000 0.000000 0.000000
#PC3  0.00000  0.00000 7.893672 0.000000 0.000000
#PC4  0.00000  0.00000 0.000000 4.180975 0.000000
#PC5  0.00000  0.00000 0.000000 0.000000 3.323583

此外,它们与截取是正交的:

代码语言:javascript
复制
round(crossprod(cbind(1, XO)), 6)
#            PC1      PC2      PC3      PC4      PC5
#    10  0.00000  0.00000 0.000000 0.000000 0.000000
#PC1  0 18.35253  0.00000 0.000000 0.000000 0.000000
#PC2  0  0.00000 11.24924 0.000000 0.000000 0.000000
#PC3  0  0.00000  0.00000 7.893672 0.000000 0.000000
#PC4  0  0.00000  0.00000 0.000000 4.180975 0.000000
#PC5  0  0.00000  0.00000 0.000000 0.000000 3.323583

因此,如果你拟合一个线性回归模型~ 1 + X0,系数将是不变的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51213705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档