将趋势添加到从 beta 回归模型绘制的曲线中
Adding trends to a curve plotted from beta regression model
我有下面的示例数据集和代码,非常感谢您帮助从 beta 回归模型向曲线添加趋势,以便可视化变量值 yield
的期望值 temp
超出范围 200-450
.
library(ggplot2)
library(plotly)
library(betareg)
data("GasolineYield", package = "betareg")
md <- betareg(yield ~ temp, data = GasolineYield,
link = "cloglog")
ggplotly(
ggplot(GasolineYield, aes(x = temp, y = yield)) +
geom_point(size = 4, aes(fill = batch), shape = 21) +
geom_line(aes(y = predict(md, GasolineYield)), col="red") +
theme_classic())
更新
原来我需要使用 pred.zoib
而不是 predict
因为我的数据是 zero-and-one inflated
,简单地用一个替换另一个是行不通的,并给出了这个错误:
Error in FUN(X[[i]], ...) : object 'yield' not found
因此,对于如何调整@Adela 对原始问题的回答以完成相同 objective 但现在使用 zoib
package instead of betareg
package.
的任何想法,我将不胜感激。
给出示例代码:
library(zoib)
re.md <- zoib(yield ~ temp | 1 | 1, data=GasolineYield,
joint = FALSE, random=1, EUID=GasolineYield$batch,
zero.inflation = FALSE, one.inflation = FALSE,
n.iter=3200, n.thin=15, n.burn=200)
您需要预测 temp
值超出范围 200-450
的新数据。
看我的例子:
# predict with new data
df <- data.frame(yield = predict(md, data.frame(temp = seq(100, 600, 0.01))),
temp = seq(100, 600, 0.01))
# plot
ggplotly(
ggplot() +
geom_point(data = GasolineYield,
aes(x = temp, y = yield, fill = batch),
size = 4, shape = 21) +
xlim(100, 600) +
geom_line(data = df, aes(y = yield, x = temp), col="red") +
theme_classic())
我有下面的示例数据集和代码,非常感谢您帮助从 beta 回归模型向曲线添加趋势,以便可视化变量值 yield
的期望值 temp
超出范围 200-450
.
library(ggplot2)
library(plotly)
library(betareg)
data("GasolineYield", package = "betareg")
md <- betareg(yield ~ temp, data = GasolineYield,
link = "cloglog")
ggplotly(
ggplot(GasolineYield, aes(x = temp, y = yield)) +
geom_point(size = 4, aes(fill = batch), shape = 21) +
geom_line(aes(y = predict(md, GasolineYield)), col="red") +
theme_classic())
更新
原来我需要使用 pred.zoib
而不是 predict
因为我的数据是 zero-and-one inflated
,简单地用一个替换另一个是行不通的,并给出了这个错误:
Error in FUN(X[[i]], ...) : object 'yield' not found
因此,对于如何调整@Adela 对原始问题的回答以完成相同 objective 但现在使用 zoib
package instead of betareg
package.
给出示例代码:
library(zoib)
re.md <- zoib(yield ~ temp | 1 | 1, data=GasolineYield,
joint = FALSE, random=1, EUID=GasolineYield$batch,
zero.inflation = FALSE, one.inflation = FALSE,
n.iter=3200, n.thin=15, n.burn=200)
您需要预测 temp
值超出范围 200-450
的新数据。
看我的例子:
# predict with new data
df <- data.frame(yield = predict(md, data.frame(temp = seq(100, 600, 0.01))),
temp = seq(100, 600, 0.01))
# plot
ggplotly(
ggplot() +
geom_point(data = GasolineYield,
aes(x = temp, y = yield, fill = batch),
size = 4, shape = 21) +
xlim(100, 600) +
geom_line(data = df, aes(y = yield, x = temp), col="red") +
theme_classic())