为 GAM 添加幅度惩罚

机器算法验证 贝叶斯 混合模式 广义线性模型 毫克CV
2022-04-08 00:02:35

这是我之前的问题的后续,更详细地解释了这个问题,希望得到更准确的建议。

考虑以下结构化的加法回归模型或 GAM,通常由 R 中的mgcvorBayesX包拟合。我将编写它与通常情况有所不同,以强调我正在考虑的问题的结构:

μ=h1(η)
η=η0(w)+Δη(x,z)
Δη=f1(z)+...+fp(z)+xTγ

在这里我们有

  • μ是响应变量
  • h是链接函数
  • η是线性比例预测器
  • η0(w)是取决于一些协变量的偏移量w. 我们可以想到η0作为“受人尊敬的基线模型”。
  • Δη(x,z)是与基线模型的偏差,取决于其他一些协变量(w,x,z是不同但重叠的,它们都来自相同的基础数据集)。
  • z是通过未知函数进行半参数平滑回归的协变量f1,,fp,这将通过拟合数据来确定。(它基本上只是带有惩罚平滑样条的精美线性建模)。
  • x是具有未知系数的参数项的协变量γ,这将通过拟合数据来确定。

假设我从专家那里得到一个先验信念,即偏差Δη不应该太大。因此,我想强加一个已知方差的简单高斯先验:

ΔηN(0,σ2),σ=0.05

我怎么能先把它添加到mgcvor中BayesX还是我应该完全使用另一个包?我认为将这个惩罚添加到 中应该不是很难mgcv,但我找不到任何方法来做到这一点。我觉得我应该能够获得模型矩阵M为了Δη或者至少G=MTM,然后我可以将其作为二次惩罚添加到我的模型中。但我看不出有任何类型的插槽可以放入mgcv或中BayesX中的H插槽mgcv::gam看起来最接近,但没有关于如何使用它的指导。

或者,也许我在想这个错误的方式?人们通常将先验添加到出现在模型 DAG 中的协变量“之前”的变量。取决于协变量的参数,例如ηΔη, 通常不分配先验。我的概念化方式有什么不恰当的吗?

1个回答

一个有趣的问题。这不是一个答案,而是此刻的一些漫无边际的想法。

听起来你想惩罚参数的函数,即你的惩罚Δη隐含地是一个函数g(β11,β12,,β21,β22,,)平滑拟合的基础扩展中的参数f1(z)=β1B1(z)+β2B2(z)+.

尽管mgcv具有 L2 惩罚 ( smooth.construct.re.smooth.spec) 作为平滑器,但这适用于(可能是增广的)设计矩阵的列,而您需要将其应用于协变量的当前基扩展。

我想知道是否可能没有一个迭代过程,您可以在其中以某种方式近似总变化平滑度惩罚f(x)2dx通过旋转响应和设计矩阵的某种组合,并在进行自己的基础扩展后加权 L2 惩罚?EG,你想解决 你用 对于一些任意矩阵和对角矩阵

argminβYB(X)β22+λp(β)
argminβQ(YB(X))β22+λDβ22
QD