Якщо ви хочете дотримуватися aov()функції, ви можете використовувати emmeansпакет, який може обробляти aovlist(і багато інших ) об'єкти.
library("emmeans")
# set orthogonal contrasts
options(contrasts = c("contr.sum", "contr.poly"))
aov_velocity <- aov(Velocity ~ Material + Error(Subject / Material), data = scrd)
Після створення emmGridоб’єкта наступним чином
emm <- emmeans(aov_velocity, ~ Material)
дуже легко отримати всі (post hoc) попарні порівняння за допомогою pairs()функції або будь-якого бажаного контрасту за допомогою contrast()функції emmeansпакету. Параметри кількох тестувань можна досягти за допомогою adjustаргументу цих функцій:
pairs(emm) # adjust argument not specified -> default p-value adjustment in this case is "tukey"
Для отримання додаткової інформації про це я знайшов детальні віньєтки emmeans та документацію дуже корисними.
Крім того, ви можете знайти повний (відтворюваний) приклад, включаючи опис, як отримати правильні контрастні ваги у моїй відповіді тут .
Однак зауважте, що використання уніваріантної моделі для пост-хок-тестів може призвести до антиконсервативних p- значень, якщо сферичність порушена.