You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解读MuMIn包model.avg对GAMs的输出结果?

关于MuMIn模型平均后GAM平滑项的解读与后缀问题

我有一系列广义可加模型(GAMs),希望使用MuMIn包的model.avg函数进行模型平均,请问该如何解读平均后的平滑项结果?为何每个平滑项后带有数字后缀?

示例代码

library(glmmTMB)
library(mgcv)
library(MuMIn)

data("Salamanders") # glmmTMB data

# mgcv gams
gam1 <- gam(count ~ spp + s(cover) + s(DOP), data = Salamanders, family = tw, method = "ML")
gam2 <- gam(count ~ mined + s(cover) + s(DOP), data = Salamanders, family = tw, method = "ML")
gam3 <- gam(count ~ s(Wtemp), data = Salamanders, family = tw, method = "ML")
gam4 <- gam(count ~ mined + s(DOY), data = Salamanders, family = tw, method = "ML")

# MuMIn model average
summary(model.avg(gam1, gam2, gam3, gam4))

结果片段

Model-averaged coefficients:  
(full average) 
                                                Estimate                                   Std. Error
(Intercept) -1.32278368618846586812765053764451295137405  0.16027398202204409805027296442858641967177
minedno      2.22006553885311141982583649223670363426208  0.19680444996609294805445244946895400062203
s(cover).1   0.00096638939252485735100645092288118576107  0.05129736767981037115493592182247084565461
s(cover).2   0.00360413985630353601863351542533564497717  0.18864911049300209233692271482141222804785
s(cover).3   0.00034381902619062468381624930735540601745  0.01890820689958183642431777116144075989723
s(cover).4  -0.00248365164684107844403349041328965540743  0.12950622739175629560826052966149291023612
s(cover).5  -0.00089826079366626997504963192398008686723  0.04660149540411069601919535898559843190014
s(cover).6   0.00242197856572917875894734862640689243563  0.12855093144749979439112053114513400942087
s(cover).7  -0.00032596616013735266745646179664674946252  0.02076865732570042782922925539423886220902
s(cover).8   0.00700001172809289889942263584998727310449  0.36609857217759655956257347497739829123020
s(cover).9  -0.17150069832114492318630993850092636421323  0.17672571419517621449379873865836998447776
s(DOP).1     0.00018839994220792031023870016781529557193  0.01119134546418791391342306695833030971698
s(DOP).2    -0.00081869157242861999301819508900734945200  0.04333670935815417402103832955617690458894
s(DOP).3    -0.00021538789478326670289408395486674407948  0.01164171952980479901595955993798270355910
s(DOP).4     0.00043433676942596419591827161532648915454  0.02463278659589070856972270462392771150917

问题解答

1. 为什么平滑项后带有数字后缀?

  • 这些数字是样条基函数的索引。mgcv构建平滑项s(x)时,会把连续变量x转换成一组(默认k=9个)样条基函数,每个基函数对应一个独立的回归系数。
  • 模型平均时,每个基函数的系数会被单独计算加权平均值,所以用.1、.2...这样的后缀来区分同一个平滑项里的不同基函数系数。比如s(cover).9就是cover变量对应的第9个样条基函数的平均系数。

2. 如何解读平均后的平滑项结果?

  • 单个系数无直接意义:不要单独看某一行的系数和标准误,因为平滑项是所有基函数的线性组合,用来拟合变量的非线性趋势,单个基函数的系数无法反映整体的非线性效应。
  • 模型平均的加权逻辑:model.avg会根据每个模型的AIC权重对系数做加权平均。如果某个平滑项只在部分模型里出现(比如s(cover)只在gam1、gam2中存在),那么在不含它的模型里,对应的所有基函数系数会被当作0参与平均。
  • 实际分析建议:
    • 重点看平滑项的包含概率(在model.avg的完整结果里,Term列会显示每个变量/平滑项的包含概率),概率越高说明这个非线性效应在模型集中的支持度越强。
    • 可视化整体趋势:提取模型平均后的平滑项参数,结合原变量的取值,计算所有基函数的加权组合,画出拟合的非线性曲线,这才是平滑项的核心解读方式。
    • 显著性判断:不要用单个基函数的标准误做检验,建议结合单个模型中平滑项的显著性(比如summary(gam1)里的s(cover)的p值),再结合模型平均的权重来综合判断该非线性效应是否显著。

内容的提问来源于stack exchange,提问作者spops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:57:33