
之前给大家详细介绍过如何使用R自带的经典函数aov做重复测量方差分析,今天给大家介绍如何使用更加经典的car::Anova做重复测量方差分析。
关于重复测量方差分析前的球对称检验,大家可以参考之前的文章R语言球对称检验
数据还是使用孙振球《医学统计学》第4版的数据
孙振球《医学统计学》第4版表12-3的数据,这是一个只有1组的,而且是一个不符合球对称假设的数据。
先读取数据:8名受试者分别在4个时间点的血糖值。
data12_3b <- foreign::read.spss("./datasets/表12-3重复测量ANOVA.sav",
to.data.frame = T, reencode = "gbk")
## re-encoding from gbk
str(data12_3b)
## '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
head(data12_3b)
## t0 t45 t90 t135
## 1 5.32 5.32 4.98 4.65
## 2 5.32 5.26 4.93 4.70
## 3 5.94 5.88 5.43 5.04
## 4 5.49 5.43 5.32 5.04
## 5 5.71 5.49 5.43 4.93
## 6 6.27 6.27 5.66 5.26
car::Anova的实现方式如下(W = 0.06273):
suppressMessages(library(car))
# 建立多元线性模型
mlm_model <- lm(cbind(t0,t45,t90,t135)~1,data = data12_3b)
# 定义组内因子
time_info <- data.frame(Time=factor(c("t0","t45","t90","t135"),
levels = c("t0","t45","t90","t135")))
# 使用Anova()进行重复测量方差分析,并启用球形检验
res <- Anova(mlm_model, idata = time_info,
idesign = ~Time, type = "III")
# 查看结果
summary(res, multivariate = FALSE)
##
## Univariate Type III Repeated-Measures ANOVA Assuming Sphericity
##
## Sum Sq num Df Error SS den Df F value Pr(>F)
## (Intercept) 914.53 1 2.53170 7 2528.623 3.221e-10 ***
## Time 2.96 3 0.26182 21 79.141 1.304e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Mauchly Tests for Sphericity
##
## Test statistic p-value
## Time 0.06273 0.0082069
##
##
## Greenhouse-Geisser and Huynh-Feldt Corrections
## for Departure from Sphericity
##
## GG eps Pr(>F[GG])
## Time 0.52827 5.368e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## HF eps Pr(>F[HF])
## Time 0.6573076 2.890609e-08
该函数会直接给出方差分析的结果以及球对称检验的结果。
Mauchly’s W = 0.06273,P<0.001,拒绝球对称假设。
此时你可以查看GG法或HF法校正的结果,Greenhouse-Geisser法校正后的球对称系数ε=0.52827,Huynh-Feldt法校正后的球对称系数ε=0.6573076,本次两个校正结果的P值均小于0.05,因此可认为不同时间点的血糖值有差别。
使用孙振球《医学统计学》第4版例12-3的数据。
将手术要求基本相同的15名患者随机分3组,在手术过程中分别采用A、B、C三种麻醉诱导方法,在T0(诱导前)、T1、T2、T3、T4五个时相测量患者的收缩压,试进行方差分析。
data12_3 <- foreign::read.spss("./datasets/例12-03.sav",to.data.frame = T
,reencode = "gbk")
## re-encoding from gbk
str(data12_3)
## '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" ...
head(data12_3)
## No group t0 t1 t2 t3 t4
## 1 1 A 120 108 112 120 117
## 2 2 A 118 109 115 126 123
## 3 3 A 119 112 119 124 118
## 4 4 A 121 112 119 126 120
## 5 5 A 127 121 127 133 126
## 6 6 B 121 120 118 131 137
数据一共7列,第1列是患者编号,第2列是诱导方法(3种),第3-7列是5个时间点的血压。
car::Anova的实现方式如下(W = 0.29307):
# 建立多元线性模型
mlm_model <- lm(cbind(t0,t1,t2,t3,t4) ~ group, data = data12_3)
# 定义组内因子
time_info <- data.frame(Time=factor(c("t0", "t1", "t2", "t3", "t4"),
levels = c("t0", "t1", "t2", "t3", "t4")))
# 使用Anova()进行重复测量方差分析,并启用球形检验
res <- Anova(mlm_model, idata = time_info, idesign = ~Time, type = "III")
# # 查看结果
summary(res, multivariate = FALSE)
##
## Univariate Type III Repeated-Measures ANOVA Assuming Sphericity
##
## Sum Sq num Df Error SS den Df F value Pr(>F)
## (Intercept) 358083 1 946.48 12 4539.9699 < 2.2e-16 ***
## group 912 2 946.48 12 5.7829 0.01743 *
## Time 475 4 263.12 48 21.6832 2.875e-10 ***
## group:Time 838 8 263.12 48 19.1006 1.621e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Mauchly Tests for Sphericity
##
## Test statistic p-value
## Time 0.29307 0.17766
## group:Time 0.29307 0.17766
##
##
## Greenhouse-Geisser and Huynh-Feldt Corrections
## for Departure from Sphericity
##
## GG eps Pr(>F[GG])
## Time 0.67869 1.334e-07 ***
## group:Time 0.67869 4.263e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## HF eps Pr(>F[HF])
## Time 0.896371 2.071291e-09
## group:Time 0.896371 2.041727e-11
Mauchly’s W = 0.29307,p=0.17766>0.05,符合球对称假设。
结论:
如果要进行重复测量数据的的多重检验,请参考R语言重复测量方差分析及多重检验
医学和生信笔记,专注R语言在医学中的使用!