【问题标题】:plot regression line in R在R中绘制回归线
【发布时间】:2017-02-05 19:18:48
【问题描述】:

我想在 R 中绘制一条简单的回归线。我已输入数据,但回归线似乎不正确。有人可以帮忙吗?

x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8)
df <- data.frame(x,y)
plot(y,x)
abline(lm(y ~ x))

【问题讨论】:

  • 无论如何,OP 都在有效地绘制抛物线。很难得到一个有意义的 linear 线最适合它。
  • 对。我想代表 OP 需要更多信息,关于他们正在寻找的最佳拟合线是否应该更抛物线,或者关于你提到的错字......这还有待观察!
  • 首先,我只是想获得代码方面的帮助,因为我不知道它有什么问题,因为它给了我错误的情节。看到这个情节后,我开始觉得我可能做错了。我不是来这里寻求家庭作业帮助的。我发布这张照片只是为了澄清。
  • 图表中的 y 和 x 颠倒了,这就是为什么这条线很低。

标签: r plot regression linear-regression lm


【解决方案1】:
  1. 正如我上面所说,原始问题中的图表切换了 x 轴和 y 轴
  2. 线性模型答案是该问题的最佳答案,因为这是所问的。
  3. 其他答案解决了进一步的建模选择,例如上面的最佳三次模型或下面的最佳二次模型。这只是结合了上面的推理。
    x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
    y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8)
    summary(lm(y~x))
    plot(x,y)
    abline(lm(y ~ x)) # black answer 1
    ########################
    fit <- lm(y ~ poly(x, 2))   ## polynomial of degree 2
    y0 <- predict.lm(fit)  ## predicted values
    lines(x, y0, col = 2)  ##  predicted poly red color
    #y1 <- predict(fit, interval = "prediction")
    [![#lines(x, y1\[,1\], col = 3)  same as y1 green color   # answer 2
    #########################
    w <- 1 + (x-1)^2  # with weights
    wfit <- lm(y ~ poly(x,2), weights = w)
    y2 <- predict(wfit, interval = "prediction")
    lines(x, y2\[,1\], col = 4) # blue    # answer 3

【讨论】:

    【解决方案2】:
    x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
    y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8)
    
    df <- data.frame(x,y)
    
    plot(y ~ x, df)
    model <- lm(y ~ x, df)
    

    您正在尝试将线性函数拟合到抛物线数据。因此,您最终不会得到一条最合适的线。

    这样的事情可能会奏效:

    model <- lm(y ~ I(x^2), df)
    
    plot(y ~ x, df)
    lines(df$x, predict(model), col = 'blue')
    

    虽然这不太适合,但我们可以尝试 3 阶或 4 阶多项式模型:

    model <- lm(y ~ I(x^3), df)
    lines(df$x, predict(model), col = 'red')
    model <- lm(y ~ I(x^4), df)
    lines(df$x, predict(model), col = 'green')
    

    虽然它们也不太合身。找哲元的答案寻找更合适的函数。

    【讨论】:

    • 这就是答案。 **原始图表的 x 轴和 y 轴颠倒了。 ** 线性方程为 y = 25.3 - 0.08x。二阶近似会给你一个抛物线(二次近似)上面没有显示。上面进行了三阶近似。但最初的问题是最佳线性近似。
    【解决方案3】:

    哦,@GBR24 有很好的格式化数据。然后我将根据我的评论详细说明。

    fit <- lm(y ~ poly(x, 3))   ## polynomial of degree 3
    plot(x, y)  ## scatter plot (colour: black)
    
    x0 <- seq(min(x), max(x), length = 20)  ## prediction grid
    y0 <- predict.lm(fit, newdata = list(x = x0))  ## predicted values
    lines(x0, y0, col = 2)  ## add regression curve (colour: red)
    

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 2015-03-19
      • 1970-01-01
      • 2016-08-09
      • 2013-07-11
      • 2020-05-08
      • 2019-05-19
      • 2014-06-13
      相关资源
      最近更新 更多