2017-09-14 88 views
0

我有一个鸟类数量的数据框。我有参加者的身份证号码,他们计算的鸟的数量,他们计算的年份,他们的纬度和长度坐标以及他们的努力。我制作了这个模型:来自lmer模型的预测值(?)

model = lmer(count~year+lat+long+effort+(1|participant), data = df) 

我现在希望模型绘制来自同一数据集的预测值。所以,这些数据是1997 - 2017年的,我希望模型能够给出我每年的预测值。我想绘制这些图,所以最终的图将在y轴上预测计数,并在x轴上显示年份(分类)。每年将有一个数据点w /一个置信区间。

我试图找出predict(),但我不太清楚如何使用它来得到我想要的。它似乎需要一个新的数据框,但我没有一个新的数据集来运行模型来预测未来的数量。根据summary(model)输出中的Beta值,我希望模型返回并处理之前已经输入的数据。

我发现这个线程,这似乎是基本上就是我希望做,但我不能让sjPlot依赖下载,sjlabelled抛出一个错误每次:How to plot predicted values with standard errors for lmer model results?

+0

标准错误将会很难,但请看'visreg'快速预测效果图,例如'visreg :: visreg(model,“year”)'。请注意,这会将连续的预测因子设置为它们的中值,并将变量因素归结为最常见的变量,以便获得“年份”的实际预测值。 –

+0

@RemkoDuursma非常感谢。但是,当我这样做时,我会将数据点绘制为负值,但这并不合理,因为您无法计算负值。有什么建议? – Heliornis

+0

可能因为你正在绘制对比而不是预测,请尝试设置'type ='conditional''。 –

回答

0

我发现我一直在寻找的包,这就是所谓的predictedmeans,有你把在模型中,你想为predictmeans(model, model term)预测模型项的函数。它完美的工作!

0

你可以试试ggeffects-package,将用于即将推出的sjPlot - 更新以绘制预测值。

library(ggeffects) 
dat <- ggpredict(model, terms = "dat") 
plot(dat) 

如果你缺少的依赖关系,尝试:

install.packages(
    c("sjlabelled", "sjmisc", "sjstats", "ggeffects", "sjPlot"), 
    dependencies = TRUE 
) 

您甚至可以想安装ggeffects from GitHub,因为目前的开发版本有混合模型的一些修复和改进。

devtools::install_github("strengejacke/ggeffects")