• R语言和医学统计学(11):球形检验


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

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

    前言

    这是R语言和医学统计学的第11篇内容。

    主要是用R语言复现课本中的例子。我使用的课本是孙振球主编的《医学统计学》第4版,封面如下:
    在这里插入图片描述

    球对称检验

    今天就解决1个问题!

    如何使用R语言进行球形检验?

    球形检验是非常重要的内容,在进行重复测量方差分析之前,都应该先进行球形假设检验!

    R语言作为专为统计而生的语言,球形检验的函数就内置在stats包中,就是mauchly.test(),但是用法却和其他常见统计检验函数很不一样。

    下面我将会为大家讲解如何使用R语言进行球形检验!

    使用课本表12-3的数据

    这是一个只有1组的!

    读取数据:

    df <- foreign::read.spss("E:/各科资料/医学统计学/研究生课程/析因设计重复测量/9重复测量18-9研/表12-3重复测量ANOVA.sav",
                             to.data.frame = T, reencode = "utf-8")
    ## re-encoding from utf-8
    
    str(df)
    ## 'data.frame':	8 obs. of  4 variables:
    ##  $ t0  : num  5.32 5.32 5.94 5.49 5.71 6.27 5.88 5.32
    ##  $ t45 : num  5.32 5.26 5.88 5.43 5.49 6.27 5.77 5.15
    ##  $ t90 : num  4.98 4.93 5.43 5.32 5.43 5.66 5.43 5.04
    ##  $ t135: num  4.65 4.7 5.04 5.04 4.93 5.26 4.93 4.48
    ##  - attr(*, "variable.labels")= Named chr(0) 
    ##   ..- attr(*, "names")= chr(0) 
    ##  - attr(*, "codepage")= int 936
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    数据一共4列,就是4个时间点的血糖值。

    首先将数据变为矩阵:

    df <- as.matrix(df)
    
    • 1

    然后进行球对称检验(球形检验):

    mauchly.test(lm(df ~ 1), X = ~ 1)
    ## 
    ## 	Mauchly's test of sphericity
    ## 	Contrasts orthogonal to
    ## 	~1
    ## 
    ## 
    ## data:  SSD matrix from lm(formula = df ~ 1)
    ## W = 0.06273, p-value = 0.008207
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果就有了,就是这么简单直接,网上很多资料都是直接复制粘贴帮助文档里的内容,非常费脑子!

    使用课本例12-3的数据

    这个数据有2组!

    直接读取:

    df1 <- foreign::read.spss("E:/各科资料/医学统计学/研究生课程/析因设计重复测量/9重复测量18-9研/例12-03.sav",to.data.frame = T)
    
    str(df1)
    ## 'data.frame':	15 obs. of  7 variables:
    ##  $ No   : num  1 2 3 4 5 6 7 8 9 10 ...
    ##  $ group: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 2 2 2 2 2 ...
    ##  $ t0   : num  120 118 119 121 127 121 122 128 117 118 ...
    ##  $ t1   : num  108 109 112 112 121 120 121 129 115 114 ...
    ##  $ t2   : num  112 115 119 119 127 118 119 126 111 116 ...
    ##  $ t3   : num  120 126 124 126 133 131 129 135 123 123 ...
    ##  $ t4   : num  117 123 118 120 126 137 133 142 131 133 ...
    ##  - attr(*, "variable.labels")= Named chr [1:7] "序号" "组别" "" "" ...
    ##   ..- attr(*, "names")= chr [1:7] "No" "group" "t0" "t1" ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    数据一共7列,第1列是患者编号,第2列是诱导方法(3种),第3-7列是5个时间点的血压。

    首先将数据变为矩阵,转换数据格式:

    df2 <- as.matrix(cbind(df1[1:5,3:7], df1[6:10,3:7], df1[11:15,3:7]))
    
    • 1

    把测量点和分组单独建立,注意要和上面的顺序一致:

    times = ordered(rep(1:5,3))
    group = factor(rep(c("A","B","C"),each = 5))
    
    • 1
    • 2

    然后进行球对称检验(球形检验):

    mauchly.test(lm(df2 ~ 1), M = ~ group + times, X = ~ times)
    ## 
    ## 	Mauchly's test of sphericity
    ## 	Contrasts orthogonal to
    ## 	~times
    ## 
    ## 	Contrasts spanned by
    ## 	~group + times
    ## 
    ## 
    ## data:  SSD matrix from lm(formula = df2 ~ 1)
    ## W = 0.427, p-value = 0.279
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    真的是有点费事儿!

    以后会介绍一种更为简单的方法,在进行重复测量方差分析时会自动进行球形检验!

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

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

  • 相关阅读:
    代码运行过程中非语法问题的解决
    解决开了burp suite ,火狐访问不了其他网站的问题
    C++小型公司人员信息管理系统
    第二届黄河流域网络安全技能挑战赛Web_wirteup
    1041 Be Unique
    网课答案公众号搭建!小白教程!内附网课题库接口
    编译安装Linux内核
    Android之启动奔溃提示异常java.lang.SecurityException: Permission Denial: startForeground
    神经网络解决优化问题,神经网络 样本不平衡
    Reactor模型
  • 原文地址:https://blog.csdn.net/Ayue0616/article/details/127587982