mgcv:从 GAM 模型中提取 `tp` 平滑的结点位置

mgcv: Extract Knot Locations for `tp` smooth from a GAM model

我正在尝试从 GAM 模型中提取节点的位置,以便将我的预测变量划分到另一个模型的类别中。我的数据包含一个二元响应变量(已使用)和一个连续预测变量(打开)。

data <- data.frame(Used = rep(c(1,0,0,0),1250),
                   Open = round(runif(5000,0,50), 0))

我适合 GAM:

mod <- gam(Used ~ s(Open), binomial, data = data)

我可以在 predict.gam 函数中使用 type=c("response", "lpmatrix") 获得预测值和模型矩阵等,但我正在努力提取系数变化的节点位置。非常感谢任何建议!

out<-as.data.frame(predict.gam(model1, newdata = newdat, type = "response"))

如果可能的话,我也有兴趣做这样的事情:

http://www.fromthebottomoftheheap.net/2014/05/15/identifying-periods-of-change-with-gams/

其中确定了样条的统计 increase/decrease,但是,此时我没有使用 GAMM,因此,在识别从他的 GAM 中提取的相似模型特征时遇到问题伽玛模型。第二项更多的是出于好奇。

评论:

  1. 你应该在提问时用 Rmgcv 标记你的问题;
  2. 起初我想将您的问题标记为与 raised yesterday, and 重复的问题,应该非常有用。但后来我意识到实际上有些不同。所以我在这里做一些简单的说明。

答案:

在您的 gam 通话中:

mod <- gam(Used ~ s(Open), binomial, data = data)

您没有在 s() 中指定 bs 参数,因此将使用默认基础:bs = 'tp'

'tp'thin-plate regression spline 的缩写,不是具有常规节点的平滑 class。薄板样条确实有结点:它把结点精确地放在数据点上。例如,如果您有 n 个独特的 Open 值,那么它有 n 个结。在单变量情况下,这只是一个平滑样条。

但是,薄板 回归 样条是基于截断特征分解的全薄板样条的低秩近似。这与 的想法类似。它没有使用原始 n 个薄板样条基,而是使用前 k 个主成分。这将计算复杂度从 O(n^3) 降低到 O(nk^2),同时确保最佳的 rank-k 近似。

因此,对于 拟合薄板回归样条 .

确实没有可以提取的结点

因为你使用的是单变量样条,所以真的没有必要去 'tp'。只需使用 bs = 'cr'cubic r 回归样条。在 2003 年 tp 可用之前,这曾经是 mgcv 中的默认值。 cr 有结,你可以像我在 中展示的那样提取结。不要被那个问题中的 bs = 'ad' 搞糊涂了:P 样条、B 样条、自然三次样条都是基于节点的样条。