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

Posted

技术标签:

【中文标题】Auto.arima() 函数不会产生白噪声。我还应该如何对数据进行建模【英文标题】:Auto.arima() function does not result in white noise. How else should I go about modeling data 【发布时间】:2017-09-22 03:29:59 【问题描述】:

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

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

.

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

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

对于哪些滞后在残差的 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

【问题讨论】:

请分享示例数据和代码。 会的!共享数据集(大约 300 个值)和 r 代码的最简单方法是什么? 您可以使用dput() 共享数据集的一部分来说明您的问题,例如前 100 个值。 我认为制度切换模型可能会有所帮助:econweb.ucsd.edu/~jhamilto/palgrav1.pdf。 Marcelo Perin 的 R 包 fMarkovSwitching 实现了此类模型sites.google.com/site/marceloperlin/r-code/fmarkovswitching 你的方差有变化......发布所有数据 【参考方案1】:

简,

这里发生了一些事情。

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

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

这是拟合和预测。

这是残差。

残差的ACF

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

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

【讨论】:

以上是关于Auto.arima() 函数不会产生白噪声。我还应该如何对数据进行建模的主要内容,如果未能解决你的问题,请参考以下文章

为啥 knitr 使用 auto.arima 显示警告?

matlab数组中怎么加入高斯白噪声

怎么在matlab中仿真功率谱密度为1的高斯白噪声?

matlab 产生白噪声

如何用matlab产生标准高斯噪声

我用matlab中的imnoise函数给图像加椒盐噪声为啥产生的噪声不是黑白的?