【问题标题】:Plot multiple polynomial regression curve绘制多项式回归曲线
【发布时间】:2016-06-10 09:12:11
【问题描述】:

我试图只绘制几条回归线,而不是任何点。 (没有fitted,因为我有超过 7000 个点。)我知道如何使用线性回归来做到这一点,但不知道如何使用多项式回归。我的数据是here。使用一些线性回归:

plot_data=read.csv("plot_data.csv") #read data

#linear regressions
Off_linear=lm(Z_Salary~OBPM,data=plot_data) 
Def_linear=lm(Z_Salary~DBPM,data=plot_data)
Tot_linear=lm(Z_Salary~BPM,data=plot_data)   

#try to plot. This works. Not sure how to add legend
termplot(Def_linear, ylab='Z_Salary',xlab='BPM',ylim=c(-2, 2))
abline(Off_linear)
abline(Tot_linear,col='blue')

但是,如果我尝试创建多项式回归,我将无法做到这一点。我想要与这些回归相同的情节,但termplot 确实可以将自变量一起使用并单独进行。

Off_exp=lm(Z_Salary~OBPM+I(OBPM^2),data=plot_data)
Def_exp=lm(Z_Salary~DBPM+I(DBPM^2),data=plot_data)
Tot_exp=lm(Z_Salary~BPM+I(BPM^2),data=plot_data)

【问题讨论】:

  • 制作要绘制的 x 值,然后使用 predict 函数获取预测值。
  • @Dason 你能更准确地解释一下如何做到这一点。我创建了一个新的 x 值,但它仍然不起作用。 nd=data.frame(x=seq(0,8,length=8)) test=predict(Def_exp,newdata=nd)

标签: r plot regression


【解决方案1】:

@Dason 已经给了你提示。在下面找到一些代码以使其工作。

Off_exp=lm(Z_Salary~OBPM+I(OBPM^2),data=plot_data)
x=seq(from=range(plot_data$OBPM)[1], to=range(plot_data$OBPM)[2])
y=predict(Off_exp, newdata=list(OBPM=x))
plot(x, y, type="l", col="blue", xlab="OBPM", ylab="Z_Salary")
legend("topleft", legend="d2", col="blue", lty=1, title="polys")

它看起来像这样:

希望对你有帮助。

【讨论】:

  • 感谢您的回复,但是 y=predict(Off_exp, newdata=list(OBPM=x.grid)) 不起作用,因为我还没有将任何东西设置为 x.grid。如果我设置x.grid=OPBM,那么在绘制“'x' 和 'y' 长度不同”时会出现错误,这是有道理的,因为 Y 是 OBPM 的长度,而 X 是 20
  • 我已经更正了回复,抱歉有一个愚蠢的错字。干杯。
猜你喜欢
  • 2014-06-13
  • 2023-01-17
  • 2020-05-08
  • 2020-06-13
  • 2014-02-17
  • 2017-02-21
相关资源
最近更新 更多