我是时间序列分析的新手。我有60个月的月度销售数据,从2009年1月到12月-20013,并试图通过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轴上的lag值以十进制表示,最大lag为1.5。带有plot=FALSE的ACF值也变得奇怪(它没有显示lag,它已经计算了自相关)。我无法解释这一点,也找不到自相关消亡到零的滞后数量。
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 plots对月度数据的显示,如何解释它?
提前感谢!!
发布于 2014-06-02 23:55:00
您看到的小数只是年份,例如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图。当你说“快到零了”的时候,你不应该期望这些值在一段时间后等于零。95%置信区间内的值(蓝色虚线)在统计上没有统计学意义(也可以查看?plot.acf中的注释)。
确定ARIMA模型的顺序可能很棘手,但您可以遵循一些规则。例如,过程AR(p)模型具有像阻尼指数/正弦函数一样的ACF,而PACF具有p个显着滞后。例如,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有一个显著的滞后(在lag-0之后,它总是为1),并且PACF看起来像一个阻尼正弦函数。
现在,只要看看你的ACF,我敢说两件事:
您可以遵循以下步骤:
如果您的数据中存在明显的趋势,
此外,阅读一本好书(我用的是Henrik Madsen的时间序列分析)或课堂讲稿(these look good)也会对你有很大帮助。
发布于 2015-10-29 01:16:25
使用coredata()也能达到这个目的:
acf(coredata(dataInTimeSeries))https://stackoverflow.com/questions/23982656
复制相似问题