下面的算例来自于《A Handbook of Statistical Analyses Using R》,数据中两组样本分别来自两组学生对某个物体尺寸的估计,一组使用公制,另一组使用英制,问题是这两组的估计值是否有明显差别。
1 自助法
自助法对单一的样本以有放回方式进行再抽样,得到自助分布,根据自助分布来推断样本统计量特征。
#首先读入数据
data("roomwidth", package = "HSAUR2")
#将单位转化以方便比较数值
convert <- ifelse(roomwidth$unit == "feet", 1, 3.28)
feet <- roomwidth$unit == "feet"
metre <- !feet
y <- roomwidth$width * convert
#构建两组样本
yfeet=y[feet]
ymetre=y[metre]
#计算两样本之间的差
T <- mean(y[feet]) - mean(y[metre])
#以自助法估计统计量的样本分布
meandiffs <- double(10000)
for (i in 1:length(meandiffs)) {
syfeet <- sample(yfeet,replace=T)
symetre <- sample(ymetre,replace=T)
meandiffs[i] <- mean(syfeet) - mean(symetre)
}
hist(meandiffs)
c(mean(meandiffs)-2*sd(meandiffs),mean(meandiffs)+2*sd(meandiffs))
自助分布 |
可以看到样本均值差的真实值为-8.85,而自助法计算的样本均值差为-8.89,偏差很小,而且分布近似为正态。因此可以用T值区间来算出总体均值差的95%置信区间为(-16.474445 -1.312966)。其中0不包括在内,可见这两组的估计值有明显差别。
2 置换检验
置换检验的思路在于,以原假设为起点,假定二组没有差别,由此将二组样本合并,从中以无放回方式进行抽样,分别归入两个组再计算统计量,反复进行由此得到置换分布,在此基础上进行推断。
meandiffs <- double(1000)
for (i in 1:length(meandiffs)) {
sy <- sample(y)
meandiffs[i] <- mean(sy[feet]) - mean(sy[metre])
}
quantile(meandiffs,c(0.05,0.95))
可以得到检验临界值为-5.805735 5.560368 ,而样本均值差为-8.85,已经超出左侧临界值,所以拒绝原假设,这两组的估计值是否有明显差别。
置换分布 |
没有评论:
发表评论