参考资料:R语言实战【第2版】
列联表的独立性
通过chisq_test()或cmh_test()函数,我们可以用置换检验判断两类别型变量的独立性。当数据可根据第三个类别型变量进行分层时,需要使用后一个函数。若变量都是有序型,可使用lbl_test()函数来检验是否存在线性趋势。
# 加载coin包
library(coin)
# 加载vcd包
library(vcd)
# 建立列联表
mytable<-xtabs(~Treatment+Improved,data=Arthritis)
# 卡方检验
chisq.test(mytable)
# 置换检验
Arthritis<-transform(Arthritis,
Improved=as.factor(as.numeric(Improved)))
set.seed(1234)
chisq_test(Treatment~Improved,data=Arthritis,
distribution=approximate(nresample=9999))
在这里为什么要把变量Improved从一个有序因子变成一个分类因子呢?因为如果用有序因子coin函数将会生成一个线性与线性趋势检验,而不是卡方检验。
结果显示Treatment和Improve之间显著相关。
数值变量间的独立性
spearman_test()函数提供了两数值变量的独立性置换检验。
states<-as.data.frame(state.x77)
# spearman相关性检验
attach(states)
cor.test(Illiteracy,Murder,method="spearman")
detach(states)
# 置换检验
set.seed(1234)
spearman_test(Illiteracy~Murder,data=states,
distribution=approximate(nresample=9999))
结果显示,两个变量间具有相关性,及不相互独立。注意:state.x77是一个矩阵,在coin包的函数中,必须将其转化为一个数据框。
两样本和K样本相关性检验
当处于不同组的观测被分配得当,或者使用了重复测量时,样本相关检验便可派上用上。对于两配对组的置换检验,可以使用wilcoxsign_test()函数,多于两组是,使用friedman_test()。
library(coin)
library(MASS)
wilcoxsign_test(U1~U2,data=UScrime,
distribution="exact")
通过置换检验我们得出的结论是:两个年龄段的失业率是不相等的。