簡體   English   中英

如何在 R 中正確使用預測 function

[英]How to properly use the predict function in R

首先我要給你一些入門代碼:

library(ggplot2)

y = c(0, 0, 1, 2, 0,  0, 1,  3,  0,  0,  3, 0, 6, 2, 8, 16, 21, 39, 48, 113, 92, 93 ,127, 159, 137, 46, 238, 132 ,124, 185 ,171, 250, 250 ,187, 119 ,151, 292,  94, 281, 146, 163 ,104, 156, 272, 273, 212, 210, 135, 187, 208, 310, 276 ,235, 246, 190, 232, 254, 446,
314, 402 ,276, 279, 386 ,402, 238, 581, 434, 159, 261, 356, 440, 498, 495, 462 ,306, 233, 396, 331, 418, 293 ,431 ,300, 222, 222, 479 ,501, 702
,790, 681)
x = 1:length(y)

現在,我試圖預測第 90 個數據點將使用多項式回歸,其中數據#1 為 0,#89 為 681。我已經測試了我的 model,我決定將多項式曲線8度是完美的契合。

我已經嘗試了代碼predict(formula=y~poly(x,8),90)並且它給出了一些奇怪的錯誤(這對我來說沒有意義)關於如何沒有適用的方法。

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "c('double', 'numeric')"

為什么這不起作用? 在搜索了無數 R 文檔、博客和論壇之后,在我看來,這應該可以正常工作。

相反,什么有效? 我嘗試過使用預測方法的其他方法,我認為這是最接近我想要的解決方案:第 90 個數據點的預測值。

還有其他建議嗎? 我不確定我的 model 是不是最好的,我歡迎您提出任何建議。 例如,您可能會爭辯說使用 6 次多項式比 8 次多項式進行建模更好,如果您有正當理由,我會同意您的看法。

謝謝!

注意:請不要刪除謝謝。 我知道一些 Stack Overflowers討厭它,但我覺得它給人一種個人風格。

predict適用於模型。 您有一個公式,但沒有 model。 您需要先安裝 model,然后對其進行預測。

通常這分兩步完成,因為通常人們希望保存 model,因此它不僅可以用於單個預測 - 可能檢查系數,檢查假設,獲得 model 擬合診斷,做出不同的預測 - 無需重新安裝 model。

在這里,我將使用最簡單的 model 可以采用您的公式lm ,它代表“線性模型”。 您還可以使用 GLM、黃土、隨機森林、GAM、神經網絡或......許多許多不同的模型。

my_model = lm(formula=y~poly(x,8))
predict(my_model, newdata = list(x = 90))
#        1 
# 977.9421 

當然,您可以將其組合成一行,而不必費心保存和命名my_model

predict(lm(formula=y~poly(x,8)), newdata = list(x = 90))

我不確定我的 model 是最好的,

它不是。 幾乎肯定。 但這沒關系 - 很難知道 model 在任何意義上都是最好的。

我歡迎您提出任何建議。 例如,您可能會爭辯說,使用 6 次多項式比 8 次多項式進行建模更好,

我認為我從未見過使用過 8 次多項式。 (甚至是第 6 名。)高得離譜。 我不知道你的數據是什么,所以我不能說太多。 如果您有理由認為 8 次多項式是准確的,那么 go 就可以了。 但是,如果您只想擬合一條擺動曲線並向前推斷一點點,那么使用mgcv::gamstats::loess model 的三次樣條曲線將是一個更標准的選擇。

暫無
暫無

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

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