2015-09-12 2 views
0

Я фитинг смешанной модели в R. Моя модель:Как скопировать фиксированные термины минной модели в R?

model <- lmer(provision_rate~breeding_type+nestling_age+time+sex:nestling_age)+(1|nest)+(1|individual), data = provision) 

секс пол родителя. Я хочу рассчитать связь между термином взаимодействия (sex: nestling_age) и provision_rate. Я не знаю, как добавить прогнозируемую строку в соответствии с моделью с другими параметрами, установленными в их средние значения, чтобы разбросать фигуру в R?

+0

Что вы пробовали? Кроме того, вы можете предоставить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? Даммические данные в порядке. –

ответ

0

Один из подходов к этой проблеме - использовать инструменты обработки данных в пакете merTools, чтобы создать data.frame, который имитирует отношения, которые вы хотите исследовать. Вот пример использования данных VerbAgg из пакета lme4, но вы должны быть в состоянии легко перенести его в свои данные и модель.

data(VerbAgg) 
fmVA <- glmer(r2 ~ (Anger + Gender + btype + situ)^2 + 
     (1|id) + (1|item), family = binomial, 
     data = VerbAgg) 

Мы приготовительные данные с помощью функции draw в merTools. Здесь мы получаем среднее наблюдение из кадра модели. Затем мы получаем wiggle данные , расширяя размер кадра данных, чтобы включить то же самое повторение наблюдения , но с различными значениями переменной, заданными параметром . Здесь мы разворачиваем набор данных ко всем значениям btype, situ, и Anger впоследствии.

# Select the average case 
newData <- draw(fmVA, type = "average") 
newData <- wiggle(newData, var = "btype", values = unique(VerbAgg$btype)) 
newData <- wiggle(newData, var = "situ", values = unique(VerbAgg$situ)) 
newData <- wiggle(newData, var = "Anger", values = unique(VerbAgg$Anger)) 

head(newData, 10) 

    r2 Anger Gender btype situ id  item 
1 N 20  F curse other 5 S3WantCurse 
2 N 20  F scold other 5 S3WantCurse 
3 N 20  F shout other 5 S3WantCurse 
4 N 20  F curse self 5 S3WantCurse 
5 N 20  F scold self 5 S3WantCurse 
6 N 20  F shout self 5 S3WantCurse 
7 N 11  F curse other 5 S3WantCurse 
8 N 11  F scold other 5 S3WantCurse 
9 N 11  F shout other 5 S3WantCurse 
10 N 11  F curse self 5 S3WantCurse 

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

plotdf <- predictInterval(fmVA, newdata = newData, type = "probability", 
     stat = "median", n.sims = 1000) 
plotdf <- cbind(plotdf, newData) 

Тогда мы наносим предсказанные значения по отношению к непрерывной переменной, Anger, и фаской и группы на двух категориальных переменных situ и btype соответственно.

ggplot(plotdf, aes(y = fit, x = Anger, color = btype, group = btype)) + 
    geom_point() + geom_smooth(aes(color = btype), method = "lm") + 
    facet_wrap(~situ) + theme_bw() + 
    labs(y = "Predicted Probability") 

Который производит следующий участок подогнанных значений:

enter image description here

Смежные вопросы