在 r 中绘制拟合线

plot fitted line in r

fit_bmi <- glm(df$genhlth_NC ~ poly(df$bmi_NC, 2, raw = TRUE))
plot(df$bmi_NC, df$genhlth_NC, col=rgb(red=0.2, green=0.2, blue=1.0, alpha=0.01))
lines(df$bmi_NC, predict(fit_bmi), col = 'red')

我想在我的绘图上生成一条拟合线。但是,我用上面的代码得到了一个奇怪的情节。有人可以帮我吗?

复制评论:您需要按 x 值对 x 和 y 进行排序。您还应该学习使用公式正文中没有 data.frame 名称的公式,并使用数据参数作为数据框名称。 donvoter 可能对缺少数据示例做出了反应,但从绘制的图片中可以清楚地看出错误的来源。

我用这段代码测试了我在以前称为 "comment" 的文本中的建议,它似乎提供了预期的结果:

fit_bmi <- glm(genhlth ~ poly(bmi, 2, raw = TRUE), data=dat)
plot(genhlth ~ bmi, data=dat)
lines(dat$bmi[order(dat$bmi)], predict(fit_bmi)[order(dat$bmi)],lwd=3, col = 'red')

这是一个 dat-对象,我认为它的结构与您的数据对象相似:

dat <- data.frame(genhlth = sample(1:5, size=100, repl=TRUE,
                                   prob=c(.1, .2, .3, .2, .2) ),
                   bmi = rnorm(100,30,5) )
table(dat$genhlth)
#------------
 1  2  3  4  5 
 6 24 25 30 15