4

这是初始数据的图(执行对数转换后)。 log plotAuto.arima()函数不会导致白噪声。我应该如何去建模数据

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

first_seasonal_diff plot

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

任何可能适合尝试的建议。我使用了auto.arima()函数,该函数建议使用ARIMA(2,0,2)xARIMA(1,0,2)(12)模型。但是,一旦我从合适的残余物中抽取出来,很明显它们中还有某种结构。下面是残差的拟合残差图和ACF/PACF图。 residualPlotacfResidspacfResids

似乎没有成为关于季节性模式,其滞后有残留的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

+0

请例如共享数据和代码。 – mtoto

+0

会做!共享数据集最简单的方法是什么(约300个值)和r代码? –

+0

您可以使用'dput()'共享说明您的问题的数据集的一部分,例如前100个值。 – mtoto

回答

2

简,

这里有几件事情正在进行。

我们使用tsay方差检验来表示方差在118期后增加,而不是日志。加权最小二乘法处理它。

Tsay variance test

年3月在周期111的另一种变高开始到AR12或季节性差分是识别季节性假人。我们发现,在12个月中有7次是偶尔发生一对夫妻级别变化的异常,一个AR2和2个异常值。

Model

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

这里是残差。 Residuals

的ACF残差ACF Residuals

注:我是软件Autobox的开发商。所有型号都是错误的。有些是有用的。

这里是中央执行委员会的文件 http://onlinelibrary.wiley.com/doi/10.1002/for.3980070102/abstract