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')
我想在我的情节上生成一条拟合线。但是,我用上面的代码得到了一个奇怪的情节。有人可以帮我吗?
答案 0 :(得分:1)
复制评论:您需要按x值对x和y进行排序。您还应该学习使用公式主体中没有data.frame名称的公式,并使用data参数作为数据框名称。 donvoter可能是对缺乏数据示例的反应,但是从绘制的图片中可以清楚地看出错误的来源。
我使用此代码在以前称为“注释”的文本中测试了我的建议,它似乎提供了预期的结果:
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