分享

R语言教程:两样本秩和检验

 妙趣横生统计学 2020-03-25
医学研究的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语言
真实世界研究
统计技巧


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多