【问题标题】:Plot Non-linear Plot for Linear Regression in R为 R 中的线性回归绘制非线性图
【发布时间】:2012-01-12 00:50:57
【问题描述】:
y<-c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200);
x<-c(1,3,5,7,9,11);
d<-data.frame(x,y)
myLm<-lm(x~y**2,data=d)
plot(d)
lines(x,lm(y ~ I(log(x)) + x,data=d)$fitted.values)
lines(x,lm(y ~ I(x**2) + x,data=d)$fitted.values) % not quite right, smooth plz

应该是流畅的剧情,有问题。

帮助问题

  1. What algorithm is used in linear regression?
  2. Explain least squares plotting with Ones -matrix

【问题讨论】:

  • 什么是“尽管如此点数或合规性”是什么意思?
  • 他多次编辑帖子,改变了他的话等。AndresT 和我昨晚试图提供帮助,但是,问题的术语一直在变化。

标签: r plot regression least-squares


【解决方案1】:

您需要predict 才能在拟合点之间插入预测。

d <- data.frame(x=seq(1,11,by=2),
                y=c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200))
lm1 <-lm(y ~ log(x)+x, data=d)
lm2 <-lm(y ~ I(x^2)+x, data=d)
xvec <- seq(0,12,length=101)
plot(d)
lines(xvec,predict(lm1,data.frame(x=xvec)))
lines(xvec,predict(lm2,data.frame(x=xvec)))

【讨论】:

  • 是的,在他最终编辑他想要的只是一条抛物线之后,在一系列 x 轴点上的 predict() 是正确答案。请注意他的第一次拟合仍然如何将 y 建模为 y 的函数。那好吧。我相信他现在会更新我提到的。
  • 如果我有多个变量,而不是只有一个自变量,我该怎么办。
  • @FrankWANG:您可能应该发布一个新问题,引用这个问题,并提供适当的细节(例如,一个可重复的问题:tinyurl.com/reproducible-000)。简短的回答,您必须在(1)生成曲面图之间做出决定; (2) 绘制一条或多条预测线(或子图),除一个预测变量外,所有预测变量都保持在指定值。
【解决方案2】:

强制ggplot2方法:

library(ggplot2)
qplot(x,y)+stat_smooth(method="lm", formula="y~poly(x,2)", se=FALSE)

【讨论】:

  • 同一张图片可以有很多情节吗?这显然是一些不同的环境,所以我不能使用 plot(1:10,1:10); lines(1:10, 1:10*2) 等样式。
  • 是的,只需添加额外的图层或美学,例如:dfr &lt;- data.frame(x=rep(1:10,2),y=c(1:10,(1:10)^2),type=c(rep("linear",10),rep("squared",10))); qplot(x,y,data=dfr,geom="line",colour=type)
  • 另外 ggplot2 使用网格图形系统而不是基础图形系统,因此命令和范例不同,请参阅 had.co.nz/ggplot2
【解决方案3】:

类似:

 plot(d)    
 abline(lm(x~y**2,data=d), col="black")

会成功(如果是线性的,正如首先提出问题的方式所暗示的那样)

我认为你在寻找什么:

  lines(smooth.spline(x, y))

可能会按照 Dirk 的提示工作。

【讨论】:

  • 可能不完全是因为他正在拟合回归量为平方的线性模型。
【解决方案4】:

您应该花一些时间阅读程序随附的“An Introduction R”手册的“附录 A:示例会话”。但这是一个开始

R> y<-c(0.0100,2.3984,11.0256,4.0272,0.2408,0.0200);
R> x<-c(1,3,5,7,9,11);
R> d<-data.frame(x,y)
R> myLm<-lm(x~y**2,data=d)
R> myLm

Call:
lm(formula = x ~ y^2, data = d)

Coefficients:
(Intercept)            y  
      6.434       -0.147  

我们可以将其绘制为(我现在更正了您对 x 和 y 角色的异常颠倒):

R> plot(d)
R> lines(d$y,fitted(myLm))

【讨论】:

  • ...错误的二次回归,这是线性的。
  • 就是这样:您正在对变量的非线性变换拟合一个线性模型。您可以创建x2 &lt;- x^2,然后回归y ~ x2 并将其绘制在(y,x2) 空间中。如果您想要一个非线性回归,您需要一个不同的函数,例如nls()。或样条。或加法模型。或者,或者,或者……
  • 现在看问题,现在清楚了吗。没有模糊的句子,只有一张清晰的图片——明白我想要实现的目标吗?
  • 你能不能对你提供免费课程的人再粗鲁一点?
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2017-03-17
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多