/ / Rの時系列分析:ts()関数の頻度値とacfプロットのラグ-r、時系列

Rの時系列解析:ts()関数の周波数値とacfプロットの遅れ時間 - 時系列

私は時系列分析の初心者です。 2009年1月から12月20013年までの60か月の月間売上データを取得し、ARIMAモデルを使用して今後6か月の売上を予測しようとしています。データを読み取り、次のように時系列オブジェクトに変換します。

 data <- read.csv(file="monthlySalesData.csv", header=TRUE)
dataInTimeSeris <- ts(data, frequency = 12, start=c(2009,1), end=c(2013,12))

決定するためにacf()プロットを描画しようとすると自己相関がゼロにまで低下した後、X軸の小数のスケールを取得します。画像を投稿するのに十分な権限がありませんが、X軸のラグ値は10進数で、最大ラグは1.5です。 plot = FALSEのacf値も奇妙になります(自己相関を計算したラグは表示されません)。私はこれを解釈することができず、自己相関がゼロに死ぬまでのラグの数を見つけることができません。

 acf(dataInTimeSeries, plot=FALSE)

Autocorrelations of series ‘dataInTimeSeries’, by lag

0.0000 0.0833 0.1667 0.2500 0.3333 0.4167 0.5000 0.5833 0.6667 0.7500 0.8333
1.000  0.642  0.588  0.490  0.401  0.320  0.311  0.269  0.178  0.198  0.229
0.9167 1.0000 1.0833 1.1667 1.2500 1.3333 1.4167
0.271  0.358  0.240  0.210  0.092  0.135  0.098

問題は何ですか-Rの設定、データのインポート、またはts()関数に問題はありますか?そして、これがacfプロットが毎月のデータに対してどのように表示されるか、それを解釈する方法ですか?

前もって感謝します!!

回答:

回答№1は4

表示される小数は、たとえば年です。 0.0833 = 1/12年、0.1667 = 2/12年阿蘇。

ラグを月としてACFプロットを取得するには、次のようなものを試すことができます。

## Lacking reproducible example, I use simulated monthly data
tt <- ts(arima.sim(list(order=c(1,0,0), ar=0.4),60), start=2001, deltat=1/12)
## Calculate, but not plot, acf
acfpl <- acf(tt, plot=FALSE)
## Transform the lags from years to months
acfpl$lag <- acfpl$lag * 12

## Plot the acf
plot(acfpl, xlab="Lag (months)")

ここに画像の説明を入力


私はあなたの問題を理解しているので、あなたは対処していますARMAの注文を特定しています。そのためには、ACFプロットとPACFプロットの両方が必要です。 「死にかけている」と言うとき、少し遅れて値がゼロに等しくなることを期待すべきではありません。 95%信頼区間(破線の青い線)内の値は統計的に有意ではありません(以下の注記も確認してください) ?plot.acf)。

ARIMAモデルの次数を特定することができますトリッキーですが、従うことができるいくつかのルールがあります。例えば。プロセスAR(p)モデルには、減衰指数関数/正弦関数のようなACFと、pの有意な遅れを持つPACFがあります。例えば。 MA(q)プロセスは逆です。

これら2つの単純なケースのように見えるように、私は arima.sim 2つの時系列ARIMA(1,0,0)とARIMA(0,0,1)をシミュレートします。

set.seed(1234)
arima100 <- arima.sim(list(order=c(1,0,0), ar=0.9), n=500)
arima001 <- arima.sim(list(order=c(0,0,1), ma=0.9), n=500)

par(mfrow=c(2,2), bycol=TRUE)
acf(arima100); acf(arima001)
pacf(arima100); pacf(arima001)

これにより、次のプロットが生成されます。

ここに画像の説明を入力

ARIMA(1,0,0):ACFはゼロに向かって減衰し、PACFには1つの大きな遅れがあります。 ARIMA(0,0,1):ACFには1つの大きなラグがあり(lag-0は常に1)、PACFは減衰サイン関数のように見えます。

さて、あなたのACFを見るだけで、私は2つのことを敢えて言うでしょう:

  • プロセスにはおそらくAR用語があります(PACFもチェックする必要があります)
  • 12番目のラグ、つまり1年でのスパイクのために、データに季節性がある可能性があります(データのプロットを見ると確認できます)

あなたが従うことができるいくつかのステップ:

  • データに傾向が明らかな場合は、違いをとってください
  • 年ごとの季節性がある場合は、ラグ12の差を取る
  • 差異のないデータと差異のあるデータのACFおよびPACFをプロットする
  • 適合モデル arima そして、残差を確認します
  • 複数の候補モデルがある場合、それらのAICまたはBIC値を比較します。

また、良い本(私はHenrik Madsenによる時系列分析を使用しました)または講義ノート(これらはよく見える)あなたを大いに助けることができます。


回答№2の場合は-1

使用 coredata() トリックも行います:

acf(coredata(dataInTimeSeries))