r - ggplot2 上具有多个解释变量的模型的预测线

标签 r ggplot2 transformation predict

我的问题是这个 question 的后续问题我几个小时前问过。查看这篇文章将有助于理解接下来的问题。

我制作了一个包含 1 个响应变量和 2 个解释变量的模型,其中一个是一个因素。

在我的模型中,响应变量被转换。我想在图表上显示我的变量,但我希望不转换解释变量。此外,我想添加我的模型给出的预测线,为此应该对其进行反向转换!为了增加一点难度,我想在 ggplot 上完成。

我的问题是如何扩展@Roland's solution到 ggplot 和几个解释变量?

这是一个例子:

设置种子(12)

resp = (rnorm(120)+20)^3.79
expl1 = rep(c(1,2,3,4),30)
expl2 = rep(1:3,40)
df = data.frame(resp=resp,expl1=expl1,expl2=expl2)

m=lm(resp~expl1*factor(expl2), data=df)
ggplot(data=df,aes(y=resp,x=expl1,shape=factor(expl2)))+geom_point() + geom_smooth(se=F)

我想要的不是显示的线条,而是反向转换后我的模型的预测值。我可以在 geom_smooth 中添加 method='lm', formula =resp~expl1*factor(expl2) 但无论我是否转换 resp我会不会有同样的问题。这条线要么因为变形而不适合,要么与我的模型不对应。

希望我的问题有道理!感谢您的帮助!

最佳答案

您可以将 predict 与多个解释变量一起使用,就像它在上一个问题的答案中的使用方式一样。然后,您只需要将您的预测反向转换为原始比例。预测位于不同的 data.frame 中,因此如果我使用 ggplot,我通常会使用原始 data.frame 绘制绘图并添加点,然后使用预测的 data.frame 绘制线条。

# A transformed response
df$resp2 = df$resp^(1/3.79)

m2 = lm(resp2 ~ expl1 * expl2, data=df)

plotexpl = seq(1, 4, by = .1)
# Use expand grid to make dataset for predictions
newdat = expand.grid(expl1 = plotexpl, expl2 = c("1", "2", "3"))
newdat$pred = predict(m2, newdata = newdat)

# Back-transform predictions
newdat$back = newdat$pred^3.79

require(ggplot2)
ggplot(df, aes(x = expl1, y = resp, color = expl2)) +
    geom_point() + geom_line(data = newdat, aes(y = back) )

关于r - ggplot2 上具有多个解释变量的模型的预测线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18514043/

相关文章:

r - plotly 否决 ggplot 2's scale_fill_manual' s 标签

asp.net - 文件转换,是否可以将自动增量添加到设置中

r - 如何重新排列两个数据帧之间的匹配顺序

r - 如何通过重新绘制图形来制作简单的 "animation"

r - 如何在时间序列(R 中)的季节性调整分量上拟合具有 ARIMA 误差的回归模型?

r - 从r中嵌套列表中第一项的总和中减去一个

r - 如何在 R 中按组计算 SD,而不丢失在 ggplot2 中绘图仍需要的列?

R:将平均绩点可视化为(某种) fiddle 图

Java:遍历目录中的 HTML 文件

对其自然语言描述的 SQL 查询