【问题标题】:What is ga() in the gamlss package doing?gamlss 包中的 ga() 是做什么的?
【发布时间】:2022-07-22 19:08:25
【问题描述】:

我一直在研究用于拟合半参数模型的 gamlss 包,并在 ga() 函数中发现了一些奇怪的东西。即使模型被指定为具有伽马分布,使用 REML 拟合,模型的输出也是高斯分布,使用 GCV 拟合。

例子::

library(mgcv)
library(gamlss)
library(gamlss.add)
data(rent)
ga3 <- gam(R~s(Fl)+s(A), method="REML", data=rent, family=Gamma(log))
gn3 <- gamlss(R~ga(~s(Fl)+s(A), method="REML"), data=rent, family=GA)

GAM 模型摘要::

summary(ga3)
Family: Gamma 
Link function: log 

Formula:
R ~ s(Fl) + s(A)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.667996   0.008646   771.2   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
        edf Ref.df      F p-value    
s(Fl) 1.263  1.482 442.53  <2e-16 ***
s(A)  4.051  4.814  36.34  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.302   Deviance explained = 28.8%
-REML =  13979  Scale est. = 0.1472    n = 1969

GAMLSS 的模型摘要::

summary(getSmo(gn3))
Family: gaussian 
Link function: identity 

Formula:
Y.var ~ s(Fl) + s(A)

Parametric coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.306e-13  8.646e-03       0        1

Approximate significance of smooth terms:
        edf Ref.df      F p-value    
s(Fl) 1.269  1.492 440.14  <2e-16 ***
s(A)  3.747  4.469  38.83  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.294   Deviance explained = 29.6%
GCV = 0.97441  Scale est. = 0.97144   n = 1969

问题::

为什么模型输出给出了不正确的分布和拟合方法?我在这里遗漏了什么,这是正确的吗?

【问题讨论】:

  • 嗨 Ben,我在 ?ga() 的帮助部分提供了一个示例。它正在使用 mgcv 包中的租金数据。我只是将它包含在我的问题中。如果您认为会有更多好处,我可以尝试模拟数据并将其包括在内?
  • 不,这看起来不错。对于那些不熟悉这个框架的人,你能解释一下getSmo() 的作用/它的用途吗?我注意到summary(gn3) 本身确实说它正在使用 Gamma-family 响应 ...
  • 我自己对此很陌生,但似乎 getSmo() 用于提取拟合平滑器的信息。如果您运行 summary(gn3) 仅包含 mu 和 sigma 截距的参数值,则它不包含协变量的估计值。
  • 一个疯狂的猜测是模型的平滑项部分本质上是在一些潜在空间上拟合高斯模型(即,随机效应/潜在变量在链接尺度上被假定为多元高斯?) 但是你必须比我更了解 GAMLSS 如何运作的理论才能评估这个猜测......从某种意义上说,问题应该更多的是“getSmo() 在做什么?”而不是“ga() 在做什么?” ...

标签: r gam gamlss


【解决方案1】:

使用ga()-函数时,gamlss 在后台从mgcv 调用gam()-函数而不指定族。因此,样条曲线在假设正态分布的情况下进行拟合。因此,您在显示拟合平滑器系列时会看到:高斯和链接函数:身份。另请注意,使用 ga() 时返回的尺度估计与正态分布有关。

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2015-03-04
    • 2012-04-26
    相关资源
    最近更新 更多