使用相关矩阵选择回归的预测变量是否正确?


17

几天前,我的一位心理学家和研究员向我介绍了他为线性回归模型选择变量的方法。我猜这不好,但是我需要请其他人确保。方法是:

查看所有变量(包括因变量Y)之间的相关矩阵,并选择与Y最相关的那些预测变量Xs。

他没有提到任何标准。 问:他说的对吗?

[我认为这种选择方法是错误的,因为有很多事情,比如说应该选择哪个预测变量,甚至是省略变量偏差(OVB)的理论。]


我建议将标题更改为“是否正在使用相关矩阵来选择回归正确的预测变量?” 或类似的东西可以提供更多信息。一个简单的反例是一个变量,该变量与因变量的相关性为1-您可能不希望在模型中使用此变量。
蒂姆

3
该方法有一些逻辑,但只有在您只能选择一个回归变量的情况下,该方法才有效。如果可以选择几个,则此方法会中断。这是因为仅与Y弱相关的几个X的线性组合与与Y强相关的几个X的线性组合可能与Y具有更大的相关性。回想一下多元回归是关于线性组合的,而不仅仅是单个效果...
理查德·哈迪

1
相关 只是标准化回归斜率 β 1=ÇÖvXÿ
ρX,Y=Cov(X,Y)σXσY
为简单回归与一个独立变量。因此,这种方法只允许您找到斜率参数值最大的自变量,但是使用多个自变量会变得更加复杂。
β^1=Cov(X,Y)σX
蒂姆

2
这些答复证实了我对这种“方法”的想法,但是许多心理学家使用了这种变量选择方法:(
Lil'Lobster

这听起来像“ Leekasso”
steveo'america

Answers:


17

如果由于某种原因,您将仅在模型中包含一个变量,那么选择与相关性最高的预测变量具有多个优点。在只有一个预测变量的可能回归模型中,该模型是标准化回归系数最高的模型,并且(因为R 2简单线性回归r的平方)也是确定的最高系数yR2r

但是尚不清楚,如果您有多个可用的数据,为什么要将回归模型限制为一个预测变量。如评论中所述,如果模型可能包含多个变量,则仅查看相关性是行不通的。例如,从该散点矩阵中,您可能会认为应该在模型中包括的的预测变量为x 1(相关系数0.824)和x 2(相关系数0.782),但是x 3(相关系数0.134)不是有用的预测变量。yx1x2x3

相关变量的散点图矩阵

但是您会错的-实际上,在此示例中,取决于两个独立变量x 1x 3,而不直接取决于x 2。但是x 2x 1高度相关yx1x3x2x2x1,这也导致与相关。单独查看yx 2之间的相关性,这可能表明x 2y的良好预测指标。但是一旦x 1的影响通过包含x 1部分化了yyx2x2yx1x1 在模型中,没有这样的关系。

require(MASS) #for mvrnorm 
set.seed(42) #so reproduces same result

Sigma <- matrix(c(1,0.95,0,0.95,1,0,0,0,1),3,3)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3])
# y depends on x1 strongly and x3 weakly, but not directly on x2
data.df$y <- with(data.df, 5 + 3*x1 + 0.5*x3) + rnorm(N, sd=2)

round(cor(data.df), 3)
#       x1    x2    x3     y
# x1 1.000 0.950 0.000 0.824
# x2 0.950 1.000 0.000 0.782
# x3 0.000 0.000 1.000 0.134
# y  0.824 0.782 0.134 1.000
# Note: x1 and x2 are highly correlated
# Since y is highly correlated with x1, it is with x2 too
# y depended only weakly on x3, their correlation is much lower

pairs(~y+x1+x2+x3,data=data.df, main="Scatterplot matrix")
# produces scatter plot above

model.lm <- lm(data=data.df, y ~ x1 + x2 + x3)
summary(model.lm)

# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  4.99599    0.02018 247.631   <2e-16 ***
# x1           3.03724    0.06462  47.005   <2e-16 ***
# x2          -0.02436    0.06462  -0.377    0.706    
# x3           0.49185    0.02018  24.378   <2e-16 ***

该样本大小足够大,可以克服x系数估计中的多重共线性问题x1x2x2x1x3x3

这是一个更糟的例子:

Sigma <- matrix(c(1,0,0,0.5,0,1,0,0.5,0,0,1,0.5,0.5,0.5,0.5,1),4,4)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4])
# y depends on x1, x2 and x3 but not directly on x4
data.df$y <- with(data.df, 5 + x1 + x2 + x3) + rnorm(N, sd=2)

round(cor(data.df), 3)
#       x1    x2    x3    x4     y
# x1 1.000 0.000 0.000 0.500 0.387
# x2 0.000 1.000 0.000 0.500 0.391
# x3 0.000 0.000 1.000 0.500 0.378
# x4 0.500 0.500 0.500 1.000 0.583
# y  0.387 0.391 0.378 0.583 1.000

pairs(~y+x1+x2+x3+x4,data=data.df, main="Scatterplot matrix")

model.lm <- lm(data=data.df, y ~ x1 + x2 + x3 +x4)
summary(model.lm)
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  4.98117    0.01979 251.682   <2e-16 ***
# x1           0.99874    0.02799  35.681   <2e-16 ***
# x2           1.00812    0.02799  36.016   <2e-16 ***
# x3           0.97302    0.02799  34.762   <2e-16 ***
# x4           0.06002    0.03958   1.516    0.129

此处取决于(不相关的)预测变量x 1x 2x 3-实际上,真正的回归斜率每个都是1。它不依赖于第四个变量xyx1x2x3x4x1x2x3x4yy 实际上可以找到根本不属于模型的变量。


但是...这一切是否都适用于这种情况,当这位“资深心理学家”选择了10个变量Xs中的4个,这些变量与Y高度相关(相关系数<0.7),而剩下六个与中度相关或不相关的Xs Y呢?
Lil'Lobster

1
y

0

您可以进行逐步回归分析,然后让软件根据F值选择变量。您还可以在每次运行回归时查看“调整后的R ^ 2”值,以查看是否添加了对模型有贡献的新变量。如果仅通过相关矩阵并选择具有强相关性的变量,则您的模型可能会存在多重共线性问题。希望这可以帮助!


6
逐步选择会导致与OP中描述的方法相同的问题:stata.com/support/faqs/statistics/stepwise-regression-problems也注意到问题在于此特定方法,而不是寻找替代方法。
蒂姆

2
这是模型选择的非常基本的方法-如果您的目标是严格解释方差,则使用R2逐步进行比较合适,但是如果您对推理,预测,假设检验等感兴趣,那么您需要思考超出R2的方式(甚至可以忽略R2)。
robin.datadrivers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.