今天解决一个问题:如何进行率的比较?
比方说,如何比较治疗组和对照组之间的治愈率?
此篇文章主要介绍以下内容:如何选择卡方检验和Fisher确切概率法;实用函数CrossTable()及其结果的解释。
卡方检验?还是Fisher确切概率法?
通常来说,关于率的比较,使用最广泛的方法应该是卡方检验(Pearson’s chi-squared test, χ2test)。
不过fisher确切概率法,卡方检验的使用需满足几个前提(Assumptions):
1. 数据相互独立。
2. 期望频次(expected frequencies)要大于5。
如果不满足上面的第二点(即小于5),则可以使用Fisher确切概率法(Fisher’s exact test)。
马上进入操作部分:
R包的安装
首先安装R包并载入。
# install.packages("vcd")
# install.packages("gmodels")
# install.packages("tidyverse")library(tidyverse) # 数据处理
library(vcd) # 使用到其中的数据集:Arthritis
library(gmodels) # CrossTable(),用于卡方检验和Fisher确切概率法
R包get!
准备数据
将会使用到{vcd}中研究关节炎治疗的数据”Arthritis”,在载入{vcd}之后该数据就可以直接查看与使用了。
summary(Arthritis)
我们的目的是比较安慰剂组(Placebo)和试验组(Treated)之间治疗效果(Improved)是否有差异。
从上述可知,我们感兴趣的两个变量(Treatment和Improved)均为分类变量(Categorical variables)。
其中,Improved为一个3水平(“None”, “Some”, “Marked”)的分类变量,为了简化数据,将其变成一个2水平的变量,将“Some”从中剔除:
# 简化数据
mydata %
select(Treatment, Improved) %>%
filter(Improved %in% c("None", "Marked")) # 剔除“Some”
提取数据的前40行作为新数据small,用于后续的Fisher确切概率法:
## 小样本small
small <- mydata[1:40,]
卡方检验
下面,小编将使用R包{gmodel}中的CrossTable()用于卡方检验。使用?CrossTable了解更多内容。
# 卡方检验
CrossTable(mydata$Treatment, mydata$Improved,
chisq = T, # 结果包括卡方检验
expected = T, # 结果包括期待频次
prop.c = F, # 不包括列的比例
prop.t = F, # 不包括在全表中占的比例
prop.chisq = F)
结果主要分三部分:
Cell Contents:列出表格中每个空格包含的信息,真实个数、期望频次、该亚组行数/总行数。
Table: 每个亚组的信息。其中需注意的是期望频次(红框),如果都大于5就可以安心的使用卡方检验。
Statistics: 卡方检验的结果以及Yate’s校正后的结果。其中,p蓝框)说明安慰剂组与试验组之间的治疗效果存在统计学差异。
Fisher确切概率法
使用之前准备好的数据small,做Fisher确切概率法。作为比较说明,我们同时也做了卡方检验:
# 使用样本小的数据
CrossTable(small$Treatment, small$Improved,
fisher = T, # 结果中包括Fisher确切概率法
chisq = T,
expected = T,
prop.c = F, prop.t = F, prop.chisq = F)
结果的解释如下:
红框:有两个格子中期望频次小于5,说明此次分析不符合卡方检验的前提。
蓝框:Fisher确切概率法的输出结果,即双尾检验的p值;如果是单尾检验则看后两个结果。
绿框:当不符合卡方检验的前提时fisher确切概率法,如果强行进行卡方检验,R会“贴心”地给出警告信息(Warning message),提示卡方检验结果可能不准确,因此,更合适的选择应该是使用Fisher确切概率法。
好啦,今天的内容就到这里。
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信: