我没有找到任何差异中位数的引导假设检验示例。因此,我想建议我的方法。问题:您是否同意以下可重现的示例是检验差异中位数为 0 的原假设(与大于 0 的备择假设相反)的正确方法?
此外,我试图将其与引导假设测试的两条指南相关联。这篇论文与我在这里的方法不同,因为它不是计算 p 值,而是找到与某些显着性水平相对应的关键 t 值。尽管如此,我的方法似乎符合第一个准则:Resample from(因为我在进行引导样本之前将差异转换为d)d - median(d。但是,我不明白如何合并第二条准则:基于自举分布的测试. 我会很高兴任何提示。
假设
H0:中位数(d)= 0
H1:中位数(d)> 0,
其中 d = x1 - x2 并且假定这些值是成对的。为了说明,数据样本可能如下所示,其中对于每个,和id的对应值代表一对。x1x2
id x1 x2 d
1 -0.58 -0.62 0.04
2 0.23 0.04 0.19
3 -0.79 -0.91 0.12
4 1.65 0.16 1.49
5 0.38 -0.65 1.03
方法说明
变换:为了在 H0 下采样,我首先d通过减去它们的中值来变换 的值。这确保了在转换后的值d_H0 = d - median(d)中H0: median(d) = 0为真。
自举抽样:然后,我绘制R自举样本:我从d_H0替换中抽样并计算每个样本的中R位数,获得差异的中位数。
计算 p 值:R p 值计算为中位数大于median(d)1 个给定数据样本中差异的中位数的案例的百分比。添加了一个归一化常数(因此+1在分子和分母中)。
可重现的示例(在 R 中)
# -------------------------------------------------
# Function to get bootstrapped statistics t_star
# -------------------------------------------------
my_boot = function(d_H0, R){
N = length(d_H0)
t_star = numeric(R)
for (i in 1:R){
t_star[i] = median(sample(d_H0, size = N, replace = TRUE))
}
return(t_star)
}
# -------------------------------------------------
# Generate sample
# -------------------------------------------------
set.seed(1)
x1 = rnorm(100) + 0.05
x2 = rnorm(100)
d = x1 - x2
t = median(d)
# -------------------------------------------------
# Adjust sample to fulfill H0: median(d) = 0
# -------------------------------------------------
d_H0 = d - t
# -------------------------------------------------
# Conduct bootstrap sampling
# -------------------------------------------------
R = 5000
t_star = my_boot(d_H0, R)
# -------------------------------------------------
# Compute p-value
# -------------------------------------------------
p = (sum(t_star > t) + 1) / (R + 1)
p # 0.03