编程语言
首页 > 编程语言> > R vs python中的ACF置信区间:为什么不同?

R vs python中的ACF置信区间:为什么不同?

作者:互联网

当我在R中使用acf函数时,它会绘制水平线,这些水平线表示在各种滞后下自相关的置信区间(默认为95%):
R ACF

但是,当我在python中使用statsmodels.graphics.tsaplots.plot_acf时,基于更复杂的计算,我会看到弯曲的置信区间:
python ACF

请注意,在R版本中,直到滞后25为止的滞后被认为是重要的.对于相同的数据,在python版本中,只有到20的滞后才被认为是重要的.

这两种方法有什么区别,我应该更信任哪一种?有人可以解释由statsmodels.tsa.stattools.acf计算的非恒定置信区间的理论吗?

我知道我可以通过简单地绘制类似y = [/-]1.96 / np.sqrt(len(data))的方法来再现R水平线.但是,我想了解花式弯曲的置信区间.

解决方法:

并不是对理论部分的真正答案(在CrossValidated上可能会更好),但可能有用…?

如果您转到documentation page for statsmodels.tsa.stattools.acf,则可以选择browse the source code.代码为:

varacf = np.ones(nlags + 1) / nobs
varacf[0] = 0
varacf[1] = 1. / nobs
varacf[2:] *= 1 + 2 * np.cumsum(acf[1:-1]**2)
interval = stats.norm.ppf(1 - alpha / 2.) * np.sqrt(varacf)
confint = np.array(lzip(acf - interval, acf + interval))

相反,R source code for plot.acf显示

clim0 <- if (with.ci) qnorm((1 + ci)/2)/sqrt(x$n.used) else c(0, 0)

其中ci是置信度(默认值= 0.95).

标签:statistics,time-series,python,r
来源: https://codeday.me/bug/20191026/1937160.html