来自gam

时间:2018-12-19 15:03:25

标签: r var smoothing 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)看起来像这样:

enter image description here

我可以创建如下图,显示随时间推移的平滑参数:

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

情节看起来像这样:

plot_gam

到目前为止,我发现了predict.gam()函数:

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

预测函数给我:

predict_gam

(nrows = 103)

但是输出与图不匹配。 图中的线从0.2开始,而平滑 predict.gam()中的参数约为1.1。我如何提取 随着时间的推移,正确的平滑参数是什么?

在一般情况下,我需要这些参数,以便可以创建不同的参数 随着时间的推移qgraphs()。在开始,中间和结尾处有一个qgraph。 就像网络分析图一样。如果有直接的方法 从随时间变化的游戏创建多个qgraph()图,我将 欣然接受这个。

也许一旦创建矩阵我甚至会使用qgraph.animate() 这些参数。

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

两个选项是:

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

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

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