R从gam中提取时变平滑参数

R Extraxt time varying smoothing parameters from gam

我正在尝试提取游戏的时变平滑参数。

这是型号:

gam1 <- gam(as.numeric(A5_1)~s(tt,k=k)+s(tt,by=A5_1L,k=k)+s(tt,by=A5_2L,k=k)+
            s(tt,by=A5_5L,k=k)+s(tt,by=A5_9L,k=k),data=data_subset)
gam2 <- gam(as.numeric(A5_2)~s(tt,k=k)+s(tt,by=A5_1L,k=k)+s(tt,by=A5_2L,k=k)+
            s(tt,by=A5_5L,k=k)+s(tt,by=A5_9L,k=k),data=data_subset)
gam5 <- gam(as.numeric(A5_5)~s(tt,k=k)+s(tt,by=A5_1L,k=k)+s(tt,by=A5_2L,k=k)+
            s(tt,by=A5_5L,k=k)+s(tt,by=A5_9L,k=k),data=data_subset)
gam9 <- gam(as.numeric(A5_9)~s(tt,k=k)+s(tt,by=A5_1L,k=k)+s(tt,by=A5_2L,k=k)+
            s(tt,by=A5_5L,k=k)+s(tt,by=A5_9L,k=k),data=data_subset)

summary(gam1) 看起来像这样:

我可以像这样创建显示随时间变化的平滑参数的图:

plot(gam1, select=2,ylim=c(-3,1),rug=F,xlab="time points",
     ylab=substitute(paste("Joy",italic("(t-1)"), "on Joy",italic("(t)"))))

剧情是这样的:

到目前为止我找到了 predict.gam() 函数:

predict.gam(gam1, type = "terms")

预测函数给我:

(nrows=103)

但是输出与情节不符。 图中的线从 0.2 左右开始,而平滑 predict.gam() 中的参数约为 1.1。我怎样才能提取 随着时间的推移正确的平滑参数?

总的来说,我需要这些参数,这样我就可以创建不同的 qgraphs() 随着时间的推移。开头、中间和结尾各有一个 qgraph。 像网络分析图。如果有直接的方法 从时变 gam 创建多个 qgraph() 图,我会 也很高兴接受这个。

也许我什至会在创建矩阵后使用 qgraph.animate() 这些参数。

非常感谢!

它看起来不像该图,因为该图显示了 tt 观察范围内 100 个有序值的估计效果。 predict() 调用返回数据的拟合值,因为您没有向 newdata 参数提供任何内容。

两个选项是:

  1. 保存 plot.gam() 的输出:plt <- plot.gam(....)

    现在 plt 将包含一个对象,其中包含用于创建绘图的所有数据。如果绘制所有平滑而不是一个平滑,您将得到一个列表,每个平滑都有一个数据对象。

  2. 准备一些新数据进行预测并将其作为 newdata 传递给 predict()。您需要为 tt 以及模型中使用的所有 by 变量提供数据。 expand.grid() 对此很有用。