在R中添加二阶拟合散点图

时间:2015-04-09 08:52:17

标签: r

我正在尝试将二阶曲线添加到散点图中。 我已经阅读了以前类似问题的答案,这就是我想出的:

x<-log2(c(100,500,1000,2000,4000))
y<-c(3.6,1.308,1.065,.960,.908)
plot(x,y,pch=1)
mod_<-lm(y~poly(x,2,raw=TRUE))
lines(x,predict(mod_),col='red',lty=2)

仍然,我得到线性段而不是平滑曲线。 我在这里看不到什么错误?谢谢!

2 个答案:

答案 0 :(得分:3)

您仅通过传递模型来调用predict。这只会导致模型按照您在lm调用中指定的值(即x)进行评估。

您需要提供一组新的值来评估模型。

例如,这为你提供了一个很好的平滑线:

x<-log2(c(100,500,1000,2000,4000))
y<-c(3.6,1.308,1.065,.960,.908)
plot(x,y,pch=1)
mod_<-lm(y~poly(x,2,raw=TRUE))
# Define the new points at which you want to evaluate your model
new.x <- seq(6, 12, 0.1)
lines(new.x, predict(mod_, newdata = list(x=new.x)),col='red',lty=2)

答案 1 :(得分:1)

你也可以像这样使用ggplot2

library(ggplot2)
df <- data.frame(x, y)
ggplot(data=df, aes(x, y))+geom_point()+stat_smooth(method="lm", formula = y ~ poly(x, 2, raw =TRUE))