我正在尝试自动绘制不同时间序列的许多ACF,因此我可以快速检测这些TS是否可以通过ARMA流程很好地建模。我创建了以下循环,旨在将每个绘图打印到自己的jpeg。
我在使用分解函数替换第3行,D = acf(data.ts)时已经测试了循环,并且能够返回所有这些结果。而且,在循环之外,如果我用数据框中的任何TS替换变量i,我可以查看RStudio中的jpeg,但我不想花时间去right_click - > Save_as everything。
运行代码时出现以下错误:
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()
}
编辑:解决方案涉及在ACF函数中添加一个ylimit,如下面@ alex-braksator回复中所示。
答案 0 :(得分:0)
尝试在您的acf调用中添加ylim,以在R绘制时指定y限制边界。
通常,您的ACF图将显示代表95%置信区间的蓝色虚线。这就是我所假设的是你用来确定显着滞后以及你的TS是否可以被建模的东西。这些蓝线的计算方法如下:
qnorm((1 + 0.95)/2)/sqrt(length(data.ts))
因此,在您的情况下,将其设为绘图窗口的ylim界限,可能加1或2
ylimit <- qnorm((1 + 0.95)/2)/sqrt(length(data.ts)) + 1
acf(data.ts, lag.max = 999, ylim=c(-ylimit, ylimit))
希望这会有所帮助。如果您仍然遇到错误,请告诉我。