Reputation: 1740
I'm trying to forecasting on a time series that looks like this (this is testing data)
[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
I get the data from a US state. Let's say Alabama like this
res <- subset(d, states == 'Alabama', select = c(levels, weeks))
I then turn the levels data into a time series like this.
tsn = ts(res[[1]])
I then get the best arima model fit like this
aa <- auto.arima(tsn)
For which the result is this
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
I then try to use the forecast function like this
forecast(aa)
And this is when I get this error
Error in forecast(aa) : unused argument (aa)
Any idea how to make the forecast work?
Edit to add code
This is how the data looks like
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
This is how the code looks like
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
}
Upvotes: 0
Views: 2243
Reputation: 3243
The variable aa
is the model estimate for the data d
. Use ARIMA(1,0,0)
from aa
and plug it into forecast.Arima
as follows.
f <- forecast.Arima( d, order=c(1,0,0) )
I did some examples a while back on my blog. Good luck!
Upvotes: 2