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 上做了一些例子。祝你好运!
我正在尝试预测如下所示的时间序列(这是测试数据)
[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 上做了一些例子。祝你好运!