我试图预测一个看起来像这样的时间序列(这是测试数据)
[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
}
答案 0 :(得分:2)
变量aa
是数据d
的模型估算值。使用ARIMA(1,0,0)
中的aa
并将其插入forecast.Arima
,如下所示。
f <- forecast.Arima( d, order=c(1,0,0) )
我在我的blog上做了一些例子。祝你好运!