回答:
一般に、Box、Jenkins&ReinselによるTime Series Analysisなどの高度な時系列分析のテキスト(入門書では通常、ソフトウェアを信頼するように指示されます)を掘り下げます。また、グーグルでBox-Jenkins手順の詳細を見つけることもできます。Box-Jenkins以外のアプローチ、たとえばAICベースのアプローチがあることに注意してください。
Rでは、まずデータをts
(時系列)オブジェクトに変換し、頻度が12(月ごとのデータ)であることをRに伝えます。
require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)
(部分的な)自己相関関数をプロットできます。
acf(sales)
pacf(sales)
これらは、ARまたはMAの動作を示唆するものではありません。
次に、モデルを適合させて検査します。
model <- auto.arima(sales)
model
?auto.arima
ヘルプを参照してください。ご覧のようにauto.arima
、単純な(0,0,0)モデルを選択します。これは、データにトレンドも季節性もARまたはMAもないためです。最後に、時系列と予測を予測およびプロットできます。
plot(forecast(model))
?forecast.Arima
(大文字Aに注意してください!)を見てください。
この無料のオンライン教科書は、Rを使用した時系列分析と予測の優れた入門書です。
2つのこと。時系列は月次であり、反映された27ポイントは自己相関構造を与えないため、賢明なARIMA推定には少なくとも4年のデータが必要です。これは、売上高が独自の値と相関するのではなく、いくつかの外部要因の影響を受けることも意味します。どの要素があなたの売上に影響を与えているか、そしてその要素が測定されているかを見つけ出してください。次に、回帰またはVAR(Vector Autoregression)を実行して予測を取得できます。
これらの値以外に絶対に何もない場合、最善の方法は、指数平滑法を使用して単純な予測を取得することです。Rでは指数平滑法を使用できます。
2つ目は、製品の売上が単独で表示されないことです。たとえば、コーヒーの売上の増加はお茶の売上の減少を反映する可能性があります。他の製品情報を使用して、予測を改善してください。
これは通常、小売またはサプライチェーンの販売データで発生します。それらはシリーズの自己相関構造の多くを示しません。一方、ARIMAやGARCHのような方法は、通常、自己相関がある株式市場データや経済指標で機能します。
これは本当にコメントですが、許容範囲を超えているので、時系列データを分析する正しい方法を示唆しているので、準回答として投稿します。。
よく知られている事実ですが、ここや他の場所でしばしば無視されているのは、仮のARIMAモデルの定式化に使用される理論的なACF / PACFは、パルス/レベルシフト/季節パルス/ローカルタイムトレンドを前提としないことです。さらに、一定のパラメーターと一定の誤差分散を前提としています。この場合、21番目の観測値(値= 158)は外れ値/パルスとして簡単にフラグが付けられ、提案された-80の調整により78の修正値が得られます。変更されたシリーズの結果のACF / PACFは、確率的(ARIMA)構造の証拠をほとんどまたはまったく示しません。この場合、手術は成功したが患者は死亡した。サンプルACFは共分散/分散に基づいており、過度に膨張/膨張した分散はACFに下向きのバイアスをもたらします。キース・オード教授はかつてこれを「不思議の国のアリス効果」と呼んでいました
Stephan Kolassaが指摘したように、データにはあまり構造がありません。自己相関関数は、ARMA構造を示唆していない(参照acf(sales)
、pacf(sales)
)およびforecast::auto.arima
任意のARやMAの順序を選択しません。
require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean
#Coefficients:
# intercept
# 81.3704
#s.e. 4.4070
それにもかかわらず、残差の正規性のヌルが5%の有意水準で拒否されることに注意してください。
JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544
補足:パッケージで利用可能なJarqueBera.test
機能に基づいていjarque.bera.test
ますtseries
。
で検出された観測値21に加法的外れ値を含めるtsoutliers
と、残差が正常になります。したがって、切片の推定値と予測は、遠方の観測の影響を受けません。
res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"),
args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean
#Coefficients:
# intercept AO21
# 78.4231 79.5769
#s.e. 3.3885 17.6072
#sigma^2 estimated as 298.5: log likelihood=-115.25
#AIC=236.49 AICc=237.54 BIC=240.38
#Outliers:
# type ind time coefhat tstat
#1 AO 21 2:09 79.58 4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077