Динамическая ковариата в lmer не работает в emmeans - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать динамическую ковариату (взятую из пользовательского ввода) в модели lmer. Это прекрасно работает, но применение emmeans больше не работает.

Пример:

fit1 = lmer(get(uservar) ~ Intervention + period + sequence + age + (1|ID),
            data = mydata, REML=T)

и

emmeans(fit1, list(pairwise ~ Intervention), adjust = "tukey")

работают без проблем.

lmer(get(uservar) ~ Intervention + period + sequence + get(covariable) + (1|ID),
     data = mydata, REML=T)

с ковариабельным значением "age", взятым из всплывающего окна пользовательского ввода, также работает.

Но:

emmeans(fit1, list(pairwise ~ Intervention), adjust = "tukey")

больше не работает. Это говорит:

переменные имеют разную длину (найдено для 'covariable')

Но это не правда. Если я проверю mydata[,covariable], он будет иметь ту же длину, что и другие переменные.

Есть предложения, что делать?

Ответы [ 2 ]

1 голос
/ 12 мая 2019

emmeans() должен иметь возможность восстанавливать данные для переменных предиктора, чтобы получить такие вещи, как средние значения ковариат и уровни факторов. Это будет работать, если вы сохраните указанные пользователем данные во фрейме данных и подгоните модель, используя этот фрейм данных. Но имейте в виду, что если вы впоследствии измените этот фрейм данных, скажем, с помощью другого пользовательского ввода, он изменит результаты emmeans(), даже если вы не переоснастите модель, потому что у нее нет никакого способа узнать, что данные изменились.

0 голосов
/ 13 мая 2019

Я нашел очень простое решение:

fixed.part <- "get(usevar) ~ Intervention + Periode + Sequenz +  (1|ID)"
random.part <- covariable

fit1 <- lmer(formula(paste(fixed.part, random.part, sep = " + ")), 
 data =testdat_long_cc, REML=TRUE)
emmeans(fit1)
...