Как я могу построить графики эффектов для смешанной модели?

Я успешно использовал пакет effects для моделей lm и glm раньше. Предполагается, что он поддерживает lme4 смешанные модели, но я не могу заставить его работать в большинстве случаев.

Любой совет? У меня есть воспроизводимый пример ниже с двумя действительными lmer моделями, которые выдают effects ошибки.

Существуют ли какие-либо альтернативные пакеты для расчета и построения модельных эффектов?

library(lme4)
library(effects)

# example from documentation works
fm1 <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake,
            REML = FALSE)
print(Effect(c("recipe", "temperature"), fm1))
#> 
#>  recipe*temperature effect
#>       temperature
#> recipe      175      185      195      205      215      225
#>      A 29.13333 31.53333 30.80000 33.53333 38.66667 35.06667
#>      B 26.86667 29.40000 31.73333 32.13333 34.46667 35.26667
#>      C 27.93333 28.93333 31.73333 30.86667 34.40000 35.73333

# this is a valid model with no singularities 
fm2 <- lmer(angle ~ temp + (1 | replicate), cake)
print(fm2)
#> Linear mixed model fit by REML ['lmerMod']
#> Formula: angle ~ temp + (1 | replicate)
#>    Data: cake
#> REML criterion at convergence: 1671.711
#> Random effects:
#>  Groups    Name        Std.Dev.
#>  replicate (Intercept) 6.260   
#>  Residual              4.849   
#> Number of obs: 270, groups:  replicate, 15
#> Fixed Effects:
#> (Intercept)         temp  
#>      0.5159       0.1580

# effects doesn't work
Effect(c("temp", "replicate"), fm2)
#> Error in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the following predictor is not in the model: replicate
Effect(c("replicate"), fm2)
#> Error in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the following predictor is not in the model: replicate
Effect(c("temp"), fm2)
#> 
#>  temp effect
#> temp
#>      180      190      200      210      220 
#> 28.96159 30.54190 32.12222 33.70254 35.28286

# this doesn't work either
my_cake <- cake
my_cake <- within(my_cake, temp <- temp - mean(temp))
fm3 <- lmer(angle ~ (temp || replicate), my_cake)

Effect(c("temp", "replicate"), fm3)
#> Error in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the following predictors are not in the model: temp, replicate
Effect(c("replicate"), fm3)
#> Error in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the following predictor is not in the model: replicate
Effect(c("temp"), fm3)
#> Error in Analyze.model(focal.predictors, mod, xlevels, default.levels, : the following predictor is not in the model: temp

Created on 2022-04-22 by the reprex package (v2.0.1)

Пакет emmeans поможет? cran.r-project.org/web/packages/emmeans/vinnettes/…

Will Oldham 22.04.2022 23:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в том, что вы пытаетесь построить эффекты, используя случайные термины. В вашем первом примере ваши эффекты включают только термины с фиксированным эффектом.

Самое близкое, что я могу получить быстро, это

cowplot::plot_grid(
   plot(Effect("temp", fm2)),
   lattice::dotplot(ranef(fm2))$replicate
)

effects plot

или

library(sjPlot)
cowplot::plot_grid(
   plot_model(fm2, "eff")$temp,
   plot_model(fm2, "re")
)

effects plot 2

  • Я не думаю, что ни emmeans, ни effects не обрабатывают случайные эффекты.
  • пакет sjPlot имеет множество различных возможностей, но я не думаю, что обработка случайных эффектов как «эффектов» является одной из них.
  • обратите внимание, что повторяющиеся эффекты, показанные здесь, являются значениями относительно общего среднего, а не прогнозируемыми значениями.

Как показано здесь, вы можете создать прогнозный график с 9 случайно выбранными уровнями, но (AFAICT) невозможно использовать> 9 уровней (из-за жестко закодированного ограничения на количество цветов!)

plot(ggpredict(fm2, terms = c("temp", "replicate [sample = 9]"), type  = "random"))

Другие вопросы по теме

Glmm: стандартизация и модель представления переменных в реальном масштабе
Получение доверительных интервалов коэффициента Глмера с помощью начальной загрузки
R: смешанные модели — как предсказать переменную, используя предыдущие значения этой же переменной
Как создать новый фрейм данных прогнозов модели, используя приспособленный() для запуска существующей модели lm/lmer с взаимодействием?
Добавление случайного члена в модель смешанного эффекта glmer; сообщение об ошибке: не удается сходиться
Ошибки Imer и функция прогнозирования в R v 3.6.1 / получение доверительных интервалов из модели Imer для данной независимой переменной
Почему я получаю Estimate Std. отрицательно, когда данные, которые я использую, никогда не могут быть отрицательными?
Как интерпретировать вывод двусторонней таблицы ANOVA (lmer) в R?
Как построить несколько моделей glmer на одном графике?
Как мне получить решение для случайных эффектов с помощью пакета lme4?