簡體   English   中英

將線性回歸與對數線性回歸與 R 進行比較

[英]Comparing a linear regression with a log-linear regression with R

我在 R 有一個 model ,我在其中回歸了本田思域的里程價格:

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)

這給了我以下信息:

情節1

到目前為止,一切都很好。 現在我有另一個 model:

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

我想從上面將相應的回歸線添加到 Plot1 中。 當我使用 abline 命令時:

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

它導致以下 plot:

情節2

現在這不能用來比較兩個模型。 我正在尋找一種不使用“對數”比例來比較它們的方法。 我認為,我可以使用曲線需求來獲得更好的結果,但這還沒有奏效。

感謝您提供任何幫助!

這不是原始比例上的直線。 您可以按照以下方式執行某些操作,以在原始比例上顯示非線性預測。

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

這必須在使用plot()創建初始 plot運行

沒有數據很難證明這里出了什么問題,所以我將嘗試創建一些與您的大致相似的內容:

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)

在此處輸入圖像描述

這是因為我們正在(未記錄的)plot 上繪制價格對數。 我們想對回歸結果和 plot 取反對數。

請注意,最好在我們的lm調用中使用data參數,所以讓我們這樣做:

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

現在,與其嘗試將 plot 視為一條直線,不如將其預測的反對數以固定間隔取 plot :

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

在此處輸入圖像描述

所以藍色虛線是對數回歸的樣子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM