plotting a curvilinear line of best fit
在图表上绘制最佳拟合曲线的正确方法是什么?我试图提供一个回归模型作为线的参数 - 而不是特定点。在下面的模型中,正确的线应该是完美的拟合(因为数据中没有噪音)。如何从线性模型中绘制最佳拟合线?
1 2 3 4 5 6 | 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 |
要使用
1 2 3 | library(lattice) vals<-data.frame(x=1:10,y=(1:10)^2) xyplot(x~y,data=vals,type=c("p","smooth")) |
替代方案,如果您出于某种原因确实想要对此进行线性回归,您的代码将如下所示
1 2 3 | library(lattice) vals<-data.frame(x=1:10,y=(1:10)^2) xyplot(x~y,data=vals,type=c("p","r")) |
你的图表看起来像这样
我认为您可能正在颠倒公式中参数的顺序,因为 y 与 x 的常规图将从
1 2 | xyplot(x~y,data=vals) plot(vals$y, predict( lm(x~poly(y, 2), data=vals)) ) |
这不是一个精确的拟合,因为您正在绘制 x 对 x 的平方根。
1 2 3 4 5 6 | 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 |
另一种方法(确实给出了精确的拟合)是在公式中使用
1 2 3 | 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') |