使用 GAM 模型进行场景开发
Scenario development with GAM models
我正在使用 R 中的 mgcv::gam
模型生成预测,其中时间 (year
) 和结果变量 (out
) 之间的关系会发生变化。例如,在一种情况下,我想强制时间以线性方式影响结果变量,在另一种情况下以略微递减的方式影响结果变量,在另一种情况下,我想指定时间-结果相互作用的特定斜率。我不确定如何强制预测以特定方式处理时间和结果变量之间的相互作用:
res <- gam(out ~ s(time) + s(GEOID, bs='re'), data = df, method = "REML")
pred <- predict(gam, newdata = ndf, type="response", se=T)
time
和 out
之间没有相互作用;这里 time
对 out
有潜在的非线性影响。
我们是在讨论为了 time
的功能而强制使用某些形状吗?如果是这样,您将需要估计不同的模型;如果您想要线性效果,请使用 time
:
res_lin <- gam(out ~ time + s(GEOID, bs='re'), data = df, method = "REML")
并查看形状约束的 p 样条以加强单调性或 concave/convex 关系。
scam 包具有此类约束,并使用 mgcv 和 GCV 平滑度选择来拟合形状约束模型。
至于为时间的线性效应指定特定斜率,我认为您需要将 time
作为模型中的偏移量包括在内。所以说你想要的斜率是 0.5 我认为你需要做 + offset(I(0.5*time))
因为根据定义,偏移量的系数为 1。我会仔细检查这个,因为我可能在这里搞砸了我的想法。
我正在使用 R 中的 mgcv::gam
模型生成预测,其中时间 (year
) 和结果变量 (out
) 之间的关系会发生变化。例如,在一种情况下,我想强制时间以线性方式影响结果变量,在另一种情况下以略微递减的方式影响结果变量,在另一种情况下,我想指定时间-结果相互作用的特定斜率。我不确定如何强制预测以特定方式处理时间和结果变量之间的相互作用:
res <- gam(out ~ s(time) + s(GEOID, bs='re'), data = df, method = "REML")
pred <- predict(gam, newdata = ndf, type="response", se=T)
time
和 out
之间没有相互作用;这里 time
对 out
有潜在的非线性影响。
我们是在讨论为了 time
的功能而强制使用某些形状吗?如果是这样,您将需要估计不同的模型;如果您想要线性效果,请使用 time
:
res_lin <- gam(out ~ time + s(GEOID, bs='re'), data = df, method = "REML")
并查看形状约束的 p 样条以加强单调性或 concave/convex 关系。
scam 包具有此类约束,并使用 mgcv 和 GCV 平滑度选择来拟合形状约束模型。
至于为时间的线性效应指定特定斜率,我认为您需要将 time
作为模型中的偏移量包括在内。所以说你想要的斜率是 0.5 我认为你需要做 + offset(I(0.5*time))
因为根据定义,偏移量的系数为 1。我会仔细检查这个,因为我可能在这里搞砸了我的想法。