mgcv:如何使用Tweedie响应模型进行逐步回归?

时间:2016-05-20 16:17:34

标签: r regression gam mgcv tweedie

有没有人知道如何用R中的Tweedie进行逐步回归?

我找到了mgcv包,它显然将Tweedie的power参数视为另一个要估计的参数。这似乎改善了必须使用tweedie.profile估算glm之外的功率,因此使用自动逐步函数进行回归似乎令人鼓舞。但我还没能弄清楚包装是否也提供逐步功能。包装手册就是这么说的。

我在关于平滑的谈话中迷失了方向:

  

mgcv包中没有step.gam   为了促进全自动模型选择,包实现了两种平滑的修改技术   作为平滑度选择的一部分,可以用来使光滑度缩小到零。

感谢您的帮助。感谢。

1 个答案:

答案 0 :(得分:6)

您的问题并非针对" Tweedie"家庭;它是模型选择中的一般mgcv功能。

mgcv不会使用step.gam进行模型选择。我认为您的混淆来自另一个包gam,它会使用step.gam来顺序添加/删除一个术语并报告AIC。当您?step.gam中的mgcv时,它会引导您?gam.selection。有意将?step.gam留在那里,万一人们搜索它。但所有细节都在?gam.selection中提供。

step.gam中无需执行mgcv。模型估计和模型选择被集成在mgcv中。对于惩罚回归/平滑样条曲线,当平滑参数变为无穷大(非常大)时,其二阶导数被惩罚为零,留下一个简单的线性项。例如,如果我们指定一个类似的模型:

y ~ s(x1, bs = 'cr') + s(x2, bs = 'cr')

虽然s(x2)是虚假的模型术语,不应包含在模型中,但mgcv:::gam/bam会在估算后缩小s(x2)x2,从而产生如下模型:

y ~ s(x1) + x2

这意味着,当您使用plot.gam()检查每个模型术语的估计平滑函数时,s(x1)是一条曲线,但s(x2)是一条直线。

现在这并不完全令人满意。要获得完整,成功的模型选择,我们还要删除x2,即将s(x2)缩小为0,以获得标记为模型:

y ~ s(x1)

但这并不难实现。我们可以使用收缩平滑类bs = 'ts'(收缩薄板回归样条,而不是普通的tp)或bs = cs'(收缩立方回归样条,而不是普通的' cr')和mgcv:::gam/bam应该能够将s(x2)缩小到0.这背后的数学是mgcv将修改线性项的特征值(即null空间)从0到0.1,一个小但正数,因此惩罚对线性项有效。因此,当您执行plot.gam()时,您会看到s(x2)是0的水平线。

bs = 'cs'bs = 'ts'应该放在函数s()中;但mgcv还允许您在bs = 'cr'中保持bs = 'tp's()不变,但将select = TRUE置于gam()bam()select = TRUE是一种更为一般的处理方式,因为此时收缩平滑只有csts,而select = TRUE适用于所有类型的平滑规范。他们基本上做同样的事情,通过将0个特征值增加到0.1。

以下示例摘自?gam.selection下的示例。请注意select = TRUE如何将多个术语缩小为0,从而提供信息模型选择。

library(mgcv)
set.seed(3);n<-200
dat <- gamSim(1,n=n,scale=.15,dist="poisson") ## simulate data
dat$x4 <- runif(n, 0, 1);dat$x5 <- runif(n, 0, 1) ## spurious
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3)+s(x4)+s(x5),data=dat,
        family=poisson,select=TRUE,method="REML")
summary(b)
plot.gam(b,pages=1)

shrinkage

请注意,p-values中的summary.gam()也为此类选择提供了证据:

Approximate significance of smooth terms:
            edf Ref.df  Chi.sq p-value    
s(x0) 1.7655119      9   5.264  0.0397 *  
s(x1) 1.9271039      9  65.356  <2e-16 ***
s(x2) 6.1351372      9 156.204  <2e-16 ***
s(x3) 0.0002618      9   0.000  0.4088    
s(x4) 0.0002766      9   0.000  1.0000    
s(x5) 0.1757146      9   0.195  0.2963    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.545   Deviance explained = 51.6%
-REML = 430.78  Scale est. = 1         n = 200