【问题标题】:ARIMA time series forecasting not working in RARIMA 时间序列预测在 R 中不起作用
【发布时间】:2015-09-27 17:26:25
【问题描述】:

我正在尝试对看起来像这样的时间序列进行预测(这是测试数据)

[1] 1 1 1 1 4 1 3 4 5 6 5 1 1 1 1 1 5 3 4 7 5 5 6 4 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 2

我从美国某个州获得数据。假设像这样的阿拉巴马州

res <- subset(d, states == 'Alabama', select = c(levels, weeks))

然后我将关卡数据变成这样的时间序列。

tsn = ts(res[[1]])

然后我得到这样的最佳 arima 模型

aa <- auto.arima(tsn)

结果是这样的

Series: tsn 
ARIMA(1,0,0) with non-zero mean 

Coefficients:
         ar1  intercept
      0.4722     2.2833
s.e.  0.1252     0.4644

sigma^2 estimated as 2.989:  log likelihood=-94.51
AIC=195.03   AICc=195.57   BIC=200.64

然后我尝试像这样使用预测功能

forecast(aa)

这是我收到此错误的时候

Error in forecast(aa) : unused argument (aa)

知道如何进行预测吗?

编辑以添加代码

这就是数据的样子

st      URL                         WEBSITE                 al      aln     wk          WEEKSEASON
Alabama http://adph.org/influenza/  Influenza Surveillance  Level 1 Minimal Oct-04-2008 40  2008-09
Alabama http://adph.org/influenza/  Influenza Surveillance  Level 1 Minimal Oct-11-2008 41  2008-09
Alaska  http://adph.org/influenza/  Influenza Surveillance  Level 1 Minimal Oct-18-2008 42  2008-09
Alaska  http://adph.org/influenza/  Influenza Surveillance  Level 1 Minimal Oct-25-2008 43  2008-09

这就是代码的样子

library(forecast)
library(tseries)

#Extracts relevant data from the csv file
extract_data<-function(){

  #open the file. NAME SHOULD BE CHANGED
  sd <- read.csv(file="sdr.csv",head=TRUE,sep=",")

  #Extracts the data from the ACTIVITY LEVEL column. Notice that the name of the column was changed on the file
  #to 'al' to make the reference easier
  lv_list <- sd$al
  #Gets only the number from each value getting rid of the word "Level"
  lvs <- sapply(strsplit(as.character(lv_list), " "), function(x) x[2])

  #Gets the ACTIVITY LEVEL NAME. Column name was changed to 'aln' on the file
  lvn_list <- sd$aln

  #Gets the state. Column name was changed to 'st' on the file
  st_list <- sd$st

  #Gets the week. Column name was changed to 'wk' on the file
  wlist <- sd$wk
  #Divides the weeks data in month, day, year
  wks <- sapply(strsplit(as.character(wlist), "-"), function(x) c(x[1], x[2], x[3]))

  #Creates a data frame with the selected results. You can choose which data is needed.
  result<-data.frame("states"=st_list,"levels"=lvs,"lvlnames"=lvn_list,"weeks"=wlist)  

  return(result)

}

forecast<-function(){

  d=extract_data()

  #Get data from each state
  res <- subset(d, states == 'Alabama', select = c(levels, weeks))

  #turn data into a time series
  tsn = ts(res[[1]])

  #Plot forecast data with ARIMA models (use differenciated data if needed)
  aa <- auto.arima(tsn)
  forecast(aa)

  return(0) #return results
}

【问题讨论】:

  • forecast(auto.arima(ts(c( 1, 1, 4, 1, 3, 4 )))) 为我工作。

标签: r forecasting


【解决方案1】:

变量aa 是数据d 的模型估计值。使用aa 中的ARIMA(1,0,0) 并将其插入forecast.Arima,如下所示。

f <- forecast.Arima( d, order=c(1,0,0) )

不久前我在blog 上做了一些示例。祝你好运!

【讨论】:

  • 它实际上是通过将 auto.arima 的结果提供给 forecast.Arima 函数来工作的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 2019-08-10
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 2021-03-23
  • 2020-09-05
  • 1970-01-01
相关资源
最近更新 更多