在进行任何算法之前,我都被教过要检查相关矩阵。我也有几个问题要问:
pandas.corr()
检查所有变量之间的相关性。发布于 2019-08-07 06:22:58
我会逐一回答你的问题:
如果我们必须检查连续变量和范畴变量之间的相关性,该怎么办?
一种选择是使用点双线相关。您可以阅读更多的这里。当然,这不是唯一的选择,您可以找到一系列很好的示例这里。
删除变量是唯一的解决方案?
不,不是,你可以使用降维技术来“总结”多线性变量。这就是我通常为控制多重共线性所做的事情,我非常喜欢这样做,而不是任意地删除一个变量。最常见的技术是主成分分析,但是列表确实是无穷无尽的。如果您对神经网络感兴趣,可以使用自动编码器。
多重共线性与相关性有何不同?
相关性度量两个变量之间的关联。这种联想可以是非常嘈杂的,也可以不是很吵的。两个变量可以高度相关,但它们的散点图可以很“分散”。
相反,多重共线性是一个更强的概念。当两个变量线性相关时,可以用一个变量的变化来详细解释另一个变量的变化。这是回归的一个问题,因为变量中的一个小变化可能会完全破坏参数的估计。这并不是所有相关变量都会发生的。
当然,两者之间有某种联系。根据定义,两个高度多元线性的变量也必须高度相关,但它们并不相同。最重要的是,多重共线性对模型的可靠性是个问题,而相关性则不是问题。
发布于 2019-08-07 09:42:09
Leevo给出了很好的答案,让我指出一件事:完美的多重共线性意味着一个变量是另一个变量的线性组合。假设你有x_1和x_2,x_2 = \gamma x_1。正如这个职位中所讨论的那样,这会导致各种问题。
主要的方法(简单地说)是,x_1和x_2基本上携带相同的信息(在x_1情况下,\gamma只是“缩放”)。因此,将两者兼而有之是没有好处的。事实上,包含这两者都有一个问题,因为多重共线性会“混淆”模型,因为如果联合考虑,x_1, x_2对某些结果y没有独特的影响。
查看以下情况(R代码):
y = c(5,2,9,10)
x1 = c(2,4,6,8) ### = 2 * x2
x2 = c(1,2,3,4) ### = 0.5 * x1
cor(x1, x2, method = c("pearson"))
x_1和x_2之间的相关性等于1(当然是线性组合)。现在,当我尝试进行一个简单的线性OLS回归时:
lm(y~x1+x2)
结果是:
Coefficients:
(Intercept) x1 x2
1.0 1.1 NA
第二项已被R
(由于完美的多重共线性)删除。
我们可以对每个术语分别进行一次回归:
Call:
lm(formula = y ~ x1)
Coefficients:
(Intercept) x1
1.0 1.1
...and...
Call:
lm(formula = y ~ x2)
Coefficients:
(Intercept) x2
1.0 2.2
现在您可以看到,\beta_2的系数只是2\beta_1,因为x_1是2 x_2。所以没有什么可以从中学到的,x_1, x_2,因为没有更多的信息。
如果x_1,x_2之间的相关性真的很高,那么基本上也会出现同样的问题。请参阅这个职位中的更多讨论。因此,考虑到相关性很强,人们应该谨慎地将这两个变量都包括在内。原因是在这种情况下,您的模型无法真正区分x_1和x_2对某些结果y的影响,因此您最终可能会得到微弱的预测(以及其他问题)。
发布于 2020-07-07 09:31:47
Pearson相关仅适用于数值变量。
答:不
如果我们必须检查连续变量和范畴变量之间的相关性,该怎么办?皮尔逊r系数
我读到了一些答案,彼得·弗洛姆提到,在某些情况下,相关性并不显著,但两个变量可以是多个共线的?
答:彼得是对的。
删除变量是唯一的解决方案?
不是的。这取决于你的问题和具体目标。
https://datascience.stackexchange.com/questions/57105
复制相似问题