R语言卡方检验与结果可视化
1,卡方分析简介与实例
2,R语言chisq.test()
3,基于ggstatsplot包的可视化分析
卡方分析简介与实例:
卡方检验是生物学中应用很广的一种假设检验,可以通过对构成比,率进行检验,进而判断分类资料间的偏差程度。若卡方值越大,二者偏差程度越大;反之,二者偏差越小。其中卡方分析的原假设是观察频数与期望频数无差别,所以说当p值显著时,则拒绝原假设,认为二者之间有明显差异。总而言之,卡方分析即是用来判断两个样本间的差异程度,从而推断两个变量之间有没有关系。
一般常见的卡方分析是2x2列联表形式,例如服用某种药物是否对死亡率有影响:(自己编的数据)
简单统计之后,得到总数和死亡率:
原假设是:服药组和未服药组之间频数无显著差异(服药对死亡率无影响)
先计算自由度:(行数-1)*(列数-1)=1
这个是卡方的计算公式,R代表实际值,T代表理论值,理论值需要进一步计算才可以知道。
此处理论的死亡率就是20.69%,根据该数值计算出各个值的理论值:未服药组【治愈:328x(1-0.2069),死亡:328x0.2069】服药组同理也可以计算出结果,得到:
根据公式计算出卡方的值:
x2=(231-260.1368)2/260.1368+(97-67.8632)2/67.8632+(298-268.8609)2/268.8609+(41-70.1391)2/70.1391=31.03711
查表可知在自由度为1的情况下,临界概率是:3.84(95%),显然31.03711>3.84,远超卡方分布的临界值,同时31.03711>10.83(99.9%),对此我们便能得到结论,服药组和未服药组间有显著差异。
R语言chisq.test()
在R语言中进行卡方检验还是十分方便的,只需要使用chisq.test即可实现,可以返回卡方值和对应的p值,同时还可以计算自由度。但是其对数据集的格式有一定的要求,如图所示为实际的操作步骤:
>治愈<-c(231,298)
>死亡<-c(97,41)
>data<-data.frame(治愈,死亡,row.names = c("未服药组",