首页 > 解决方案 > 主成分回归?什么是因变量?

问题描述

我正在执行一个PCA尝试清除高度相关的变量实系数。我有一个非常大的数据集,但会尝试在这里简化。我有公式:

lm(y~x1+x2+x3...x55) -> reg_linear_model

我遇到的问题x1:x4是所有这些都非常相关,因此其中一些是负面的。当我尝试执行时,我会得到组件列表及其值。我想测试要使用哪些组件,但依赖 Y 是按周分解的三年数据,所以它是y1, y2, y3, y4, ....y156. 156 weeks。我遇到的问题是我无法将组件回归到 y 因为长度不同。我是否需要以某种方式转换 Y 以使其适合作为组件的行数?很难找到答案。许多 PCR 解释只是说将组件回归到 y 但 Y 不在中。

感谢您对此的任何帮助!

标签: rregressionpca

解决方案


通常你这样做,我们可以使用 iris 数据集,让我们将 Sepal.Length 设置为依赖变量,其他独立变量。

首先,依赖的 Petal.Width 和 Petal.Length 之间存在相关性:

cor(iris[,2:4])
             Sepal.Width Petal.Length Petal.Width
Sepal.Width    1.0000000   -0.4284401  -0.3661259
Petal.Length  -0.4284401    1.0000000   0.9628654
Petal.Width   -0.3661259    0.9628654   1.0000000

就像你说的,如果我们进行回归,我们会看到其中一个变为负数:

summary(lm(Sepal.Length ~ .,data=iris[,1:4]))

Call:
lm(formula = Sepal.Length ~ ., data = iris[, 1:4])

Residuals:
     Min       1Q   Median       3Q      Max 
-0.82816 -0.21989  0.01875  0.19709  0.84570 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.85600    0.25078   7.401 9.85e-12 ***
Sepal.Width   0.65084    0.06665   9.765  < 2e-16 ***
Petal.Length  0.70913    0.05672  12.502  < 2e-16 ***
Petal.Width  -0.55648    0.12755  -4.363 2.41e-05 ***

我们做一个主成分分析,并得到主成分,它位于$x

pca=prcomp(iris[,2:4])
cor(iris[,"Sepal.Length"],pca$x)
           PC1       PC2       PC3
[1,] 0.8619141 -0.279587 0.1937703

data = data.frame(
Sepal.Length=iris[,"Sepal.Length"],
pca$x)

summary(lm(Sepal.Length ~ .,data=data))

Call:
lm(formula = Sepal.Length ~ ., data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.82816 -0.21989  0.01875  0.19709  0.84570 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5.84333    0.02568 227.519  < 2e-16 ***
PC1          0.37123    0.01340  27.697  < 2e-16 ***
PC2         -0.58457    0.06506  -8.984 1.22e-15 ***
PC3          0.86983    0.13969   6.227 4.80e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

PC 组件不相关,您可以将它们用于回归。如果你有很多变量,你也可以像上面一样通过与目标变量的相关性来选择。


推荐阅读