我已经使用mcgv::gamm()
生成了一个广义可加性混合模型(GAMM),并且使用ggeffects::ggpredict()
对该模型进行估计的边际均值预测,然后使用ggplot2()
绘制这些预测没有问题。但是,当我保存工作空间、关闭它、然后重新打开它。当我这样做并尝试用ggeffects::ggpredict()
绘制同一模型时,我收到错误消息:Error in is.constant(y) : 'list' object cannot be coerced to type 'double'
个
这肯定是个小故障,因为在我退出会话之前,绘图工作都很正常。我不想每次绘图时都重新运行我的模型,因为它们是使用大型数据集、平滑函数和随机效应构建的,运行起来非常耗时(很多小时)。有人知道变通办法吗?
非常感谢
编辑:2023年12月5日(回应Miff和Gavin Simpson的评论)
谢谢你们的回答。
两个包-即ggeffects
和mgcv
-都被加载了。正如Gavin所指出的,由mgcv::gamm()
生成的对象提供了两个选项:$lme
或$gam
。class(model)
给出的类为"gamm" "list"
。由于某些原因,在创建gamm
对象的会话期间运行ggeffects::ggpredict(model)
可以正常工作,但是如果您保存、退出并重新启动R,则会给出错误消息。但是,指定ggeffects::ggpredict(model$gam)
似乎可以解决这个问题(注意,ggeffects::ggpredict(model$lme)
给出错误消息Error in eval(x$call$random) : object 'rand' not found
,可能是因为在我的模型中存在它无法处理的随机效应)。
如果有其他问题,我会进一步更新。
2条答案
按热度按时间ghhaqwfi1#
gamm()
返回的模型包含一个列表,其中包含一个$lme
组件和一个$gam
组件,每个组件代表模型的两个视图。字符串
或
型
这取决于您希望如何进行预测以及如何处理具有随机效应的预测。
yacmzcpb2#
通常,当调用
ggpredict()
时,会自动选择正确的插槽($gam
):字符串
(https://github.com/strengejacke/ggeffects/blob/master/R/ggpredict.R#L638C1-L643C1)
你能在这两种情况下发布你的
sessionInfo()
吗(它在哪里工作,当你得到一个错误)?