医学研究的R语言应用(3):两样本秩和检验 同期SPSS教程篇,已经就两样本检验,进行了详细的叙述(SPSS统计分析策略(3):两样本秩和检验),本文采用R语言对本案例进行分析。 研究实例 某研究者将小鼠随机分为两组,观察局部加热治疗小鼠移植肿瘤的疗效,以生存时间(日)作为观察指标,实验结果见下表,试检验两组小鼠生存日数有无差别?详见rat.sav(SPSS格式) 局部加热组:10,12,15, 15, 15,16,20,23, 30,40 空白对照组:2,3, 3, 3,4, 4, 4,6,9,11,12,14 数据导入、整理与描述 加载必要的包 library(foreign) # 第1篇介绍 library(nortest) # 第1篇介绍 library(CBCgrps) # 第2篇介绍 library(tidyverse) # 第1篇介绍 library(car) #本篇首次出现,用于方差齐性检验 重复之前第2篇R语言的操作,将数据导入进来 library(foreign) # 利用foreign直接将数据库从SPSS中导入 setwd("E:/zwj云数据/R/SPSS") #此处设定好工作空间 e3=read.spss("rat.sav") #读取数据集, e3<-as.data.frame(e3) str(e3) # 浏览变量 is.factor(e3$group)# group变量是因子吗? is.numeric(e3$time)# group变量是数值吗? 利tapply语句进行初步统计 tapply(e3$time,e3$group,median) tapply(e3$time,e3$group,mean) tapply(e3$time,e3$group,IQR) tapply(e3$time,e3$group,sd 太麻烦,创建个函数再进行统计分析 fun1<-function(x1,x2){ median<-tapply(x1,x2,median) mean<-tapply(x1,x2,mean) IQR<-tapply(x1,x2,IQR) sd<-tapply(x1,x2,sd) y5<-cbind(median,mean,IQR,sd) return(y5) } fun1(e3$time,e3$group) #SW法进行两组数据的正态性检验 tapply(e3$time,e1$group,shapiro.test) #分别绘制两组小鼠的直方图 par(mfrow = c(1, 2)) #两幅子图在同一行显示 hist(e3$time[e3$group==1], col = "blue", border = "pink",xlab = "生存时间(日)", main = "局部加热组直方图") hist(e3$time[e3$group==2], col = "blue", border = "pink",xlab = "生存时间(日)", main = "空白对照组组直方图") 用tapply 也可以简单绘制直方图 tapply(e3$time,e3$group,hist) 两样本秩和检验 最常见的两样本秩和检验方法,R语言自带包 wilcox.test(time~group,data=e3,mu=0, paired = FALSE,conf.int = T,correct=F, conf.level = 0.95) 经常会出现以下警告。它的意思是,原始数据中有相等的变量值出现(ties),无法采用精确法进行P值,只能采用正态近似法。 exactRankTests包也可以进行秩和检验,该包倒可以开展精确法计算P值。 library(exactRankTests) wilcox.exact(time~group,data=e3,exact = F,correct=F, paired=F, conf.int=TRUE) 第三种方法,利用用Coin包,它能给出z值 library(coin) e3$group<-factor(e3$group) 近似正态法 wilcox_test(time~group, conf.int=TRUE, distribution="asymptotic", data=e3) #确切概率法 wilcox_test(time~group, conf.int=TRUE, distribution="exact", data=e3) 利用CBCgrps包快速分析与制表 最后不妨玩一下CBCgrps包进行t检验(CBCgrps包详见上一讲介绍:太棒了! 安利一个快速批量统计分析、制作三线表的R语言包),该结果自动根据正态性选择秩和检验方法 tab1 <-twogrps(e1, gvar = "group",ShowStatistic = T) print(tab1, quote = T) 本方法没有z怎么办,请结合coin:wilcox_test一起分析 #数据导出后形成excel格式,复制到word后,就可以快速制表了 write.csv(tab1,file="tab1.csv") -本文结束,如有程序有问题,请联系本人修改- meta分析 R语言 真实世界研究 统计技巧