tl; др
- это может быть теоретически трудно вычислить ЕТА-квадрат для смешанных моделей, см. Например этот вопрос CV (он предлагает некоторые способы вычисления значений R ^ 2 для смешанных моделей, которые могут удовлетворить вашу потребность в размере эффекта)
- фактически, проксимальная проблема, по-видимому, заключается в том, что внутренне вычисление квадрата eta в
sjstats
ожидает, что метод anova()
вернет таблицу, содержащую строку, соответствующую остаточной дисперсии. ?anova.lmerModLmerTest
возвращает таблицу, в которой только строки соответствуют определенным слагаемым эффекта (а не остаточной дисперсии). - в любом случае вы можете столкнуться с проблемами при вычислении квадрата для модели без нетривиальной модели фиксированные эффекты (т.е. только перехват с фиксированным эффектом) ...
Это может быть более подходящим для списка проблем sjstats , но я буду использовать это пространство для поделитесь тем, что я выяснил до сих пор.
- Установка модели только для перехвата дает похожую ошибку, даже если это просто
lm()
подгонка (которая должна работать, если что-то работает):
fm0 <- lm(Yield ~ 1 , Dyestuff)
am0 <- anova(fm0, test="F")
eta_sq(am0)
Ошибка: Результат 2 должен быть одинарным двойным, а не двойным вектором длины 0
Выполнить rlang::last_error()
, чтобы увидеть, где произошла ошибка.
- Однако: подгонка нетривиального (больше фиксированных эффектов, чем просто перехват) * Модель 1038 * также дает сбой:
fm2 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
am2 <- anova(fm2, test="F")
eta_sq(am2)
Ошибка: результат 2 должен быть одиночный двойной, а не двойной вектор длины 0
Запустите rlang::last_error()
, чтобы увидеть, где Произошла ошибка.
Кроме того: Предупреждение: В tidy.anova (модель): Следующие имена столбцов в выходных данных ANOVA не были распознаны или преобразованы: NumDF, DenDF
(Из чего я может сказать, что предупреждающее сообщение на самом деле безвредно.)
Проксимальной причиной этой проблемы, по-видимому, является то, что внутренняя функция sjstats:::aov_stat_summary()
возвращает таблицу с единственной строкой для SSQ / MSQ / et c. из-за Days
; в нем также должна быть строка для остаточного SSQ / MSQ / et c.
sjstats:::aov_stat_summary(am3)
## term sumsq meansq NumDF DenDF statistic p.value
## 1 Days 30030.94 30030.94 1 16.99998 45.85296 3.263825e-06
Проблема заключается в том, что число членов вычисляется внутри как (nrow(aov.sum)-1
), что не смысл здесь.
Сравните это с тем, что мы получаем с 1+Days
моделью, использующей lm()
:
fm3 <- lm(Reaction ~ Days , sleepstudy)
am3 <- anova(fm3, test="F")
sjstats:::aov_stat_summary(am3)
## term df sumsq meansq statistic p.value
## 1 Days 1 162702.7 162702.652 71.46442 9.894096e-15
## 2 Residuals 178 405251.6 2276.694 NA NA
Копая немного глубже, мы видим, что это является прямым следствием способ представления результатов anova()
для смешанных моделей:
anova(fm2)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## Days 30031 30031 1 17 45.853 3.264e-06 ***
Обратите внимание, что в строке "остатки" нет. Для сравнения:
anova(fm3)
## Analysis of Variance Table
## Response: Reaction
## Df Sum Sq Mean Sq F value Pr(>F)
## Days 1 162703 162703 71.464 9.894e-15 ***
## Residuals 178 405252 2277