• R语言和医学统计学系列(1):t检验


    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。

    医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。

    前言

    本期开始将推送使用R语言进行医学统计学的相关内容。

    使用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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    数据基本格式

    数据一共两列,第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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果显示t=-2.1367,自由度df=35,p=0.03969,和课本一致。

    配对样本t检验

    使用课本例3-6的数据。

    首先是读取数据。

    library(foreign)
    
    df <- read.spss('D:/各科资料/医学统计学/研究生课程/3总体均数的估计与假设检验18-9研/例03-06.sav',to.data.frame = T)
    
    head(df)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    数据情况

    数据一共3列10行,第1列是样本编号,第2列和第3列是要比较的值。

    进行配对样本t检验:

    pt <- t.test(df$x1,df$x2,paired = T,var.equal = T) # 配对样本t检验
    
    pt
    
        Paired t-test
    
    data:  df$x1 and df$x2
    t = 7.926, df = 9, p-value = 2.384e-05
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     0.1946542 0.3501458
    sample estimates:
    mean of the differences 
                     0.2724 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    结果显示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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    数据情况

    一共有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 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果显示t=-0.64187,自由度df=38,p=0.5248,结果和课本一致。

    以上就是使用R语言进行t检验的例子,希望对大家有帮助,如果有任何问题欢迎评论区留言或直接与我联系。

    本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。

    医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。

  • 相关阅读:
    微信支付密码忘了怎么办
    【JavaWeb】EL表达式
    【操作系统笔记】进程和线程
    JDBC BaseRowSet类和CachedRowSet类
    Linux中文乱码问题终极解决方法
    产品经理凭啥年薪百万?看这里
    LabVIEW异步和同步通信详细分析及比较
    Linux下实现达梦数据库disql 命令上下翻动
    关于将对象转成JSON格式的一些问题
    华为od机考真题-输出匹配字符串的开始下标
  • 原文地址:https://blog.csdn.net/Ayue0616/article/details/127587595