Расчет маржинальных эффектов модели Лмера с полиномиальными членами - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь количественно оценить величину эффекта переменных в смешанной модели, используя lme4, но я не могу заставить ее работать с poly() функцией, которая создает нелинейное взаимодействие между двумя переменными.

library(lme4)
library(lmerTest)
library(readr)

mydata <- read_csv("https://raw.githubusercontent.com/HaydenSchilling/Example_code_and_data/master/example_data2.csv")

m1 <- lmer(CPUE.standardised ~ poly(cbind(X135_degree_winds.standardised, 
       X45_degree_winds.standardised), degree = 2) + 
       Estuary_Type * Drought_Months + (1|Estuary), data = mydata)

anova(m1)
summary(m1)

library(ggeffects)
ggpredict(m1, terms = "X135_degree_winds.standardised")

Последняя строка выдает ошибку:

Ошибка: не удается найти столбец cbind в .data. Вызовите rlang::last_error(), чтобы увидеть обратную трассировку

Я пробовал оба пакета ggeffects и sjPlot, но оба столкнулись с проблемами с командой cbind или не могут найти указанную переменную. Если у кого-то есть какие-либо решения, я был бы очень признателен!

1 Ответ

1 голос
/ 13 января 2020

Отвечая на мой собственный вопрос, основываясь на комментариях, которые я получил. Проблема была с командой cbind, которая была у меня в полиноме. Решение состояло в том, чтобы изменить структуру модели, чтобы она не включала cbind.

Эквивалентная модель той, что была в исходном вопросе:

m2 <- lmer(CPUE.standardised ~ poly(X135_degree_winds.standardised, degree = 2) + 
   poly(X45_degree_winds.standardised, degree = 2) + 
   X135_degree_winds.standardised:X45_degree_winds.standardised+ 
   Estuary_Type * Drought_Months + (1|Estuary), data = mydata)

Это позволяет вычислять предельные значения. эффекты.

Была также предложена улучшенная структура модели:

poly(X135_degree_winds.standardised, degree = 2)*
 poly(X45_degree_winds.standardised, degree = 2)
...