星期二, 六月 28, 2011

在R语言中使用自助法和置换检验比较两总体

通常可以使用T检验来比较两个总体均值是否相同,但其前提是总体分布为正态,或者是大样本。在小样本情况下可以使用自助法来判断统计量及其置信区间。

下面的算例来自于《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,已经超出左侧临界值,所以拒绝原假设,这两组的估计值是否有明显差别。
置换分布


没有评论:

发表评论