关键词:R语言; R软件; 列联表卡方检验; 多个率比较; 关联性检验; 列联系数
一、案例介绍
某科室回顾性研究推拿疗法(Manipulation,用“1”表示)、药物疗法(Drug,用“2”表示)和针灸疗法(Acupuncture,用“3”表示)3种疗法治疗腱鞘炎的疗效,数据见图1。问3种疗法的有效率有无差别以及疗法与效果的关联[分为有效(Effective,用“1”表示)和无效(Noneffective,用“2”表示)]?部分数据见图1。本文案例可从“附件下载”处下载。
二、问题分析
本案例的分析目的是比较三种疗法治疗腱鞘炎的疗效,也就是比较三组患者有效率的差异,同时分析两者的关联性。可以采用R×C χ2检验。但需要满足4个条件:
条件1:分组变量和观察变量均为分类变量,至少有一个无序多分类变量,且观察变量不是有序多分类变量。本案例的行变量疗法为无序三分类变量,列变量疗效为二分类变量,本案例数据满足该条件。
条件2:观测值之间相互独立,本案例的观测值均是相互独立,本案例数据满足该条件。
条件3:样本量足够大,使得任一单元格内的期望频数均≥5。该条件需要通过软件分析来判断。
条件4:两个变量是同一随机样本的两种属性,本案例是回顾性分析腱鞘炎患者采用的疗法与效果的关联,所采用的疗法与效果均为已发生的事件,可以算作两种属性,该条件满足。
三、软件操作及结果解读
(一) 导入数据
mydata <- read.csv("R×C卡方检验.csv") #导入CSV数据 View(mydata) #查看数据
在数据栏目中可以查看全部数据情况,数据集中共有3个变量和6行观察数据,3个变量分别代表被调查者的治疗方法(Therapy)、治疗效果(Effect)及频率(Frequency)。如果数据集较大也可使用如下命令查看数据框结构:
str(mydata) #查看数据框结构
(二) 适用条件判断
本案例数据满足条件1、2和4,条件3的判断详见统计描述及推断。
(三) 统计描述及推断
1. 数据整理
(1) 软件操作
##数据整理##
compare<-matrix(c(199,164,118,7,18,26),nr=3,dimnames = list(c("Manipulation","Drug","Acupuncture"),c("Effective","Noneffective"))) #数据整理并编辑为矩阵格式 compare #查看数据
(2) 结果解读
图3的数据整理结果列出了R×C卡方检验所需要的数据格式,并存储在“compare”数据框中。
2. 统计描述
(1) 软件操作
##计算各个方法的有效率##
S1<-prop.table(compare,margin = 1) #计算行百分比 S1 #显示行百分比
(2) 结果解读
由图4可知,物理疗法的有效率为96.6%、药物疗法的有效率为90.1%、外用膏药的有效率为81.9%
3. 统计推断
(1) 软件操作
##卡方检验##
S2<-chisq.test(compare,correct = FALSE) #不进行连续性校正 S2$expected #查看期望频数
S1 #查看卡方检验结果
##计算Cramer V系数##
install.packages("vcd") #安装包“vcd” library(vcd) #调用包“vcd” assocstats(compare) #计算Cramer V系数
(2) 结果解读
由图6查看期望频数的结果可知,四格表的期望频数均>5,满足条件3。图7卡方检验结果给出了R×C χ2检验的统计量、自由度和P值,结果显示三种疗法的有效率的差异有统计学意义(\(x^2=21.038\),P<0.001)。图7给出了“Contingency coefficient (列联系数)”和“Cramer’s V (Cramer V系数)”。结果表明,疗法与腱鞘炎的治疗效果为弱相关(Contingency coefficient =0.195,Cramer’s V=0.199)。
4. 事后检验(两两比较)
对于R×C χ2检验,其结果只能说明各组的率或构成比整体上有无统计学差异,并不能说明哪两组之间的差异是否有统计学意义。因此,需要进行事后检验,即事后两两比较。可以通过χ2分割法进行两两比较,即将三组率或构成比的比较拆分成多个两组率或构成比的比较;同时校正检验水准α'=α/m,其中m=k(k-1)/2,k为分组数。本案例为3个分组,拆分成3个两组率的比较;取α=0.05,则α'=0.05/3=0.017。
(1) 软件操作
##指定数据子集##
mydata1<-subset(mydata, mydata$Therapy!=3) #数据子集(推拿法和药物法) mydata2<-subset(mydata, mydata$Therapy!=2) #数据子集(推拿法和针灸法) mydata3<-subset(mydata, mydata$Therapy!=1) #数据子集(药物法和针灸法)
##两两比较##
library(jmv) #调用包“jmv” #推拿法和药物法比较 contTables(formula = Frequency ~ Therapy:Effect, data = mydata1, contCoef=TRUE, phiCra=TRUE)
#推拿法和针灸法比较
contTables(formula = Frequency ~ Therapy:Effect, data = mydata2, contCoef=TRUE, phiCra=TRUE)
#计算药物法和针灸法的关联系数
contTables(formula = Frequency ~ Therapy:Effect, data = mydata2, contCoef=TRUE, phiCra=TRUE)
(2) 结果解读
图8—图10分别给出了推拿法与药物法、推拿法和针灸法、药物法和针灸法有效率的比较结果,P值分别为0.009、<0.001、0.032。按照α'=0.017的检验水准,推拿法与药物法有效率的差异有统计学意义,推拿法与针灸法有效率的差异有统计学意义,药物法与针灸法有效率的差异无统计学意义。图8—图10分别给出了推拿法与药物法、推拿法和针灸法、药物法和针灸法进行两两比较是的关联系数,可知其的关联系数φ分别为0.132、0.247、0.119,关联强度均较弱。
四、结论
本研究采用R×C χ2检验(R×C χ2 Tests)对三种疗法治疗腱鞘炎的有效率进行比较,结果显示物理疗法的有效率为96.6%、药物疗法的有效率为90.1%、外用膏药的有效率为81.9%,三种疗法有效率的差异有统计学意义(\(x^2=21.038\),P<0.001),表明三种疗法的有效率不全相同;疗法与效果的关联性为弱相关 (Contingency coefficient =0.195,Cramer’s V=0.199)。
采用χ2分割法,按照α'=0.017的检验水准进行两两比较,发现推拿法与药物法有效率的差异有统计学意义(P=0.009),推拿法与针灸法有效率的差异有统计学意义(P<0.001) ,药物法与针灸法有效率的差异无统计学意义(P=0.032),关联系数φ分别为0.132、0.119、0.247,关联强度均较弱。