【问题标题】:Comparing a linear regression with a log-linear regression with R将线性回归与对数线性回归与 R 进行比较
【发布时间】:2020-11-01 08:18:26
【问题描述】:

我有一个 R 模型,我在其中对本田思域的价格进行了回归:

civic <- read.csv("civic.csv")
c <- civic

plot (c$Mileage, c$Price,
      xlab = "Mileage",
      ylab = "Price")

regrPM1 <- lm(Price~Mileage, data = c)

abline (regrPM1, col="red",lwd=3)

这给了我以下信息:

到目前为止一切顺利。现在我有了另一个模型:

regrPM2 <- lm(log(c$Price)~c$Mileage)

我想将对应的回归线从上方添加到 Plot1 中。 当我使用 abline 命令时:

abline(regrPM2, col="green", lwd=3)

结果如下图:

现在这不能用来比较两个模型。我正在寻找一种不使用“对数”比例来比较它们的方法。 我认为,我可以使用曲线需求来获得更好的结果,但这还没有成功。

感谢您的任何帮助!

【问题讨论】:

  • 这不是因为'log'的比例,即你的原始情节是基于c$Price而不是log(c$Price),即尝试plot(c$Mileage, log(c$Price), xlab = "Mileage", ylab = "Price")
  • 谢谢,不幸的是,任务不允许这样做 - 必须有其他方法来比较这两者
  • 关于this doesn't look right 的评论。这只是由于规模。
  • 你说得对,我最好指定这个

标签: r regression data-science


【解决方案1】:

这不是原始比例的直线。您可以按照以下方式进行操作,以在原始比例上显示非线性预测。

DF <- data.frame(Mileage=seq(1, 150000, 1))
pred <- predict(regrPM2, newdata=DF)
lines(DF$Mileage, exp(pred))

这必须在您使用plot()创建初始图之后运行

【讨论】:

    【解决方案2】:

    没有数据很难证明这里出了什么问题,所以我将尝试创建一些与您的大致相似的内容:

    set.seed(69)
    
    m <- rgamma(5000, 2, 2) * 30000
    p <- 3e4 * log((rnorm(5e3, 1e4, 1e3) + m)/(m + rnorm(5e3, 5e3, 5e2)) + rgamma(5000, 2, 2)/8)
    
    c <- data.frame(Mileage = m, Price = p)
    
    plot (c$Mileage, c$Price,
          xlab = "Mileage",
          ylab = "Price")
    

    这对于演示来说已经足够接近了。

    现在我们可以使用您的代码添加线性回归线:

    regrPM1 <- lm(Price~Mileage, data = c)
    
    abline (regrPM1, col="red",lwd=3)
    

    现在,如果我们对里程价格的对数进行回归,我们将得到与您使用abline 绘制结果相同的平坦绿线:

    regrPM2 <- lm(log(c$Price)~c$Mileage)
    abline(regrPM2, col="green", lwd=3)
    

    这是因为我们在(未记录的)图上绘制了价格的对数。我们想取回归结果的反对数并绘制它。

    请注意,最好在我们的lm 调用中使用data 参数,所以让我们这样做:

    regrPM3 <- lm(log(Price) ~ Mileage, data = c)
    

    现在,我们不再尝试将其绘制为一条直线,而是以固定间隔对其预测的反对数并绘制它们:

    lines(seq(0, 2e5, 1e3), 
          exp(predict(regrPM3, newdata = list(Mileage = seq(0, 2e5, 1e3)))),
          col = "blue", lty = 2, lwd = 4)
    

    所以蓝色虚线是对数回归的样子。

    【讨论】:

    • 除此之外,points(c$Mileage,exp(regrPM3$fitted.values),col="green",lwd=1,pch=20) 还将拟合值放在图上。
    猜你喜欢
    • 2012-10-28
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2018-07-31
    • 1970-01-01
    • 2019-03-27
    • 2013-02-11
    相关资源
    最近更新 更多