I'm tring to do a PostHocTest in Three-way repeated measures ANOVA in R (blood pressure over time, considering the factors of gender and dose of medication).
there are three ways to make a rm Anova (aov , ezAnova , anova_test ) and everyone points out a problem with performing the PostHocTest from DescTools with Bonferroni ajust.
I tried to perform the RM Anova by ezAnova. This returned to me two Anovas Stratum 1 and Stratum 2:
mod.ANOVA <- ezANOVA(data = df,
dv = pressure,
wid = ID,
within = time ,
between = c(gender, dose),
detailed = TRUE,
type = 3,
return_aov = TRUE)
Warning: Data is unbalanced (unequal N per group). Make sure you specified a well-considered value for the type argument to ezANOVA().
mod.ANOVA
$ANOVA
Effect DFn DFd SSn SSd F p p<.05 ges
1 (Intercept) 1 194 1.325280e+07 14750.03 1.743077e+05 1.659270e-288 * 0.99734914
2 gender 1 194 5.107961e+02 14750.03 6.718255e+00 1.026919e-02 * 0.01429383
3 dose 3 194 1.151308e+03 14750.03 5.047534e+00 2.174034e-03 * 0.03165026
5 time 4 776 2.614887e+05 20474.61 2.477645e+03 0.000000e+00 * 0.88128394
4 gender:dose 3 194 2.019427e+03 14750.03 8.853515e+00 1.576903e-05 * 0.05422144
6 gender:time 4 776 4.569540e+02 20474.61 4.329708e+00 1.807101e-03 * 0.01280644
7 dose:time 12 776 1.072980e+03 20474.61 3.388883e+00 7.497300e-05 * 0.02956063
8 gender:dose:time 12 776 1.402831e+03 20474.61 4.430678e+00 6.851373e-07 * 0.03829997
$`Mauchly's Test for Sphericity`
Effect W p p<.05
5 time 0.1188302 1.172062e-82 *
6 gender:time 0.1188302 1.172062e-82 *
7 dose:time 0.1188302 1.172062e-82 *
8 gender:dose:time 0.1188302 1.172062e-82 *
$`Sphericity Corrections`
Effect GGe p[GG] p[GG]<.05 HFe p[HF] p[HF]<.05
5 time 0.4863097 1.046961e-215 * 0.4911641 7.924890e-218 *
6 gender:time 0.4863097 1.461814e-02 * 0.4911641 1.432758e-02 *
7 dose:time 0.4863097 3.169289e-03 * 0.4911641 3.056549e-03 *
8 gender:dose:time 0.4863097 2.801128e-04 * 0.4911641 2.643791e-04 *
$aov
Call:
aov(formula = formula(aov_formula), data = data)
Grand Mean: 114.9769
Stratum 1: ID
Terms:
gender dose gender:dose Residuals
Sum of Squares 480.441 1086.201 2019.427 14750.027
Deg. of Freedom 1 3 3 194
Residual standard error: 8.719579
Estimated effects may be unbalanced
Stratum 2: ID:time
Terms:
time gender:time dose:time gender:dose:time Residuals
Sum of Squares 263149.03 433.82 1072.02 1402.83 20474.61
Deg. of Freedom 4 4 12 12 776
Residual standard error: 5.136614
Estimated effects may be unbalanced ```
#But the PostHocTest function did not work with any of the items in the created model.
library(DescTools)
PostHocTest(mod.ANOVA, method = "bonferroni")
Error in UseMethod("PostHocTest") :
método não aplicável para 'PostHocTest' aplicado a um objeto de classe "list"
PostHocTest(mod.ANOVA$aov$`ID:time`, method = "bonferroni")
Error in model.tables.aov(x, "means") : este ajuste não herda de "lm"
I think there is a problem with the composition of the model, however the aov structure also had the same problem.
aov.repeated <- aov(pressure ~ dose * gender * time + Error(ID/time), data=df)
aov.repeated
Call:
aov(formula = pressure ~ dose * gender * time + Error(ID/time), data = df)
Grand Mean: 114.9769
Stratum 1: ID
Terms:
dose gender dose:gender Residuals
Sum of Squares 1117.592 449.050 2019.427 14750.027
Deg. of Freedom 3 1 3 194
Residual standard error: 8.719579
Estimated effects may be unbalanced
Stratum 2: ID:time
Terms:
time dose:time gender:time dose:gender:time Residuals
Sum of Squares 263149.03 1098.59 407.25 1402.83 20474.61
Deg. of Freedom 4 12 4 12 776
Residual standard error: 5.136614
Estimated effects may be unbalanced
summary(aov.repeated)
Error: ID
Df Sum Sq Mean Sq F value Pr(>F)
dose 3 1118 372.5 4.900 0.00264 **
gender 1 449 449.0 5.906 0.01600 *
dose:gender 3 2019 673.1 8.854 1.58e-05 ***
Residuals 194 14750 76.0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: ID:time
Df Sum Sq Mean Sq F value Pr(>F)
time 4 263149 65787 2493.377 < 2e-16 ***
dose:time 12 1099 92 3.470 5.25e-05 ***
gender:time 4 407 102 3.859 0.00411 **
dose:gender:time 12 1403 117 4.431 6.85e-07 ***
Residuals 776 20475 26
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> PostHocTest(aov.repeated$`ID:time`, method = "bonferroni")
Error in model.tables.aov(x, "means") : este ajuste não herda de "lm"```