2016-02-26 135 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