2016-11-17 222 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