2017-07-17 12 views
0

多くのACFを異なる時系列でプロットするのを自動化しようとしているため、これらのTSをARMAプロセスでうまくモデリングできるかどうかを素早く検出できます。私は、それぞれのプロットを独自のjpegに印刷するという目的で、次のループを作成しました。多くの時系列のRでACFプロットを1つのデータフレームで自動化

私はすでに3行目をD = acf(data.ts)に置き換えるときにdecompt関数を使ってループをテストし、それらの結果をすべて返すことができました。さらに、ループの中で、変数iをデータフレームから任意のTSに置き換えると、RStudio内でjpegを見ることができますが、私はright_click - > Save_asすべてに時間を費やしたくありません。

私は自分のコードを実行すると、私は次のエラーを取得する:ここで

Error in plot.window(...) : need finite 'ylim' values 
In addition: Warning messages: 
1: In min(x) : no non-missing arguments to min; returning Inf 
2: In max(x) : no non-missing arguments to max; returning -Inf 

は私が離れて働いてきたループです。

for (i in 2:272){ 
    data.ts=ts(df1[i,], start=c(2011,1), end = c(2016,12),fr=12) 
    mypath = file.path("S:", "Work") 
    jpeg(paste("acfplot_", i, ".jpeg", sep="")) 
    acf(data.ts, lag.max = 999) 
    dev.off() 
} 

編集:解決策は、@ alex-braksatorの返信で下記のようにACF関数にylimitを追加することです。

答えて

0

あなたのacf呼び出しにylimを追加して、Rがそれをプロットするときのy制限境界を指定してみてください。

通常、ACFプロットには95%の信頼限界を表す青い点線が表示されます。それは、あなたが有意な遅延を決定するために使用しているものであり、TSをモデル化できるかどうかを仮定しています。多分、だからあなたの場合には、YLimプロパティは、あなたのプロットウィンドウのバインドことを確認 qnorm((1 + 0.95)/2)/sqrt(length(data.ts))

プラス1または2

ylimit <- qnorm((1 + 0.95)/2)/sqrt(length(data.ts)) + 1 acf(data.ts, lag.max = 999, ylim=c(-ylimit, ylimit))

・ホープ、このことができます:これらの青い線を用いて算出されています。まだエラーが発生した場合はお知らせください。

+0

これは働いていたが働いていた場合、私たちが知っていることを忘れないでください!ありがとうございました。 – dward4

0

たぶん、あなたのようにコードを変更する必要があります

mypath = file.path("S:", "Work", paste("acfplot_", i, ".jpeg", sep="")) 
jpeg(filename=mypath) 

それは:)

+0

ありがとうございました。私はdecompose.tsでループを実行してみましたが、エラーが発生しました。その編集は、しかし、これのために働く。 – dward4

+0

それであなたの問題を解決しました...そうですか? – Prem

+0

いいえ、私はもともと述べたのと同じエラーを受けました。 @ alex-braksatorは上記の修正を掲載し、ACF関数内の適切なy制限を加えました。 「これのために働いた」というのは、書式設定が正しく機能していたということです。あいまいさに対する謝罪です。 – dward4

関連する問題