多变量循环卡方检验+检测理论频数+<1 进行fisher
单个卡方检验流程
table(data$smoke,data$sex)
s=chisq.test(data$smoke,data$age ,correct = TRUE)
s
s$expected
#看上面最小理论频数,和提示,考虑用fisher
fisher.test(data$smoke,data$age)
多个变量进行卡方检验循环
#性别是四格表的一个变量和其他比较 zq101分组变量
myFUN<- function(x){chisq.test(data[,"zq101"],x ,correct = TRUE)}
#apply(数据库,循环数据库3到6列,按列,函数)
#要循环卡方的变量在3到6列
colnames(data)
result<- apply (data3[,3:6],2, myFUN)
#创建功能,提取list每个循环的p.value
p<- function(x){x$p.value}
#转化成数据,sapple(数据框,函数)
p2<-as.data.frame(sapply(result,p))
#保留小数点后面3位小数
result=as.data.frame(round(p2$`sapply(result, p)`,3))
result
#添加比较组的行名
A<-names(data3[ ,c(3:)])
A
rownames(result)=A
result
用map函数实现
FUN<- function(x){chisq.test(data[,"group"],x ,correct = TRUE)}
library(purrr)
map(data[,4:5],FUN)
#检验是否正确
chisq.test(data$A,data$group,correct = TRUE)