GAM 拟合总结

机器算法验证 方差分析 广义加法模型
2022-01-20 20:32:47

如果我们适合这样的 GAM:

gam.fit = gam::gam(Outstate ~ Private + s(Room.Board, df = 2) + s(PhD, df = 2) + 
    s(perc.alumni, df = 2) + s(Expend, df = 5) + s(Grad.Rate, df = 2), data = College)

在哪里,我们使用数据集College,可以在包中找到ISLR
现在,如果我们找到这个拟合的摘要,那么我们可以看到:

> summary(gam.fit)

Call: gam(formula = Outstate ~ Private + s(Room.Board, df = 2) + s(PhD, 
    df = 2) + s(perc.alumni, df = 2) + s(Expend, df = 5) + s(Grad.Rate, 
    df = 2), data = College)
Deviance Residuals:
     Min       1Q   Median       3Q      Max 
-7522.66 -1140.99    55.18  1287.51  7918.22 

(Dispersion Parameter for gaussian family taken to be 3475698)

    Null Deviance: 12559297426 on 776 degrees of freedom
Residual Deviance: 2648482333 on 762.0001 degrees of freedom
AIC: 13924.52 

Number of Local Scoring Iterations: 2 

Anova for Parametric Effects
                        Df     Sum Sq    Mean Sq F value    Pr(>F)    
Private                  1 3377801998 3377801998 971.834 < 2.2e-16 ***
s(Room.Board, df = 2)    1 2484460409 2484460409 714.809 < 2.2e-16 ***
s(PhD, df = 2)           1  839368837  839368837 241.496 < 2.2e-16 ***
s(perc.alumni, df = 2)   1  509679160  509679160 146.641 < 2.2e-16 ***
s(Expend, df = 5)        1 1019968912 1019968912 293.457 < 2.2e-16 ***
s(Grad.Rate, df = 2)     1  148052210  148052210  42.596 1.227e-10 ***
Residuals              762 2648482333    3475698                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Anova for Nonparametric Effects
                       Npar Df Npar F   Pr(F)    
(Intercept)                                      
Private                                          
s(Room.Board, df = 2)        1  3.480 0.06252 .  
s(PhD, df = 2)               1  1.916 0.16668    
s(perc.alumni, df = 2)       1  1.471 0.22552    
s(Expend, df = 5)            4 34.350 < 2e-16 ***
s(Grad.Rate, df = 2)         1  1.981 0.15971    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

在这里,我不明白“参数效果的方差分析”以及“非参数效果的方差分析”部分的含义。虽然我知道 ANOVA 测试的工作原理,但我无法理解摘要的“参数效应”和“非参数效应”部分。那么,它们是什么意思?它们的意义是什么?


这个问题的出现是由于这个答案的 (d) 部分,对于问题 10,统计学习简介的第 7 章。

1个回答

这种拟合 GAM 的方法的输出结构是将平滑器的线性部分与其他参数项组合在一起。注意Private在第一个表中有一个条目,但在第二个表中它的条目是空的。这是因为Private是一个严格的参数项;它是一个因子变量,因此与代表 的影响的估计参数相关联Private平滑项分为两种效果的原因是,此输出允许您确定平滑项是否具有

  1. 非线性效应:查看非参数表并评估显着性。如果显着,则保留为平滑的非线性效应。如果不显着,请考虑线性效应(以下 2.)
  2. 线性效应:查看参数表并评估线性效应的重要性。如果显着,您可以在描述模型的公式中将术语转换为平滑s(x)-> x如果无关紧要,您可能会考虑完全从模型中删除该术语(但请注意这一点 --- 这相当于一个强有力的声明,即真正的效果是 == 0)。

参数表

此处的条目就像您将其拟合为线性模型并计算 ANOVA 表所获得的一样,但没有显示任何相关模型系数的估计值。代替估计的系数和标准误差,以及相关的t或 Wald 检验,解释的方差量(根据平方和)显示在 F 检验旁边。与配备多个协变量(或协变量函数)的其他回归模型一样,表中的条目取决于模型中的其他项/函数。

非参数表

参数效应与拟合的平滑器的非线性部分有关。除 的非线性效应外,这些非线性效应均不显着Expend有一些证据表明 的非线性效应Room.BoardNpar Df每一个都与一定数量的非参数自由度test(

非参数部分的这些检验可以解释为对线性关系而不是非线性关系的原假设的检验

您可以解释这一点的方式是,仅Expend保证被视为平滑的非线性效应。其他平滑可以转换为线性参数项。一旦将其他平滑转换为线性参数项,您可能需要检查平滑是否Room.Board继续具有非显着的非参数效果;可能Room.Board是轻微非线性的影响,但这会受到模型中其他平滑项的影响。

然而,这在很大程度上可能取决于许多平滑只允许使用 2 个自由度的事实;为什么2?

自动平滑度选择

较新的拟合 GAM 方法将通过自动平滑度选择方法为您选择平滑度,例如推荐包mgcv中实施的 Simon Wood 的惩罚样条方法:

data(College, package = 'ISLR')
library('mgcv')

set.seed(1)
nr <- nrow(College)
train <- with(College, sample(nr, ceiling(nr/2)))
College.train <- College[train, ]
m <- mgcv::gam(Outstate ~ Private + s(Room.Board) + s(PhD) + s(perc.alumni) + 
               s(Expend) + s(Grad.Rate), data = College.train,
               method = 'REML')

模型总结更简洁,直接将平滑函数视为一个整体而不是线性(参数)和非线性(非参数)贡献:

> summary(m)

Family: gaussian 
Link function: identity 

Formula:
Outstate ~ Private + s(Room.Board) + s(PhD) + s(perc.alumni) + 
    s(Expend) + s(Grad.Rate)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   8544.1      217.2  39.330   <2e-16 ***
PrivateYes    2499.2      274.2   9.115   <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(Room.Board)  2.190  2.776 20.233 3.91e-11 ***
s(PhD)         2.433  3.116  3.037 0.029249 *  
s(perc.alumni) 1.656  2.072 15.888 1.84e-07 ***
s(Expend)      4.528  5.592 19.614  < 2e-16 ***
s(Grad.Rate)   2.125  2.710  6.553 0.000452 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.794   Deviance explained = 80.2%
-REML = 3436.4  Scale est. = 3.3143e+06  n = 389

现在,输出将平滑项和参数项收集到单独的表中,后者获得了更熟悉的输出,类似于线性模型的输出。平滑项整体效果如下表所示。这些测试与gam::gam您展示的模型不同;它们是针对零假设的检验,即平滑效应是平坦的水平线、零效应或显示零效应。另一种选择是真正的非线性效应不为零。

请注意,除 外,EDF 均大于 2 s(perc.alumni),这表明该gam::gam模型可能有点限制。

用于比较的拟合平滑由下式给出

plot(m, pages = 1, scheme = 1, all.terms = TRUE, seWithMean = TRUE)

产生

在此处输入图像描述

自动平滑度选择也可以用于完全从模型中缩小项:

完成后,我们看到模型拟合并没有真正改变

> summary(m2)

Family: gaussian 
Link function: identity 

Formula:
Outstate ~ Private + s(Room.Board) + s(PhD) + s(perc.alumni) + 
    s(Expend) + s(Grad.Rate)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   8539.4      214.8  39.755   <2e-16 ***
PrivateYes    2505.7      270.4   9.266   <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(Room.Board)  2.260      9  6.338 3.95e-14 ***
s(PhD)         1.809      9  0.913  0.00611 ** 
s(perc.alumni) 1.544      9  3.542 8.21e-09 ***
s(Expend)      4.234      9 13.517  < 2e-16 ***
s(Grad.Rate)   2.114      9  2.209 1.01e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.794   Deviance explained = 80.1%
-REML = 3475.3  Scale est. = 3.3145e+06  n = 389

即使在我们缩小了样条曲线的线性和非线性部分之后,所有的平滑似乎都暗示了轻微的非线性效应。

就个人而言,我发现mgcv的输出更容易解释,并且因为已经表明,如果数据支持,自动平滑度选择方法将倾向于拟合线性效应。