GAM模型总结:“平滑项的意义”是什么意思?

机器算法验证 r 数据集 回归 广义加法模型
2022-03-29 03:09:56

我有我正在为其构建 GAM 模型的数据集,其中有许多预测因变量的因素。当我对模型进行总结时,我得到一个图表,表明“平滑项的重要性”(非常重要)。这代表什么?

这是一些数据的示例(完全由 btw 组成)。

gam.happiness_rating <- gam(data = ratehappiness2008, overall_happy ~ s(salary, k=3) + s(age, k=3) + as.factor(sex) + as.factor(year) + num_siblings + num_vacation)

summary(gam.happiness_rating)

Parametric coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)          68.9221     5.4937  10.432  < 2e-14 ***
as.factor(sex)1     -12.3661     3.6232  -2.55  0.02346 ** 
as.factor(year)1999  21.4689     3.3060   2.262 2.03e-06 ***
num_siblings          1.2332     0.1082   1.648  0.02235 .  
num_vacation          -4.3824   3.3261  -1.233  0.132343   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
               edf Ref.df      F  p-value    
s(salary)     2.111  1.723 15.843  < 2e-16 ***
s(age)        1.844  1.485  16.46 2.47e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
2个回答

正如 not_bonferroni 提到的,help(summary.gam)确实有有用的信息。请参阅其中的参考资料或

Wood, Simon N.. 广义加法模型:R 简介,第二版(Chapman & Hall/CRC Texts in Statistical Science)。

特别是第 6.12 节。给出一个简短而简单的答案

当我对模型进行总结时,我得到一个图表,表明“平滑项的重要性”(非常重要)。这代表什么?

让我们假设您只有一个协变量,并且您有一个结果变量是 ,如果观察总体满意,则为你适合的模型是xiyi{0,1}1i0

g(E(yixi))=α+f(xi)

其中是链接函数,是未知平滑函数。那么值用于原假设举一个简单的例子,我们在下面进行一些模拟,其中gfpH0:f(xi)=0f(xi)=2sin(xi)f(x)=xf(xi)=0

library(mgcv)
set.seed(2160179)
n <- 100
x <- seq(-pi, pi, length.out = n)

# f(x) = 2sin(x)
y <- 1/(1 + exp(-(1 + 2 * sin(x)))) > runif(n)
fit <- gam(y ~ s(x, k = 20), binomial())
summary(fit)
#R ...
#R Approximate significance of smooth terms:
#R        edf Ref.df Chi.sq  p-value
#R s(x) 4.285  5.344  32.61 8.33e-06 ***
#R ---
#R ...

# f(x) = x
y <- 1/(1 + exp(-(1 + x))) > runif(n)
fit <- gam(y ~ s(x, k = 20), binomial())
summary(fit)
#R ...
#R Approximate significance of smooth terms:
#R      edf Ref.df Chi.sq  p-value
#R s(x)   1      1  24.45 7.63e-07 ***
#R ---
#R ...

# f(x) = 0
y <- 1/(1 + exp(-1)) > runif(n)
fit <- gam(y ~ s(x, k = 20), binomial())
summary(fit)
#R ...
#R Approximate significance of smooth terms:
#R        edf Ref.df Chi.sq p-value
#R s(x) 6.532  8.115  11.04    0.21
#R ---
#R ...

我们在前两种情况下拒绝零假设,但在后一种情况下没有如预期的那样。现在假设我们在模型中添加了两个额外的协变量,使得

g(E(yixi))=α+f1(x1i)+f2(x2i)+βx3i

您的零假设是与协变量一的(可能非线性)关联以及与协变量三的线性关联, , 在链接尺度上。x1ix2ix3i

最后一个评论(在 中强调help(summary.gam))是值没有考虑平滑参数估计中的不确定性。值接近您的阈值时,您可能需要小心。pp

平滑项的重要性正如其名:模型的平滑项有多重要。也许问题更多的是平滑术语是什么(因为您似乎明白什么是意义)?您的模型包括各种术语,其中一些是“平滑”术语,基本上是惩罚三次回归样条。这些是带有“s”的术语,例如,s(salary, k=3)。其他一些术语是参数化的,例如 num_siblings 或 num_vacation。这些术语中的每一个对于解释响应变量“overall_happy”的方差或多或少都很重要。其中一些似乎并不重要,例如意义不大的 num_vacation(p 值很大,为 0.132343)。这意味着该变量可能对您的响应变量没有机械或确定性或物理影响,因此,您可以忽略它并将其从模型中删除。其他术语具有很高的意义(p 值较小),例如平滑术语 s(salary)。这意味着,实际上,一个人的薪水很可能是促成其幸福的主要因素之一。