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

Я успешно использовал пакет 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
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
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?