[英]How to remake aov() to car package Anova() to get Mauchly's test for sphericity, Greenhouse-Geisser and eta-squared?
我想将为aov()编写的代码转换为car-package中的Anova()函数。
anovadata3 <- within(anovadata3, {
subject <- factor(subject)
time <- factor(time)
gender <- factor(gender)
group <- factor(group)
groupgender <- factor(groupgender)
})
anovadata3.aov <- aov(values ~ time*group*gender + Error(subject),
data = anovadata3)
summary(anovadata3.aov)
这段代码为我提供了以下输出:
Error: subject
Df Sum Sq Mean Sq F value Pr(>F)
group 1 32220 32220 8.632 0.00365 **
gender 1 30 30 0.008 0.92819
group:gender 1 15 15 0.004 0.94952
Residuals 221 824913 3733
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
time 3 21160 7053 9.223 5.53e-06 ***
time:group 3 18338 6113 7.993 3.06e-05 ***
time:gender 3 1916 639 0.835 0.47486
time:group:gender 3 11679 3893 5.091 0.00172 **
Residuals 663 507012 765
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
但是,当我尝试从汽车包装中使用Anova()函数时,我会这样做:
library(car)
mlm <- lm(values ~ time*group*gender, data = anovadata3)
rfactor <- factor(c("time", "gender","group","groupgender","subject"))
anovadata3.aov <- Anova(mlm, idata = dataframe(rfactor), idesign = ~ rfactor, type ="III")
summary(anovadata3.aov)
这给了我这个输出。
Sum Sq Df F value Pr(>F)
Min. : 58.3 Min. : 1 Min. : 0.03871 Min. :0.00000
1st Qu.: 1324.9 1st Qu.: 1 1st Qu.: 0.54230 1st Qu.:0.04997
Median : 10281.5 Median : 3 Median : 1.57697 Median :0.21357
Mean : 196286.3 Mean :100 Mean : 34.03103 Mean :0.31053
3rd Qu.: 12290.4 3rd Qu.: 3 3rd Qu.: 2.61758 3rd Qu.:0.50989
Max. :1331924.5 Max. :884 Max. :262.67095 Max. :0.84408
NA's :1 NA's :1
有谁知道我如何重新制作用于aov()的代码以适合Anova()。 我试图从以下网站开始遵循本教程: https : //gribblelab.wordpress.com/2009/03/09/repeated-measures-anova-using-r/
尝试使Anova()正确。 但是它不会提供看起来相似的输出。 我也从网页上看到它是应该的,所以给我不知道的Mauchlys和Greenhouse。 还有人知道如何在方差分析结果中得到平方平方吗? 还是有必要使用单独的函数来计算eta(etaSquared())。
下面的数据用于测试,我正在尝试测试时间,性别和群体以及因素之间的交互作用之间的“值”是否存在显着差异。
values testperiod subject gender group groupgender time
1 118.82660110 Pretest 1 2 2 BSTfemale 1
2 61.07615138 Pretest 2 2 2 BSTfemale 1
3 57.51022740 Pretest 3 2 2 BSTfemale 1
4 70.73637347 Pretest 4 2 2 BSTfemale 1
5 9.86907880 Pretest 5 2 2 BSTfemale 1
6 64.51579546 Pretest 6 2 2 BSTfemale 1
7 63.25669342 Pretest 7 2 2 BSTfemale 1
8 109.09354856 Pretest 8 2 2 BSTfemale 1
9 140.69340502 Pretest 9 2 2 BSTfemale 1
10 93.94269807 Pretest 10 2 2 BSTfemale 1
11 43.76802256 Pretest 11 2 2 BSTfemale 1
...
898 60.85271722 FU_12_month 223 1 2 BSTmale 4
899 82.75598576 FU_12_month 224 1 2 BSTmale 4
900 -32.38497309 FU_12_month 225 1 2 BSTmale 4
关于所需的条件,这个问题似乎有点含糊,但这当然不是第一次有人很难从R的多元函数中获得所需的信息。 我希望summary.Anova.mlm
中的结果中“多元测试:”部分满足术语eta-squared
的要求summary.Anova.mlm
具有multivariate=TRUE
,它返回Pillai,Wilks,Hotelling-Lawley和Roy测试,然后将它们分开部分(与multivariate
参数的值无关)的“球形性的极大检验”和“偏离球形性的Greenhouse-Geisser和Huynh-Feldt校正”。 我不能告诉您是只希望从控制台会话中删除结果还是要对结果进行进一步处理。 (过去那种希望在过去曾引起Rhelp多个请求。)
car :: Anova帮助页面上的代码可用于构建示例,以便在需要时进行进一步的讨论(因为您没有提供可以复制的数据示例):
phase <- factor(rep(c("pretest", "posttest", "followup"), c(5, 5, 5)),
levels=c("pretest", "posttest", "followup"))
hour <- ordered(rep(1:5, 3))
idata <- data.frame(phase, hour)
idata
mod.ok <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5,
post.1, post.2, post.3, post.4, post.5,
fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment*gender,
data=OBrienKaiser)
class(AnoOBK <- Anova(mod.ok, idata= idata, idesign= ~phase*hour, type="III") # "Anova.mlm"
summary(AnoOBK)
> names(summary(AnoOBK))
[1] "type" "repeated" "multivariate.tests"
[4] "univariate.tests" "pval.adjustments" "sphericity.tests"
[7] "SSPE"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.