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

GAM模型估计自由度(edf)的确定逻辑及与光滑项系数的关系

GAM中有效自由度(edf)的计算逻辑及与光滑项系数的关系

基维度的前提说明

你使用的bs="cr"为三次回归样条基,设置k=-1时mgcv会自动匹配最大可用基维度:你共有10个观测,单变量光滑项默认会扣除1个截距可识别性约束,因此最大基维度为9,这也是你提取coef()时能看到9个s(x)系数的原因。

edf的确定方式

*edf(有效自由度)*是惩罚式平滑的核心指标,计算逻辑如下:

  • GAM的参数估计目标不是单纯最小化残差平方和,而是最小化损失=拟合损失 + 惩罚项,对应公式为:

    Loss = ||y - Xβ||² + λ·βᵀSβ
    其中X是基函数矩阵,β是光滑项系数,S是预设的惩罚矩阵(对cr基来说,惩罚的是样条的二阶导数平方和,用来抑制过度波动),λ是平滑参数。

  • mgcv会通过GCV(广义交叉验证)或REML/ML准则自动估计最优的λ值:λ越大,对系数的惩罚力度越强,光滑项越接近线性。
  • edf的官方定义是拟合值帽子矩阵的迹,即tr(X(XᵀX + λS)⁻¹Xᵀ),本质是衡量经过惩罚后,光滑项实际占用的参数自由度:λ=0时无惩罚,edf等于基维度9;λ趋近于无穷大时,edf趋近于1(退化为普通线性项)。你得到的edf=6.893是连续惩罚下的非整数值,属于正常情况。

edf与s(x)系数的关系

你观察到“没有系数被置0”是非常正常的,因为GAM默认使用的是L2惩罚(岭惩罚),不是L1惩罚(Lasso),不会直接把某些系数压缩到0后删掉对应基函数,而是对所有系数做不同程度的向0收缩:

  • 对应高频波动的基函数系数会被惩罚的更严重,系数的估计值更接近0,方差也更小;对应低频趋势的基函数系数收缩幅度更小。
  • edf本质是所有基函数系数的有效自由度之和:每个系数对应的有效自由度为「惩罚后系数的方差 / 无惩罚时系数的方差」,所有系数的该值求和就是光滑项的总edf。
  • 你可以做简单验证:手动设置极大的平滑参数sp=1e5重新拟合模型,会看到edf趋近于1,但coef()依然返回9个s(x)系数,只是这些系数会呈现严格的线性变化趋势,等效于线性项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:24:09