lsmeans::lsmip: как правильно построить непрерывные значения?

lsmip() команда в lsmeans Пакет, кажется, рассматривает непрерывные предикторы на оси X как категориальные предикторы.

Если у меня есть наблюдения от моих непрерывных предикторов с дискретными, но неравномерными интервалами (например, когда вы удаляете уровень нитро 0,2 из данных Oats), lsmip в любом случае строит их с равными интервалами.

data("Oats", package = "nlme")
Oats.lmer2sub <- lmer(log(yield) ~ Variety + poly(nitro,2)
               + (1|Block/Variety),  data = subset(Oats, nitro!=0.2))
lsmip(Oats.lmer2sub, Variety ~ nitro, ylab = "Predicted log(yield)", cov.reduce=FALSE)

введите описание изображения здесь

Это кажется важным для меня, если я хочу показать модельные прогнозы на уровнях нитро, где я фактически наблюдал данные. Теоретически, я должен быть в состоянии показать прогнозируемые значения на любом уровне нитро.

lsmip(Oats.lmer2sub, Variety ~ nitro, ylab = "Predicted log(yield)", at=list(nitro=c(0, 0.2, 0.4, 0.45, 0.46,  0.6)))

введите описание изображения здесь

Есть ли способ установить ось х для размещения значений нитро в масштабе, подходящем для непрерывной переменной? Что означает пропустить пробел для 0.2 на первом графике или объединить точки 0,45, 0,46 на втором графике?

1 ответ

Решение

Вы можете сохранить построенные данные во фрейме данных, а затем отобразить эти результаты так, как хотите. В вашем примере:

plotdf <- lsmip(Oats.lmer2sub, Variety ~ nitro, 
          at=list(nitro=c(0, 0.2, 0.4, 0.45, 0.46,  0.6)), 
          plotit = FALSE)

library(lattice)
xyplot(lsmean ~ nitro, groups = ~Variety, 
       type = "o", ylab = "Predicted log(yield)", data = plotdf)

Итоговый сюжет

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