列联表
列联表可以告诉你组成表格的各种变量组合的频数或比例
一维列联表
data <- with(Arthritis,table(Improved)) ## 简单的频数统计表
data
prop.table(data) ## 将频数转化为比例值
prop.table(data)*100 ## 转化为百分比
二维列联表
data <- xtabs(~Treatment+Improved, data = Arthritis) ## 生成二维列联表
data
margin.table(data,1)
prop.table(data,1)
addmargins(data)
addmargins(prop.table(data)) ## 添加所有变量的边际和
addmargins(prop.table(data,1),2) ## 仅添加各行的边际和
addmargins(prop.table(data,1),1) ## 仅添加各列的边际和
library(gmodels)
CrossTable(Arthritis$Treatment,Arthritis$Improved)
三维列联表
data <- xtabs(~Treatment+Improved+Sex, data = Arthritis)
data
ftable(data)
margin.table(data,1)
margin.table(data,2)
margin.table(data,3)
margin.table(data,c(1,3))
ftable(prop.table(data,c(1,2)))
ftable(addmargins(prop.table(data,c(1,2)),3))
独立性检验
对列联表中各变量之间是否相关或独立进行检验
卡方检验
library(vcd)
data <- xtabs(~Treatment+Improved, data = Arthritis) ## 生成二维列联表
chisq.test(data) ## 卡方检验
data <- xtabs(~Sex+Improved, data = Arthritis) ## 生成二维列联表
chisq.test(data) ## 卡方检验
P值小于0.05,代表变量间不独立
Fisher精确检验
data <- xtabs(~Treatment+Improved, data = Arthritis) ## 生成二维列联表
fisher.test(data)
Cochran-Mantel-Haenszel检验
data <- xtabs(~Treatment+Improved+Sex, data = Arthritis) ## 生成三维列联表
mantelhaen.test(data) ##必须是三维列联表
参考文献
Kabacoff, R. (2016). R 语言实战. Ren min you dian chu ban she.