lsmeans::lsmip: 如何正确绘制连续值?

lsmeans::lsmip: how to plot continuous values correctly?

lsmeans 包中的 lsmip() 命令似乎将 x 轴上的连续预测变量视为分类预测变量。

如果我的连续预测变量以离散但不均匀的间隔进行观察(例如当您从燕麦数据中删除 0.2 水平的硝基时),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)))

有什么方法可以将 x 轴设置为 space nitro 的值以适合连续变量的比例?意思是在第一个图中为 0.2 跳过 space,或者在第二个图中将 0.45、0.46 的点聚集在一起?

您可以将绘制的数据保存在数据框中,然后根据需要绘制这些结果。在您的示例中:

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)