我使用
MuMIn::model.avg()
函数生成了一组顶级模型,占所有考虑模型权重的 95%。使用这个模型平均对象,我还根据我的顶级模型生成了预测。
假设我的前 3 名型号如下:
catch ~ s(effort) + s(year) + s(month) + s(open_water) + s(pop_dens)
catch ~ s(effort) + s(year) + s(month) + s(forest)
catch ~ s(effort) + s(year) + s(month) + s(open_water)
其中开放水域/森林是比例。
我想看看图中开放水域的平均部分效应是什么,但它出现在我的两个顶级模型中,并且每个模型都有不同的与之相关的权重。有没有直接的方法来评估这一点?
为什么要查看平均函数?估计函数意味着模型中发生的两种不同的事情。在这两个模型中都没有术语
s(open_water)
open water
对响应的影响。
是
open water
对响应的影响给定(以模型中的其他项为条件)
由于模型中有不同的术语,因此术语
s(open_water)
表示可能不兼容的不同事物;您很可能会平均一个苹果和一个橙子,而不是两个苹果。
与这种 AIC(多模型平均方法)不同,我会通过向所有项或部分项子集添加额外的收缩惩罚来解决模型估计问题。前者是通过在您的通话中添加
select = TRUE
来完成的:
m <- gam(catch ~ s(effort) + s(year) + s(month) + s(open_water) + s(pop_dens) + s(forest),
data = foo,
method = "REML",
select = TRUE,
family = something)
这永远不会导致一个或多个平滑值完全 0,但它们可能会缩小到 0,并且可能对响应产生有效 0(但不完全是 0)的影响。