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

时间:2016-05-24 21:34:26

标签: r gam mgcv splines

我试图从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)

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

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

如果可能的话,我也会感兴趣:

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

其中识别出样条的统计增加/减少,但是,此时我没有使用GAMM,因此,在识别从GAMM模型中提取的GAM中的类似模型特征时遇到问题。第二项更多是出于好奇而不是任何事情。

1 个答案:

答案 0 :(得分:1)

<强>注释:

  1. 在询问时,您应该使用Rmgcv标记您的问题;
  2. 首先,我想将您的问题标记为昨天提出的mgcv: how to extract knots, basis, coefficients and predictions for P-splines in adaptive smooth?重复,而my answer应该非常有用。但后来我意识到实际上存在一些差异。所以我在这里做一些简短的解释。
  3. <强>答案:

    gam来电:

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

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

    'tp'薄板回归样条的缩写,不是具有传统结的平滑类。薄板样条确实有结:它将结准确地放在数据点上。例如,如果您有n个唯一Open个值,则它会有n个结。在单变量情况下,这只是一个平滑样条。

    然而,薄板回归样条曲线是基于截断的特征分解的全薄板样条的低秩近似。这与principal components analysis(PCA)类似。它不使用原始的n数量的薄板样条基,而是使用第一个k主成分。这会将计算复杂度从O(n^3)降低到O(nk^2),同时确保最佳秩k近似。

    因此,对于拟合的薄板回归样条,您确实无法提取结。

    由于您使用的是单变量样条线,因此无需使用'tp'。只需使用bs = 'cr' c ubic r 出版样条线。这曾经是2003年之前mgcv的默认值,当tp可用时。 cr有结,你可以像我在my answer中看到的那样提取结。不要被该问题中的bs = 'ad'混淆:P样条,B样条,自然三次样条,都是基于结的样条。