本文首发于公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
前言
本期开始将推送使用R语言进行医学统计学的相关内容。示例中用到的书籍电子版及配套数据已上传到QQ群,需要的加群下载即可。
使用R语言进行统计学是我学习R语言最开始的初衷,没想到从此一发不可收拾,打开了新世界的大门。这个系列也是我最开始学习R语言时的笔记。希望对大家有帮助。
主要是用R语言复现课本中的例子。我使用的课本是孙振球主编的《医学统计学》第4版,封面如下:
我的研究生课程并没有把整本书的全部学完,只学习了其中的一部分,因此本系列也是只针对其中学过的部分进行复现。另外对于统计描述部分也不在这里探讨。
t检验
t检验主要适用于1组或2组的均数的比较,要求数据符合正态性和方差齐性。关于t检验的本质问题本文不做过多探讨,只是学习如何用R语言实现t检验!
在R中进行t检验非常简单,就是 t.test()
函数,不管是单样本、两样本都是这一个函数。使用R语言进行统计学比SPSS好的一点是,当你需要使用某种检验时,直接打出这个检验的名字一般就会跳出来相关的函数,而我在学习使用SPSS进行各种统计检验时,可能更多的是关注如何点点点(鼠标点击菜单),不利于记住哪种情况使用什么方法。
单样本t检验
使用课本例3-5的数据。
首先是读取数据,可以自己录入,也可以使用课本光盘里的数据,我这里直接使用了光盘里的数据。
# 使用foreign包读取SPSS数据
library(foreign)
df <- read.spss('E:/各科资料/医学统计学/研究生课程/3总体均数的估计与假设检验18-9研/例03-05.sav',to.data.frame = T)
head(df)
数据一共两列,第1列是编号,第二列是血红蛋白值,一共有36行。
进行单样本t检验,并与140进行比较:
st <- t.test(df$hb,mu=140,alternative = 'two.sided') # 双侧检验
st
One Sample t-test
data: df$hb
t = -2.1367, df = 35, p-value = 0.03969
alternative hypothesis: true mean is not equal to 140
95 percent confidence interval:
122.1238 139.5428
sample estimates:
mean of x
130.8333
结果显示t=7.926,自由度df=9,p<0.001,结果和课本一致。
两样本t检验
使用课本例3-7的数据。
首先是读取数据。
library(foreign)
df <- read.spss('E:/各科资料/医学统计学/研究生课程/3总体均数的估计与假设检验18-9研/例03-07.sav',to.data.frame = T)
df$group <- c(rep('阿卡波糖',20),rep('拜糖平',20))
head(df)
一共有3列40行,第1列是编号,第2列是血糖值,第3列是组别(阿卡波糖组和拜糖平组,每组20个人)。
进行两样本t检验:
tt <- t.test(x ~ group, data = df, paired = F, var.equal = T) # 可以看到与配对样本t检验的写法稍有不同,其实都可以,主要是看数据结构
tt
Two Sample t-test
data: x by group
t = -0.64187, df = 38, p-value = 0.5248
alternative hypothesis: true difference in means between group 阿卡波糖 and group 拜糖平 is not equal to 0
95 percent confidence interval:
-2.326179 1.206179
sample estimates:
mean in group 阿卡波糖 mean in group 拜糖平
2.065 2.625
结果显示t=-0.64187,自由度df=38,p=0.5248,结果和课本一致。
以上就是使用R语言进行t检验的例子,希望对大家有帮助,如果有任何问题欢迎评论区留言或直接与我联系。
本文首发于公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。