你写的一切都是正确的。你总是可以用一个玩具例子来测试类似的东西。以下是 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=ρ2≠0α价值)。另一方面,使用 Fisher r-to-z 变换的测试确实执行得很好,无论两组中的真实相关性大小(除非组大小变得非常小并且两组中的真实相关性非常接近。±1
结论:如果您想测试相关性的差异,请使用 Fisher 的 r-to-z 转换并测试这些值之间的差异。