【问题标题】:Regression coefficients do not change when regressing on different combinations of principal components当对不同的主成分组合进行回归时,回归系数不会改变
【发布时间】:2018-12-15 06:11:43
【问题描述】:

我运行了一个包含 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 的回归系数。为什么?

【问题讨论】:

    标签: r regression linear-regression pca


    【解决方案1】:

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

    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,则系数将保持不变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2014-12-17
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多