我试图从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中的类似模型特征时遇到问题。第二项更多是出于好奇而不是任何事情。
答案 0 :(得分:1)
<强>注释:强>
R
和mgcv
标记您的问题; <强>答案:强>
在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样条,自然三次样条,都是基于结的样条。