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

时间:2015-09-27 17:26:25

标签: r forecasting

我试图预测一个看起来像这样的时间序列(这是测试数据)

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

1 个答案:

答案 0 :(得分:2)

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

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

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