R 基于GAM模型的场景开发

R 基于GAM模型的场景开发,r,prediction,gam,R,Prediction,Gam,我正在使用R中的mgcv::gam模型生成预测,其中时间年和结果变量out之间的关系会发生变化。例如,在一个场景中,我想强制时间以线性方式影响结果变量,在另一个场景中,我想以略微减少的方式影响结果变量,在另一个场景中,我想指定时间-结果交互的特定斜率。我不确定如何强制预测以特定方式处理时间和结果变量之间的相互作用: res <- gam(out ~ s(time) + s(GEOID, bs='re'), data = df, method = "REML") pred <- pre

我正在使用R中的mgcv::gam模型生成预测,其中时间年和结果变量out之间的关系会发生变化。例如,在一个场景中,我想强制时间以线性方式影响结果变量,在另一个场景中,我想以略微减少的方式影响结果变量,在另一个场景中,我想指定时间-结果交互的特定斜率。我不确定如何强制预测以特定方式处理时间和结果变量之间的相互作用:

res <- gam(out ~ s(time) + s(GEOID, bs='re'), data = df, method = "REML")
pred <- predict(gam, newdata = ndf, type="response", se=T)

时间和时间之间没有互动;在这里,时间对输出有潜在的非线性影响

我们说的是为了时间的功能而强迫某些形状吗?如果是这样,你需要估计不同的模型;如果想要线性效果,请使用时间:

res_lin <- gam(out ~ time + s(GEOID, bs='re'), data = df, method = "REML")
并查看形状约束的p样条曲线,以强制执行montonicity或凹凸关系

scam包具有这些类型的约束,并使用mgcv和GCV平滑度选择来拟合形状约束模型


至于为时间的线性效应指定特定的斜率,我认为需要在模型中包括时间作为偏移量。假设你想要的斜率是0.5,我想你需要做+offset0.5*次,因为根据定义,偏移的系数是1。不过,我会再次检查这一点,因为我可能会把我的想法搞乱。

这真的很有帮助-我真正想做的是1估计最适合的历史模型,然后2强制时间效应在未来的预测中具有线性形状,所以当使用predict.gam时-不确定这是否可行?谢谢另外,可以添加缩放向量而不是单个值吗?再次感谢。我不知道你说的缩放向量是什么意思。对于第一点,请查看b样条曲线基础的帮助?smooth.construct.bs.smooth.spec,因为您需要使用b样条曲线基础进行估计,并适当设置惩罚范围以包括预测期。谢谢,我将对此进行研究。缩放向量-因此,我不会将整个时间向量缩放0.5,而是将时间向量的每个元素缩放为相同长度的缩放向量。lengthscale_vector=lengthtime-因此,通过scale_vector中的一个元素来缩放向量中的每个元素。