ARIMA 时间序列预测在 R 中不起作用

ARIMA time series forecasting not working in R

我正在尝试预测如下所示的时间序列(这是测试数据)

[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
}

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

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

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