一、R语言独立性检验

R提供了多种检验类别型变量独立性的方法,这里描述的三种检验分别为卡方独立性检验、
Fisher精确检验和Cochran-Mantel-Haenszel检验。

1、卡方检验

可以使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验,具体的数学问题不在这里讨论,只需知道问题的原假设是两者独立,结果的P-值小则代表拒绝原假设,即存在一定的关系;当P-值比较大时代表接受原假设,即不存在联系。例如:p = 0.05,代表变量之间无关的可能性小于5%,反过来,就是两者相关的概率大于95%,即拒绝原假设。

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
chisq.test(mytable) #卡方检验	
mytable <- xtabs(~Improved+Sex, data=Arthritis)
chisq.test(mytable)

2、Fisher精确检验(费希尔精确检验)

Fisher精确检验的原假设是:边界固定的列联表中行和列是相互独立的。其调用格式为 fisher.test(mytable) ,其中的 mytable 是一个二维列联表。fisher.test() 函数可以在任意行列数大于等于2的二维列联表上使用,但不能用于2×2的列联表,结果同上。

library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
fisher.test(mytable)
mytable <- xtabs(~Improved+Sex, data=Arthritis)
fisher.test(mytable)

3、Cochran-Mantel-Haenszel检验

mantelhaen.test() 函数可用来进行Cochran-Mantel-Haenszel卡方检验,其原假设是,两个名义变量在第三个变量的每一层中都是条件独立的。下列代码可以检验治疗情况和改善情况在性
别的每一水平下是否独立。此检验假设不存在三阶交互作用(治疗情况×改善情况×性别)。

library(vcd)
mytable <- xtabs(~Treatment+Improved+Sex, data=Arthritis)
mantelhaen.test(mytable)

二、 相关性度量

显著性检验评估了是否存在充分的证据以拒绝变量间相互独立的原假设,如果可以拒绝原假设,那么你的兴趣就会自然而然地转向用以衡量相关性强弱的相关性度量, vcd 包中的 assocstats() 函数可以用来计算二维列联表的phi系数、列联系数和Cramer’s V系数

Phi系数适用于2×2列联表,列联系数和Cramer’s V系数适用于大于2×2列联表。

  • Phi系数:phi =1,表明变量完全相关;phi = 0,表明变量相互独立;越接近1,越相关;越接近0,越不相关。
  • 列联系数:适用于大于2×2列联表,当表中两变量相互独立时,系数为0。其最大值依赖于行数和列数,但是不可能大于1。
  • Cramer’s V系数:两个变量相互独立时,等于0;两个变量完全相关时,等于1。
library(vcd)
mytable <- xtabs(~Treatment+Improved, data=Arthritis)
assocstats(mytable)