ここでは、(ログ変換を行った後の)初期データのプロットを示します。 Auto.arima()関数では白色ノイズが発生しません。
直線的な傾向と季節的な傾向の両方があることは明らかです。私は第1と第12の(季節的な)違いを取ることによってこれらの両方に取り組むことができます: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)
は(私はあなたが希望の場合は、CSVコンバータにHTMLを使用することができると思う)、データです:https://docs.google.com/spreadsheets/d/1S8BbNBdQFpQAiCA4J18bf7PITb8kfThorMENW-FRvW4/pubhtml
例のデータとコードを共有してくださいTsayの論文です。 – mtoto
ができます!データセット(約300値)とrコードを共有する最も簡単な方法は何ですか? –
'dput()'を使って質問を示すデータセットの一部、例えば最初の100個の値を共有することができます。 – mtoto