医学研究的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语言
真实世界研究
统计技巧