我们可以通过比较回归斜率来比较组间的相关性吗?

机器算法验证 回归 相关性 假设检验
2022-03-27 07:15:22

这个问题中,他们询问如何比较两个独立组(例如男性与女性)的 Pearson r。回复和评论建议两种方式:

  1. 使用费雪的著名公式,使用 r 的“z 变换”;
  2. 使用斜率比较(回归系数)。

后者可以通过饱和线性模型轻松执行: ,其中是相关变量,是表示两组的虚拟(0 对 1)变量。的大小(交互项系数)正好是两组单独进行模型 s) 显着性是对组间斜率差异的检验。Y=a+bX+cG+dXGXYGdbY=a+bXd

现在,斜率或回归系数。还不是相关系数。但是,如果我们标准化-分别在两组中 - 那么将等于第1 组中的差异 r 减去第 0 组中的 r ,因此其意义将是测试两个相关性之间的差异:我们正在测试斜率但是看来[好像-?]我们正在测试相关性。XYd

我写的对吗?

如果是,那么剩下的问题是对相关性的更好测试——这是描述的还是费舍尔的?因为它们会产生不同的结果。你怎么看?

稍后编辑:感谢@Wolfgang的回复,我仍然觉得我想不明白为什么Fisher 的测试比上述标准化方法下的斜率比较更正确。因此,欢迎更多答案。谢谢你。

1个回答

你写的一切都是正确的。你总是可以用一个玩具例子来测试类似的东西。以下是 R 的示例:

library(MASS)

rho <- .5  ### the true correlation in both groups

S1 <- matrix(c( 1,   rho,   rho, 1), nrow=2)
S2 <- matrix(c(16, 4*rho, 4*rho, 1), nrow=2)

cov2cor(S1)
cov2cor(S2)

xy1 <- mvrnorm(1000, mu=c(0,0), Sigma=S1)
xy2 <- mvrnorm(1000, mu=c(0,0), Sigma=S2)

x <- c(xy1[,1], xy2[,1])
y <- c(xy1[,2], xy2[,2])
group <- c(rep(0, 1000), rep(1, 1000))

summary(lm(y ~ x + group + x:group))

您会发现交互作用非常显着,即使两组的真实相关性相同。为什么会这样?因为两组中的原始回归系数不仅反映了相关性的强度,还反映了两组中X(和Y)的缩放比例。由于这些比例不同,相互作用是显着的。这一点很重要,因为通常认为要测试相关性的差异,您只需要测试上面模型中的交互作用即可。让我们继续:

summary(lm(xy2[,2] ~ xy2[,1]))$coef[2] - summary(lm(xy1[,2] ~ xy1[,1]))$coef[2]

这将向您表明,在两组中分别拟合的模型的回归系数差异将为您提供与交互项完全相同的值。

我们真正感兴趣的是相关性的差异:

cor(xy1)[1,2]
cor(xy2)[1,2]
cor(xy2)[1,2] - cor(xy1)[1,2]

你会发现这个差异基本上为零。让我们在两组中标准化 X 和 Y并重新拟合完整模型:

x <- c(scale(xy1[,1]), scale(xy2[,1]))
y <- c(scale(xy1[,2]), scale(xy2[,2]))
summary(lm(y ~ x + x:group - 1))

请注意,我在这里不包括截距或组主效应,因为根据定义它们为零。您会发现 x 的系数等于组 1 的相关系数,而交互作用的系数等于两组相关系数的差。

现在,对于您的问题,使用这种方法是否比使用利用 Fisher r-to-z 转换的测试更好。

编辑

当您对组内的 X 和 Y 值进行标准化时计算的回归系数的标准误差不考虑这种标准化。因此,它们是不正确的。因此,交互作用的 t 检验不能充分控制 I 类错误率。我进行了一项模拟研究来检验这一点。时,类型 I 错误得到控制。然而,当,它不会经常拒绝ρ1=ρ2=0ρ1=ρ20α价值)。另一方面,使用 Fisher r-to-z 变换的测试确实执行得很好,无论两组中的真实相关性大小(除非组大小变得非常小并且两组中的真实相关性非常接近±1

结论:如果您想测试相关性的差异,请使用 Fisher 的 r-to-z 转换并测试这些值之间的差异。