我刚刚使用mgcv
包完成了GAM的配合(我将这个模型称为gam1.5
)。我一直在玩vis.gam
功能,我有一个我无法解决的问题。
我想规范化模型的拟合值,所以当我使用vis.gam
时,z轴有限制[0,1]。
我的想法是在我的GAM模型的$fitted.values
中应用规范化公式,如下所示:
gam1.5$fitted.values<-(gam1.5$fitted.values-min(gam1.5$fitted.values))/(max(gam1.5$fitted.values)-min(gam1.5$fitted.values))
但是,当我运行vis.gam
时,它不会改变z轴的比例。我想知道我是否将规范化公式应用于GAM对象中的不正确对象($fitted.values
的另一个)。
答案 0 :(得分:1)
是。由于vis.gam
基于predict.gam
而您对$fitted.values
的更改无效!
事实上,您无法通过vis.gam
实现目标。此函数只生成一个绘图,并且不返回任何内容供用户稍后重现绘图(除非再次调用vis.gam
)。这意味着,我们需要使用predict.gam
。以下是基本步骤。
exclude.too.far
来过滤远离训练数据的数据,以避免荒谬的样条/多项式外推(如vis.gam
那样); newdat
(来自上面的网格)并调用oo <- predict.gam(gam1.5, newdat, type = "terms")
以获得逐项预测。这是一个矩阵。您只需要保留与要绘制的2D平滑关联的列。我们假设此列存储在向量z
; z
,将NA
扩展为矩阵。z
规范化为[0, 1]
。image
或contour
自行制作地图。理想情况下,我们应该举例(可能来自?vis.gam
)并完成上述步骤。但是,您回复我说您使用predict.gam
快速解决了问题。然后我不会添加演示示例。