为什么不在每个线性回归设置中使用 PCA 来避免多重共线性?

机器算法验证 回归 主成分分析 多重共线性
2022-03-13 15:08:34

我意识到这个问题的愚蠢,但请听我说完。

想象一个线性回归(例如 OLS)设置,我们对所有自变量执行 PCA,并使用所有得到的主成分(因此,主成分的数量 = 自变量的数量)作为自变量。乍一看,这似乎可以纠正任何多重共线性问题,无论多么严重(因为所有主成分都是正交的)。此外,我们在解释结果系数时不会有任何问题,因为它们可以通过简单地与主成分相乘而投影回原始系数空间而没有身份损失(因为我们使用的主成分数=自变量数)。所以,双赢。

显然,这种方法有问题。我只是无法理解一个框架来正确分析这种情况。任何帮助表示赞赏。

编辑:

将问题放在一个角度,假设您的任务是构建一个 OLS 模型。有两个高度共线性的自变量。通常,您要么将其中一个排除在外,要么对它们执行 PCA 并使用第一个主成分作为预测变量。但是,负责构建模型的人对估计这两个变量的系数感兴趣,因此上述选项不可用。此外,此人希望模型满足某些形式标准,其中之一是 VIF 低于某个阈值,如果您按原样包含两个高度共线的自变量,这是不可能的。因此,剩下的唯一选择是对这两个变量使用 PCA 并使用得到的两个主成分作为预测变量,这允许我们在原始系数空间中获得它们的系数(通过将主成分和主成分本身的系数相乘)并通过 VIF 阈值。负责构建模型的人对这种方法非常满意,但我不禁觉得有些不对劲。我们是否只是在这里掩盖了多重共线性问题来欺骗 VIF 度量?

1个回答

这可能是评论而不是答案,我不确定我是否正确。让我们尝试比较一个线性模型在 PCA 之前和之后在两个几乎共线的变量上的输出:

set.seed(1234)
x1 <- 1:10
x2 <- x1 + rnorm(n= length(x1), sd= 0.0001) # x2 is nearly colinear to x1

y <- rowMeans(cbind(x1, x2)) + rnorm(n= length(x1)) # A response variable

原始数据的线性回归:

summary(lm(y ~ x1 + x2))
...    
Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept)    -0.9351     0.7503  -1.246    0.253
x1           1428.6673  3681.8475   0.388    0.710
x2          -1427.5288  3681.8604  -0.388    0.710

Residual standard error: 1.094 on 7 degrees of freedom
Multiple R-squared:  0.9281,    Adjusted R-squared:  0.9076 
F-statistic: 45.18 on 2 and 7 DF,  p-value: 9.963e-05

现在关于主要组件:

pca <- prcomp(cbind(x1, x2))

pca_lm <- lm(y ~ pca$x[,1] + pca$x[,2])
summary(pca_lm)
...
Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 5.382e+00  3.458e-01  15.562 1.09e-06 ***
pca$x[, 1]  8.086e-01  8.514e-02   9.498 3.00e-05 ***
pca$x[, 2]  2.020e+03  5.207e+03   0.388     0.71    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.094 on 7 degrees of freedom
Multiple R-squared:  0.9281,    Adjusted R-squared:  0.9076 
F-statistic: 45.18 on 2 and 7 DF,  p-value: 9.963e-05

查看调整后的 R 平方,这两个模型的质量是相同的 - 正如预期的那样。

将具有主成分的模型中的系数投影到原始比例(我这样做对吗?)

(pca_lm$coefficients[1] + pca_lm$coefficients[2:3]) %*% pca$rotation
          PC1       PC2
[1,] 1436.278 -1427.529

这些类似于原始变量模型中的系数。因此,总而言之,通过主成分没有优势。