如何使用ggplot2绘制R中时间序列的ACF图和PACF图?
答案 0 :(得分:10)
有很多方法可以做到这一点,如果你花几分钟谷歌搜索或搜索这个网站,你可以找到它们。
ggAcf
包的一种方式是ggPacf
和forecast
。他们创建ggplot2
个对象,然后您可以使用ggplot语法和参数进行自定义。
series <- rnorm(300)
plot <- ggAcf(series)
答案 1 :(得分:5)
除了forecast::ggAcf
功能外,使用ggplot自己动手也很快。唯一令人讨厌的是acf
没有返回置信区间的界限,所以你必须自己计算它们。
# plot acf with ggplot
ggacf <- function(series) {
significance_level <- qnorm((1 + 0.95)/2)/sqrt(sum(!is.na(series)))
a<-acf(series, plot=F)
a.2<-with(a, data.frame(lag, acf))
g<- ggplot(a.2[-1,], aes(x=lag,y=acf)) +
geom_bar(stat = "identity", position = "identity") + xlab('Lag') + ylab('ACF') +
geom_hline(yintercept=c(significance_level,-significance_level), lty=3);
# fix scale for integer lags
if (all(a.2$lag%%1 == 0)) {
g<- g + scale_x_discrete(limits = seq(1, max(a.2$lag)));
}
return(g);
}
#example: plot correlogram of an AR(1) process
require('stats');
ggacf(arima.sim(model=list(ar=0.9), n=300));
您可以在下面看到代码段的输出。情节