gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:28:33 24 4
gpt4 key购买 nike

我的问题是这个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com