我可以证明它是有偏见的(我认为),但我无法解释原因。我希望有人能看到我的答案并帮助解释更多。
正如在许多荟萃分析和您发布的图片中一样,许多人将 BESD 解释为:如果您要对两个变量进行中位数拆分,您将准确地将人们放在 2 x 2 列联表的“正确”单元格中,给定百分比时间。
因此,如果,人们可能会说,“鉴于观察到,您可以这样想:X 中高于中位数的人在 Y 中也有 70% 的时间高于中位数。 " 这在某种程度上是Kraus (1995, p. 69)解释它的方式(他依赖于一个假设情况,其中一个变量是真正的二分变量,而另一个变量是中位数分裂):.50+r/2=.70r

人们也经常使用医学隐喻:“这个对应于对照组和实验条件下的人之间 40 个百分点的差异。”r
为了查看中位数分割式的解释是否有偏差,我模拟了 1,000,000 个病例的总体,其中真实总体。然后我从这个人群中抽取了 100 人,计算了 BESD“正确率”(即),然后计算了 2 x 2 列联表的实际中值拆分单元格,就像上面描述的用于分类的列联表一样人们“正确地”。我这样做了 10,000 次。r=.38.50+r/2
然后我取了每个长度为 10,000 的向量的平均值和标准差。编码:
library(MASS)
# set population params
mu <- rep(0,2)
Sigma <- matrix(.38, nrow=2, ncol=2) + diag(2)*.62
# set seed
set.seed(1839)
# generate population
pop <- as.data.frame(mvrnorm(n=1000000, mu=mu, Sigma=Sigma))
# initialize vectors
besd_correct <- c()
actual_correct <- c()
# actually break up raw data by median split, see how it works
for (i in 1:10000) {
samp <- pop[sample(1:1000000, 100),]
besd_correct[i] <- round(100*(.50 + cor(samp)[1,2]/2),0)
samp$V1_split <- ifelse(samp$V1 > median(samp$V1), 1, 0)
samp$V2_split <- ifelse(samp$V2 > median(samp$V2), 1, 0)
actual_correct[i] <- with(samp, table(V1_split==V2_split))[[2]]
}
# cells for BESD
mean(besd_correct)
100 - mean(besd_correct)
# cells for actual 2 x 2 table with median split
mean(actual_correct)
100 - mean(actual_correct)
基于 BESD,我们得到这张表,其中v1
和v2
指的是变量,low
和high
分别指的是中位数以下和以上:
+---------+--------+---------+
| | v2 low | v2 high |
+---------+--------+---------+
| v1 low | 69 | 31 |
+---------+--------+---------+
| v1 high | 31 | 69 |
+---------+--------+---------+
基于实际对原始数据进行中位数分割,我们得到这张表:
+---------+--------+---------+
| | v2 low | v2 high |
+---------+--------+---------+
| v1 low | 62 | 38 |
+---------+--------+---------+
| v1 high | 38 | 62 |
+---------+--------+---------+
因此,虽然有人可能会使用 BESD 争辩说,“控制和实验之间存在 38 个百分点的差异”,但实际中位数分裂的这个数字是 24。
我不确定为什么会发生这种情况,或者它是否取决于样本量和相关性(可以轻松地进行更多模拟来弄清楚),我认为这表明它是有偏见的。如果有人能用数学而不是计算的解释来解释,我会很高兴。