我正在尝试将二阶曲线添加到散点图中。 我已经阅读了以前类似问题的答案,这就是我想出的:
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)
仍然,我得到线性段而不是平滑曲线。 我在这里看不到什么错误?谢谢!
答案 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))