gam smoother vs 参数项(concurvity 差异)

机器算法验证 多重共线性 广义加法模型 毫克CV
2022-04-03 16:11:06

我有一个游戏模型是:

 gam=gam(sv~s(day,bs="tp")+s(range,bs="tp")+s(time,bs="cc"),data=train.all,gamma=1.4,method="REML")

s(range)产生的 edf 为 1,所以我制作了模型

gam1=gam(sv~s(day,bs="tp")+range+s(time,bs="cc"),data=train.all,gamma=1.4,method="REML")

在第一个模型(gam)中,day 和 range 之间有非常高的曲率(~0.85),但在 gam1 模型中消失了。我想知道为什么这s(range)与范围的参数形式基本相同。是否仍然存在并发性/共线性(不确定在更平滑和参数项之间如何称呼它),但当它是参数项时根本没有由 mgcv 计算?还是通过简单地将“范围”更改为其参数形式来真正消除任何共同依赖效应?

1个回答

曲率从规定的平滑项转​​移到参数项,这些项在返回的矩阵或矩阵concurvity的列下总共分组。para

这是一个修改后的例子?concurvity

library("mgcv")
## simulate data with concurvity...
set.seed(8)
n<- 200
f2 <- function(x) 0.2 * x^11 * (10 * (1 - x))^6 + 10 *
            (10 * x)^3 * (1 - x)^10
t <- sort(runif(n)) ## first covariate
## make covariate x a smooth function of t + noise...
x <- f2(t) + rnorm(n)*3
## simulate response dependent on t and x...
y <- sin(4*pi*t) + exp(x/20) + rnorm(n)*.3

## fit model...
b <- gam(y ~ s(t,k=15) + s(x,k=15), method="REML")

现在添加一个线性项并重新拟合

x2 <- seq_len(n) + rnorm(n)*3
b2 <- update(b, . ~ . + x2)

现在看两个模型的concurvity

## assess concurvity between each term and `rest of model'...
concurvity(b)
concurvity(b2)

这些产生

> concurvity(b)
                para       s(t)      s(x)
worst    1.06587e-24 0.60269087 0.6026909
observed 1.06587e-24 0.09576829 0.5728602
estimate 1.06587e-24 0.24513981 0.4659564
> concurvity(b2)
              para      s(t)      s(x)
worst    0.9990068 0.9970541 0.6042295
observed 0.9990068 0.7866776 0.5733337
estimate 0.9990068 0.9111690 0.4668871

请注意,这x2本质上是一个嘈杂的版本t

> cor(t, x2)
[1] 0.9975977

因此,弯曲度从基本上 0 in 上升b到几乎 1 in b2

现在,如果我们添加x2为平滑函数...

concurvity(update(b, . ~ . + s(x2)))

我们看到条目恢复到非常小,我们直接para得到了样条项的度量s(x2)

> concurvity(update(b, . ~ . + s(x2)))
                 para      s(t)      s(x)     s(x2)
worst    1.506201e-24 0.9977153 0.6264654 0.9976988
observed 1.506201e-24 0.9838018 0.5893737 0.9963857
estimate 1.506201e-24 0.9909506 0.4921592 0.9943990

这就是函数在参数项方面的工作方式;重点是平滑条款。

注意您正在指定gamma但使用 REML 进行拟合。gamma仅影响 GCV 和 UBRE/AIC 平滑选择方法,因此您可以删除此参数,因为它对模型拟合的影响为零。从 mgcv 的1.8-23版本开始,gamma参数 no 也会影响使用 REML/ML 拟合的模型,其中通过 REML/ML 选择平滑度参数,就好像样本大小为n/γ代替n.