2016-02-26 138 views
0

我想绘制只有几个回归线而不是任何点。 (没有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') 

Plot

但是,如果我尝试创建多项式回归,我不能做到这一点。我想要得到与这些回归相同的情节,但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) 
+0

制作想要绘制的x值,然后使用预测函数获取预测值。 – Dason

+0

@Dason能否更精确地解释如何去做。 我创建了一个新的x值,但它仍然不起作用。 (数据帧)(nd = data.frame(x = seq(0,8,length = 8)) test = predict(Def_exp,newdata = nd)' –

回答

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") 

这将是这个样子: resulting plot

希望它能帮助。

+1

谢谢你的回应,然而'y = predict(Off_exp,newdata = list(OBPM = x.grid))'不起作用,因为我没有任何设置为x.grid。如果我设置了'x.grid = OPBM',那么当绘图说''x'和'y'长度不同时,我会得到一个错误,这是有道理的,因为Y是OBPM的长度,而X就像20 –

+0

我已经修正回应,抱歉,愚蠢的错字。干杯。 – lrnzcig