r - Auto.arima() 函数不会产生白噪声。我还应该如何进行数据建模

标签 r time-series moving-average model-fitting autoregressive-models

这是初始数据的图(执行对数转换后)。 log plot

很明显,既有线性趋势,也有季节性趋势。我可以通过取第一个和第十二个(季节性)差异来解决这两个问题:diff(diff(data), 12)。这样做之后,这是结果数据的图

first_seasonal_diff plot .

这个数据看起来不太好。虽然平均值不变,但随着时间的推移,我们看到了漏斗效应。这是 ACF/PACF:ACF PACF .

任何可能适合尝试的建议。我使用了 auto.arima() 函数,该函数建议使用 ARIMA(2,0,2)xARIMA(1,0,2)(12) 模型。然而,一旦我从拟合中取出残差,很明显它们仍然存在某种结构。这是拟合的残差图以及残差的 ACF/PACF。
residualPlot acfResids pacfResids

对于残差的 ACF/PACF 中哪些滞后具有峰值,似乎没有季节性模式。然而,这仍然是前面步骤没有捕捉到的东西。你建议我做什么?我怎样才能构建一个具有更好模型诊断能力的更好模型(此时它只是一个更好看的 ACF 和 PACF)?

到目前为止,这是我的简化代码:

    library(TSA)
    library(forecast)
    beer <- read.csv('beer.csv', header = TRUE)
    beer <- ts(beer$Production, start = c(1956, 1), frequency = 12)

    # transform data
    boxcox <- BoxCox.ar(beer) # 0 in confidence interval
    beer.log <- log(beer)
    firstDifference <- diff(diff(beer.log), 12) # get rid of linear and 
    # seasonal trend
    acf(firstDifference)
    pacf(firstDifference)
    eacf(firstDifference)
    plot(armasubsets(firstDifference, nar=12, nma=12))

    # fitting the model
    auto.arima(firstDifference, ic = 'bic') # from forecasting package
    modelFit <- arima(firstDifference, order=c(1,0,0),seasonal
    =list(order=c(2, 0, 0), period = 12))

    # assessing model
    resid <- modelFit$residuals                     
    acf(resid, lag.max = 15)
    pacf(resid, lag.max = 15)

这是数据,如果有兴趣(我想你可以使用 html 到 csv 转换器,如果你愿意的话):https://docs.google.com/spreadsheets/d/1S8BbNBdQFpQAiCA4J18bf7PITb8kfThorMENW-FRvW4/pubhtml

最佳答案

简,

这里发生了一些事情。

我们使用了 tsay 方差检验而不是对数,这表明方差在 118 期后增加。加权最小二乘法处理它。

Tsay variance test

3 月从第 111 期开始变得更高。替代 ar12 或季节性差异的另一种方法是识别季节性虚拟变量。我们发现 12 个月中有 7 个月不寻常,有几个水平变化,一个 AR2 有 2 个异常值。

Model

这是拟合和预测。 Actual, fit and Forecasts

这里是残差。 Residuals

残差的 ACF ACF Residuals

注意:我是 Autobox 软件的开发人员。所有模型都是错误的。有些很有用。

这是 Tsay 的论文
http://onlinelibrary.wiley.com/doi/10.1002/for.3980070102/abstract

关于r - Auto.arima() 函数不会产生白噪声。我还应该如何进行数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605214/

相关文章:

r - 生成集进行交叉验证

r - 星星包 : how to define additional dimensions based on an attribute (filename)?

python - 整天分组python

r - 根据开始和结束时间从时间序列中获取数据

python - 了解 NumPy 的卷积

r - ggplot2 - 为数据框的每一列创建一个条形图

css - 如何使 Shiny 应用程序中的图像宽度动态化?

r - 如何根据 R 中的后续日期时间行创建条件语句

c - ADC 移动平均线

algorithm - 如何识别事件发生率(移动平均)是否超过阈值