我可以证明它有偏见(我认为),但是我无法解释原因。我希望有人能看到我的答案并帮助进一步解释它。
就像在许多荟萃分析和您发布的图像中一样,许多人将BESD解释为:如果要对两个变量进行中值分割,则可以将人准确地放在2 x 2列联表的“正确”单元格中,并将百分比时间。
因此,如果,人们可能会说:“鉴于观察到的,您可以这样想:在X的中位数以上的人在70%的时间里也将在Y的中位数以上。 ” 这就是克劳斯(1995,第69页)的解释方式(他依赖一种假设情况,其中一个变量确实是二分法,而另一个变量是中位数拆分):r.50+r/2=.70r
人们也经常使用医学上的隐喻:“此对应于对照和实验条件下人们之间40%的差异。”r
为了查看中位数分割式解释是否有偏差,我模拟了1,000,000个案例的真实人口,其中真实人口。然后,我从该人群中抽出100个人,计算了BESD“正确率”(即),然后计算了2 x 2列联表的实际中位数拆分单元格,就像上面所述的用于分类的表一样人们“正确”。我做了10,000次。.50 + r / 2r=.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。
我不确定为什么会发生这种情况,或者不确定是否取决于样本量和相关性(一个人可以轻松地进行更多的模拟来弄清楚),我认为这表明这是有偏见的。如果有人可以用数学(而不是计算)的解释来说明,我将很高兴。