簡體   English   中英

對於以下場景,在 R 中使用哪個更合適的預測模型

[英]Which one the is more appropriate predictive model to use in R for the following scenario

我在 x 軸上的值從 300 毫米到 0.075 毫米,在 y 軸上的值從 0 到 100。我需要預測 x = 0.002 的值。 需要使用半對數圖進行繪圖。 我嘗試通過以下方式使用lm函數:

f2 <- data.frame(sievesize = c(0.075, 1.18, 2.36, 4.75), weight = c(55, 66.9, 67.69, 75)
f3 <- data.frame(sievesize = 0.002)
model1 <- lm(weight ~ log10(sievesize), data = f2)
pred3 <- predict(model1, f3)

有沒有更好的方法來預測 0.002 的值?

除了計算預測區間以了解預測的誤差幅度(它將顯示為 38.5 毫米 +/- 21 毫米)之外,您不能對數據做太多事情:

  • 在您的實驗數據范圍內只有四個點(約 18 字節的數據)。
  • 0.002 毫米篩網尺寸超出您的數據范圍 [0.075, 4.75]。 不幸的是,任何模型的這種外推都會導致巨大的預測誤差。
  • 您在線性對數圖中擬合的非線性關系在接近零時具有不連續性
  • 數據分布在一個非常窄的范圍內,呈指數相關。

請看下面的代碼:

f2 <- data.frame(sievesize = c(0.075, 1.18, 2.36, 4.75), weight = c(55, 66.9, 67.69, 75))
f3 <- data.frame(sievesize = c(0.002))

m_lm <- lm(weight ~ log10(sievesize), data = f2)
fit_lm <- predict(m_lm, f3, interval = "prediction")
fit_lm

pred_x <- data.frame(sievesize = seq(0.001, 5, .01))
fit_conf <- predict(m_lm, pred_x, interval = "prediction")
# fit      lwr      upr
# 1 38.46763 17.73941 59.19586

plot(log10(f2$sievesize), f2$weight, ylim = c(0, 85), pch = 16, xlim = c(-3, 1))
points(log10(f3$sievesize), fit_lm[, 1], col = "red", pch = 16)
lines(log10(pred_x$sievesize), fit_conf[, 1])
lines(log10(pred_x$sievesize), fit_conf[, 2], col = "blue")
lines(log10(pred_x$sievesize), fit_conf[, 3], col = "blue")
legend("bottomright",
       legend = c("experiment", "fitted line", "prediction interval", "forecasted"),
       lty = c(NA, 1, 1, NA), 
       lwd = c(NA, 1, 1, NA),
       pch = c(16, NA, NA, 16), 
       col = c("black", "black", "blue", "red"))

以及說明上述要點的圖表: 圖形

因此,使用一些先進的技術,如非線性擬合、glm 或貝葉斯回歸等,不會帶來額外的見解,因為數據集非常小且分布在非常窄的范圍內。

暫無
暫無

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

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