我是时间序列分析的新手。我有 60 个月(从 2009 年 1 月到 20013 年 12 月)的月度销售数据,并尝试通过 ARIMA 模型预测未来 6 个月的销售。我读取数据并将其转换为时间序列对象,如下所示:
\n\n data <- read.csv(file="monthlySalesData.csv", header=TRUE)\n dataInTimeSeris <- ts(data, frequency = 12, start=c(2009,1), end=c(2013,12)) \nRun Code Online (Sandbox Code Playgroud)\n\n当我尝试绘制 acf() 图来确定自相关性降至零后的滞后时间时,我会得到 X 轴上的滞后比例(以小数表示)。我没有足够的权限发布图像,但 X 轴上的滞后值以十进制表示,最大滞后为 1.5 。plot=FALSE 的 acf 值也很奇怪(它不显示计算自相关的滞后)。我无法解释这一点,也无法找到自相关性降至零后的滞后数。
\n\n acf(dataInTimeSeries, plot=FALSE)\n\nAutocorrelations of series \xe2\x80\x98dataInTimeSeries\xe2\x80\x99, by lag\n\n0.0000 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 0.8333 \n 1.000 0.642 0.588 0.490 0.401 0.320 0.311 0.269 0.178 0.198 0.229 \n0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167 \n 0.271 0.358 0.240 0.210 0.092 0.135 0.098 \nRun Code Online (Sandbox Code Playgroud)\n\n问题是什么 - R 设置、数据导入或 ts() 函数是否有问题?如果这就是 acf 图显示的月度数据,如何解释它?
\n\n提前致谢!!
\n您看到的小数只是年,例如 0.0833 = 1/12 年,0.1667 = 2/12 年。
要获得滞后数月的 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)")
Run Code Online (Sandbox Code Playgroud)

据我了解,您正在处理的问题是识别 ARMA 的订单。为此,您需要 ACF 和 PACF 图。当您说“趋于零”时,您不应期望这些值在一段时间滞后后等于零。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)
Run Code Online (Sandbox Code Playgroud)
这会产生以下图:

ARIMA(1,0,0):ACF 向零衰减,PACF 有一个显着的滞后。ARIMA(0,0,1):ACF 有一个显着的滞后(在 lag-0 之后始终为 1),PACF 看起来像一个阻尼正弦函数。
现在,只要看看你的 ACF,我就敢说两件事:
您可以遵循的一些步骤:
arima并检查残差另外阅读一本好书(我使用了 Henrik Madsen 的时间序列分析)或讲义(这些看起来不错)可以对你有很大帮助。