在我继承的数据集上,我计算了5 个变量中每一个的 2 组平均值之间的标准化差值d 。所有数据都是从大约 175 人的同一组中收集的,其中 35 人在较小的组中。我可以使用什么测试来比较d?5 d之一与其他明显不同,但这可能是偶然的。谢谢。
如何测试均值之间的标准化差异之间的差异
这可以通过 Gleser 和 Olkin 在Handbook of Research Synthesis and Meta-Analysis (2009) 第 19 章中描述的方法轻松完成。
首先,将 5 个 d 值放入向量中。
接下来,我们需要方差-协方差矩阵。对角元素(方差)由 其中和是组大小(参见本章中的公式 19.26)。非对角元素(协方差)由 其中和变量之间的相关性(参见本章中的方程 19.27)。让我们调用结果矩阵
现在你可以做几件不同的事情,包括:
- 检验零假设,即这 5 个观察到的效应背后的真实标准化平均差异是相同的(即)。这在荟萃分析文献中通常称为“异质性检验”,可以使用所谓的检验(见方程 19.31)来完成。
- 测试一个特定效应的真实标准化平均差是否与其他效应不同(假设它们具有相同的共同真实效应)。为此,您可以拟合一个模型,该模型包含一个被认为显着不同的效应的虚拟变量,然后测试该虚拟变量(有关具有此类数据的回归模型,请参见第 19.4.2 节)。
我将用一些虚构的数据和 R 代码来说明所有这些。
### group sizes
n1 <- 35
n2 <- 175-35
### vector with the observed d values
d <- c(.24, .10, .38, .86, .29)
### construct the var-cov matrix (R is the correlation matrix of the 5 variables)
R <- matrix(c( 1, .52, .35, .68, .44,
NA, 1, .48, .27, .33,
NA, NA, 1, .56, .25,
NA, NA, NA, 1, .49,
NA, NA, NA, NA, 1), nrow=5)
R[upper.tri(R)] <- t(R)[upper.tri(R)]
V <- (1/n1 + 1/n2) * R + (outer(d, d, '*') / (2*(n1 + n2))) * R^2
### load metafor package
library(metafor)
### fit model assuming homogeneous effects
res <- rma.mv(d, V)
### examine results (esp. Q-test for heterogeneity)
res
### test if the 4th effect is significantly different from the rest
### note: I(1:5 == 4) gives me a dummy variable that is equal to FALSE (0)
### for effects 1, 2, 3, and 5, and equal to TRUE (1) for effect 4
res <- rma.mv(d ~ I(1:5 == 4), V)
### examine results (esp. the p-value for the dummy variable)
res
因此,在这些数据中,我们将拒绝真实效应是同质的(,) 我们可以得出结论,第四个效应明显大于其他效应 ()。事实上,剩余异质性检验并不显着(,),这意味着在这种情况下,效应 1、2、3 和 5 之间没有显着的异质性。
提醒一句:您正在挑选一种似乎与其他效果不同的效果进行测试。但是你没有先验地选择它——你是在检查了效果之后才选择它的。因此,更好的方法是考虑您可以运行的所有 5 个可能的测试,并为多个测试应用修正。在上面的示例中,测试很容易通过 Bonferroni 校正(只需将虚拟对象的 p 值乘以 5),但在其他数据中可能并非如此。
补充:这里的代码允许您拟合所有 5 个模型,提取 p 值,然后对多个测试应用一些校正,例如 Holm 方法。
pvals <- rep(NA, 5)
for (i in 1:5) {
res <- rma.mv(d ~ I(1:5 == i), V)
pvals[i] <- res$pval[2]
}
round(p.adjust(pvals, method="holm"), 4)
结果是:
[1] 0.0305 0.6274 0.3228 0.0001 0.3835
因此,对于这些数据,有一些证据表明第一个和第四个值可以被认为与其他值有显着差异。
我不知道任何统计测试来检查效果大小的差异。但尽管如此,这个问题还是有一个可能的解决方案:置信区间。
您可以计算每个d的置信区间。如果置信区间有一些大的交集,则可以声称它们相似。如果它们没有交集,它们肯定不相似。
计算效果大小的置信区间并不简单 - 它需要非中心性参数,例如 wikipedia page。我使用 R 包 MBESS
我对你的术语有点困惑(特别是,我认为你的意思是d是变量的索引,但我不是 100% 确定。你也没有提供很多关于d的上下文是相关的。我将假设变量是连续的,因为您将它们标准化并比较均值。在不做任何其他假设的情况下,您可以尝试多元方差分析,然后假设 MANOVA 显着,则对每个变量进行 ANOVA 或 t 检验.
如果您的数据是重复观察,则 MANOVA 将起作用,但您可以做一个纵向模型,将观察嵌套在人群中。这可以在多级回归模型中完成。
如果您的数据反映了潜在的潜在变量,请使用结构方程建模或验证性因素分析,并将每个变量作为您的潜在因素的表现或指标。
您提出其中一组的较小样本量。这种不平衡会影响你的测试的力量(即当它真的存在时检测差异的能力),但不应该影响测试的有效性。