R语言入门之独立性检验

2020-08-06 09:42:52 浏览数 (1)

独立性检验

1. 卡方检验

对于2维的频率表,我们可以使用R语言的卡方检验函数chisq.test()来进行独立性检验,用以判断行变量和列变量之间是否相关。其实独立性检验本身就是用来判断变量之间相关性的方法,如果两个变量彼此独立,那么两者统计上就是不相关的。

需要注意的是卡方检验要求列联表中每格的数值或者期望值大于5,如果该条件不满足,那么R中就会使用Yate’s矫正公式进行计算:

代码语言:javascript复制
A <- c(rep("male",15),rep("female",20),rep("male",15))#创建变量A
B <- c(rep("healthy",4),rep("sick",35),rep("healthy",11))# 创建变量B
C <- c(rep("smoker",26), rep("nonsmoker",24)) # 创建变量C
mydata <- data.frame(A,B,C) # 利用以创建的变量构建数据框
mytable <- table(A,C) #生成二维频数表
chisq.test(mytable) #卡方检验判断A和B的相关性

Pearson's Chi-squared test with Yates'continuity correction

data: mytable

X-squared = 0.0033387, df = 1, p-value = 0.9539

在这里,卡方检验的假设检验是:

(1) 零假设(H0):吸烟和性别不相关(实际分布和理论分布一致)。

(2) 备择假设(H1):吸烟和性别相关(实际分布和理论分布不一致)。

(3) 检验水准:alpha=0.05

以alpha=0.05的检验水准来看,由于p-value >0.05,所以在这里吸烟行为和性别无关。

在这里,P值是用卡方分布计算出来的,我们也可以是用蒙特卡洛(Monte Carlo)算法来计算p值,只要加上参数simulate.p.value = FALSE,在这里就不详细介绍了,有兴趣的朋友可以自己去了解了解。

2. 费希尔精确检验(Fisher Exact Test)

费希尔精确检验是一个基于超几何分布的检验变量间独立性的方法,在R语言中可以直接使用fisher.test(x)函数来进行计算,这里x通常就是一个二维的列联表。

代码语言:javascript复制
fisher.test(mytable)

在R中输出的结果有p值、备择假设、95%置信区间、OR值,从结果来看p-value>0.05,说明吸烟和性别不相关,这个结论和卡方检验的结果一致。

3. Mantel-Haenszel检验

Mantel-Haenszel检验又称为Cochrane-Mantel-Haenszel(CMH)检验,它主要针对的是分层数据,它的零假设是两个分类变量在调整组间差异后是彼此独立的,他们之间是没有其它的交互作用。在R语言中我们可以通过mantelhaen.test(x)函数来实现,这里x通常是一个三维数据表。

代码语言:javascript复制
mytable <- table(C, B, A) #将性别作为调整的因素
代码语言:javascript复制
mantelhaen.test(mytable) #进行CMH检验,判断在矫正性别后,吸烟和健康之间是否有关

从上面的结果可以看出,以alpha=0.05为检验水准时,p-value < 0.05说明在矫正性别之后吸烟和健康有关,同时依据OR值大于1可以说明吸烟是健康的危险因素。CMH检验还在Meta分析中有着巨大的作用,在后续的内容中我会详细讲解。

0 人点赞