您编写的所有内容都是正确的。您总是可以通过一个玩具示例来测试类似的事情。这是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))
请注意,由于定义,它们为零,因此此处未包括intercept或group main效果。您会发现x的系数等于组1的相关性,而交互作用的系数等于两组的相关性之差。
现在,对于您的问题,使用这种方法是否比使用利用Fisher的r到z转换的测试更好?
编辑
当您标准化组中的X和Y值时计算出的回归系数的标准误差不考虑这种标准化。因此,它们是不正确的。因此,交互作用的t检验不能充分控制I型错误率。我进行了模拟研究来检验这一点。什么时候ρ1个=ρ2= 0,则可以控制Type I错误。但是,当ρ1个=ρ2≠ 0,则t检验的I型错误往往过于保守(即,对于给定条件,它拒绝得不够频繁) α值)。另一方面,利用费舍尔从r到z变换的测试确实可以充分发挥作用,而与两组中真实相关性的大小无关(除非组大小变得很小并且两组中的真实相关性都除外)非常接近± 1。
结论:如果要测试相关性差异,请使用Fisher的r-z转换并测试这些值之间的差异。