我是时间序列分析的新手。我从2009年1月到20013年12月有60个月的月度销售数据,并尝试通过ARIMA模型预测未来6个月的销售情况。我读取数据并将其转换为时间序列对象,如下所示:
data <- read.csv(file="monthlySalesData.csv", header=TRUE)
dataInTimeSeris <- ts(data, frequency = 12, start=c(2009,1), end=c(2013,12))
当我尝试绘制acf()绘图来确定滞后,之后我的自相关性降低到零,然后我得到X轴上的滞后量表(小数)。我没有足够的权限发布图像,但X轴上的滞后值是十进制的,最大滞后为1.5。 plot = FALSE的acf值也很奇怪(它没有显示计算自相关的滞后)。我无法解释这一点,也无法找到自动相关性降至零的滞后数。
acf(dataInTimeSeries, plot=FALSE)
Autocorrelations of series ‘dataInTimeSeries’, by lag
0.0000 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 0.8333
1.000 0.642 0.588 0.490 0.401 0.320 0.311 0.269 0.178 0.198 0.229
0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167
0.271 0.358 0.240 0.210 0.092 0.135 0.098
问题是什么 - R设置或数据导入或ts()功能有问题吗?如果这是每月数据显示的acf图表,如何解释它?
提前致谢!!
答案 0 :(得分:4)
您看到的小数只是几年,例如0.0833 = 1/12年,0.1667 = 2/12年aso。
要获得滞后的ACF情节,您可以尝试以下方式:
## Lacking reproducible example, I use simulated monthly data
tt <- ts(arima.sim(list(order=c(1,0,0), ar=0.4),60), start=2001, deltat=1/12)
## Calculate, but not plot, acf
acfpl <- acf(tt, plot=FALSE)
## Transform the lags from years to months
acfpl$lag <- acfpl$lag * 12
## Plot the acf
plot(acfpl, xlab="Lag (months)")
据我所知,您正在处理的问题是识别ARMA的订单。要做到这一点,你需要ACF和PACF图。当你说&#34;死于零&#34;在一些滞后之后,你不应该期望值等于零。 95%置信区间内的值(蓝色虚线)在统计上不显着(另请参阅?plot.acf
中的注释)。
识别ARIMA模型的顺序可能很棘手,但您可以遵循一些规则。例如。过程AR(p)模型具有像阻尼指数/正弦函数的ACF和具有p显着滞后的PACF。例如。 MA(q)流程则相反。
就这两个简单的情况而言,我使用arima.sim
来模拟两个时间序列,ARIMA(1,0,0)和ARIMA(0,0,1)。
set.seed(1234)
arima100 <- arima.sim(list(order=c(1,0,0), ar=0.9), n=500)
arima001 <- arima.sim(list(order=c(0,0,1), ma=0.9), n=500)
par(mfrow=c(2,2), bycol=TRUE)
acf(arima100); acf(arima001)
pacf(arima100); pacf(arima001)
这会产生以下情节:
ARIMA(1,0,0):ACF衰减为零,PACF有一个显着滞后。 ARIMA(0,0,1):ACF有一个显着的滞后(在滞后0之后始终为1),PACF看起来像一个阻尼正弦函数。
现在,只要看看你的ACF,我就敢说两件事:
您可以遵循以下步骤:
arima
并检查残差另外,阅读一本好书(我使用Henrik Madsen的时间序列分析)或讲义(these look good)可以帮助你很多。
答案 1 :(得分:-1)
使用coredata()
也可以解决问题:
acf(coredata(dataInTimeSeries))