如何在 R 中的数据中找到依赖项? (A + B + C -> D)

How can I find dependancies in my data in R? (A + B + C -> D)

我想通过整理因变量来减少我的数据。例如。 A + B + C -> D 这样我就可以在不丢失任何信息的情况下省略 D。

d <- data.frame(A = c( 1, 2, 3, 4, 5),
                B = c( 2, 4, 6, 4, 2), 
                C = c( 3, 4, 2, 1, 0),
                D = c( 6, 10, 11, 9, 9))

D的最后一个值是错误的,那是因为数据可能不准确。

如何识别这些与 R 的依赖关系以及如何影响相关性的准确性? (例如,使用 80% 或 90% 的截止值)

示例findCorrelation 仅考虑成对相关。是否有多重相关函数?

你可以得到一个'correlation',如果你适合一个lm

summary(lm(D ~ A + B + C, data =d))

但我不确定你到底要什么。我的意思是,有了这个你可以得到 R^2,我猜这就是你要找的东西?

问题是关于如何检测较大数据集中的依赖性。 一方面,这可以通过手动检查每一种可能性来实现,例如在其他答案中提出的 summary(lm(D ~ A + B + C, data =d)) 。但这意味着大量的手动工作。

我看到了一些可能性。对于一种过滤方法,例如 RReliefFSpearman Correlation。他们看相关性和 测量数据集中的距离。

可能性二是使用 Feature Extraction 方法,如 PCALDAICA 都试图找到独立的组件(意味着消除任何相关性...)

虽然相关矩阵很有用而且完全合法,但我发现特别有用的一种方法是查看方差 inflation 因子。维基百科的 article 描述 VIF 非常好。

我喜欢使用 VIF 的几个原因:

  1. 不是查看相关矩阵的行或列,而是尝试判断哪些变量比其他变量更共线与其他协变量相乘而不是单独相乘,您会得到一个描述给定预测变量的一个方面的数字与模型中所有其他人的关系。
  2. 在大多数情况下,以逐步方式使用 VIF 很容易消除预测变量中的共线性 space。
  3. 获取方法很简单,可以使用car包中的vif()函数,也可以自己写函数计算。

VIF 本质上是通过针对您依次包含的每个预测变量对模型中的所有 covariates/predictors 进行回归来工作的。它获取 R^2 值并取比率:1/(1-R^2)。这给你一个数字 vif >= 1。如果您将 R^2 视为您选择的协变量模型解释的响应 space 的变化量,那么如果您的协变量之一获得高 R^2,比如说 0.80,那么你的vif就是5

您选择舒适的门槛。维基百科文章建议 vif of 10 表示预测器应该去。我被告知 5 是一个很好的门槛。通常,我发现很容易将所有预测变量的 vif 降低到小于 2,而不会对我的最终模型产生重大影响 adjusted-R^2.

我觉得即使是 5vif,这意味着预测变量可以由其伴生预测变量建模,R^20.80 意味着预测变量边际信息贡献很低,不值得。我尝试采取一种策略,将给定模型的所有 vifs 最小化,而不会对我的主要模型产生巨大影响(例如 > 0.1 减少 R^2)。这种影响让我觉得即使 vif 比我想要的要高,预测变量仍然包含很多信息。

还有其他方法。您也可以研究 Lawson's paper 别名矩阵引导的变量选择方法 - 我觉得它特别聪明,尽管比我上面讨论的更难实现。

您想在数据中找到相关性,将 findCorrelation 与您想要询问的内容进行对比 'is there a function for multiple correlations'。要回答这个问题,我们需要阐明适合您的技术...

你想要偏相关吗:

Partial correlation is the correlation of two variables while controlling for a third or more other variables

还是半偏相关?

Semi-partial correlation is the correlation of two variables with variation from a third or more other variables removed only from the second variable.

来自 {ppcor}. Decent YouTube video 的定义,尽管说话者可能与回归细节有一些关系confused/confusing。

Fer Arce 的建议……差不多是对的。回归与这些方法非常相关,但是当预测变量相关(称为多重共线性)时,它可能会导致 issues(请参阅 gung 的回答)。您可以通过 PCA 强制您的预测变量正交(不相关),但这样您就很难解释系数。

实施:

library(ppcor)
d <- data.frame(A = c( 1, 2, 3, 4, 5),
                B = c( 2, 4, 6, 4, 2), 
                C = c( 3, 4, 2, 1, 0),
                D = c( 6, 10, 11, 9, 9))
# partial correlations
pcor(d, method = "pearson")
# semi-partial correlations
spcor(d, method = "pearson")