2016-11-17 151 views
2

在圖上繪製最適合的曲線線的正確方法是什麼?我正在試圖提供一個迴歸模型作爲參數,而不是特定的點。在下面的模型中,正確的線應該是一個完美的配合(因爲數據中沒有噪音)。如何繪製線性模型的最佳擬合線?繪製最適合的曲線線

library(lattice) 
vals<-data.frame(x=1:10,y=(1:10)^2) 

xyplot(x~y,data=vals) 
line(lm(x~y,data=vals)) #doesnt work 
abline(vals$x,vals$y) #doesnt work 

enter image description here

+0

你需要使用繪圖或曲線行幫助最合適? –

+1

繪製線....出於某種原因,我嘗試過的語法不起作用(我發誓我在問之前閱讀文檔!) – Rilcon42

+0

您是使用'ggplot2'還是其他庫? –

回答

1

要使用lattice庫得到了迴歸,你需要包括在xyplot功能的類型參數。要得到一個線性迴歸,使用"r"並得到一個非線性迴歸(這是你想要的)使用"smooth"。因此,這是你的代碼應該是什麼樣子

library(lattice) 
vals<-data.frame(x=1:10,y=(1:10)^2) 
xyplot(x~y,data=vals,type=c("p","smooth")) 

"p"是分供方和"smooth"對順利迴歸。這將導致看起來像這樣

enter image description here

替代,如果出於某種原因,並希望在此代碼中的線性迴歸應該是這樣的

library(lattice) 
vals<-data.frame(x=1:10,y=(1:10)^2) 
xyplot(x~y,data=vals,type=c("p","r")) 

和圖表你圖形看起來像這樣

enter image description here

+0

如果我使用'smooth'作爲參數,它不適合線性模型的確切線嗎?它適合黃土版本。沒有辦法直接指定模型?例如,如果我想要適合一個荒謬的線 – Rilcon42

+1

除了內置的光滑和r,你最好的選擇是看看[這裏](http://lattice.r-forge.r-project.org/Vignettes /src/lattice-tricks/regression-lines.pdf)。 –

0

我想你可能會扭轉T的順序他在公式中的論點,因爲y與x的常規圖將從xyplot(y ~ x)返回。但是,如果你真的想用一個二次多項式擬合的線性迴歸,然後用公式中的poly功能和predict功能得到擬合值:

xyplot(x~y,data=vals) 
plot(vals$y, predict(lm(x~poly(y, 2), data=vals))) 

,因爲你是這不是一個精確配合繪製x對x的平方根。

resid( lm(x~poly(y, 2),data=vals)) 
#------------------------------ 
      1   2   3   4   5   6   7 
-0.57799840 -0.01438720 0.28444720 0.35772841 0.26036947 0.06297286 -0.14816950 
      8   9   10 
-0.27107622 -0.18807651 0.23418989 

另一種方式(它給出一個確切的FIT)是使用公式內I功能:

plot(vals$y, fitted(lm(x~I(y^(1/2)), data=vals))) 
points(vals, pch="x", col='red') 
points(vals$y, vals$x, pch="x", col='red') 

enter image description here