如何使用ggplot2绘制R中的自相关图和部分自相关图?

Cha*_*tak 1 r time-series ggplot2

如何使用ggplot2绘制R中时间序列的ACF图和PACF图?

War*_*ner 11

有很多方法可以做到这一点,你可以找到它们,如果你花几分钟谷歌搜索或搜索这个网站.

一种方式是ggAcfggPacfforecast包.他们创建ggplot2对象,然后您可以使用ggplot语法和参数进行自定义.

series <- rnorm(300)
plot <- ggAcf(series)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


fle*_*ive 5

除了这个forecast::ggAcf功能之外,用ggplot自己动手也很快.唯一令人讨厌的是acf不会返回置信区间的界限,因此您必须自己计算它们.

用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));
Run Code Online (Sandbox Code Playgroud)

示例:对于AR(1)过程,使用ggplot绘制ACF

您可以在下面看到代码段的输出.剧情

  • 包含自相关系数的95%置信区间
  • 不显示0处的自相关,它始终为1(并且在我的视图中使得绘图更难以阅读)

acf用ggplot绘制