首页 文章

在对主成分的不同组合进行回归时,回归系数不会改变

提问于
浏览
1

我运行了一个包含9个变量的PCA,然后想要使用前3个主要组件运行所有可能的线性模型 . 然而,当我运行8个不同的线性模型时,截距和系数估计完全相同,而不管我在模型中使用的因变量 .

我已经更新了R和R Studio,但仍然得到了相同的结果 . 如果有人之前已经处理过这个问题或有任何建议,我真的很感激帮助 . 谢谢!

我用来获取主成分值和线性模型的代码如下 .

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)

所有模型都具有截距和PC1的回归系数 . 为什么?

1 回答

  • 2

    主成分彼此正交,即它们之间没有线性相关 .

    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
    

    此外,它们与截距正交:

    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 ,系数将是不变的 .

相关问题