将趋势添加到从 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())