gam 模型中的 Beta 族拟合值大于 1 且小于 0。这是怎么回事? (mgcv)
Posted
技术标签:
【中文标题】gam 模型中的 Beta 族拟合值大于 1 且小于 0。这是怎么回事? (mgcv)【英文标题】:Beta family in gam model fitting values greater than 1 and less than 0. Whats going on? (mgcv) 【发布时间】:2017-01-10 15:19:09 【问题描述】:我正在使用 R 中 mgcv
包的 gam
函数将 gam 拟合到区间 (0,1) 上的数据。我的模型代码如下所示:
mod <- gam(y ~ x1 + x2 + s(latitude, longitude), faimly=betar(link='logit'), data = data)
模型拟合得很好,但是当我绘制拟合值与观察值时,它看起来像这样:
plot(data$y ~ fitted(mod), ylab='observed',xlab='fitted')
显然,模型拟合大于 1 且小于 0 的值。这不应该发生。它违反了 beta 分布的假设。当我在 R 的 betareg
包中为相同的数据建模时不会发生这种情况。可能导致这种差异的原因是什么?
【问题讨论】:
你如何确定“合身”?如果您使用predict
,则需要使用参数type="response"
,否则它将超出范围。如果您使用的是fitted
函数,我不确定。
@Wayne 我正在使用fitted(mod)
获得拟合值。使用plot(y ~ fitted(mod))
完成绘图
【参考方案1】:
mod <- gam(y ~ x1 + x2 + s(latitude, longitude), faimly=betar(link='logit'), data = data)
如果你使用faimly
(错别字),gam
不会抱怨并继续进行高斯运算。试试:
print (mod)
并查看它是否显示“家庭:Beta 回归”或“家庭:高斯”
【讨论】:
哇,谢谢。就是这样。如果它发出警告会很好!以上是关于gam 模型中的 Beta 族拟合值大于 1 且小于 0。这是怎么回事? (mgcv)的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function)
R语言mgcv包中的gam函数拟合广义加性模型:线性回归与广义加性模型GAMs(Generalized Additive Model)模型性能比较(比较RMSE比较R方指标)
将 vis.gam 用于 mgcv GAM 时将 z 轴值标准化为 [0, 1]
R语言广义加性模型GAMs:可视化每个变量的样条函数样条函数与变量与目标变量之间的平滑曲线比较并进行多变量的归一化比较测试广义线性加性模型GAMs在测试集上的表现(防止过拟合)