R vs python中的ACF置信区间:为什么不同?
作者:互联网
当我在R中使用acf函数时,它会绘制水平线,这些水平线表示在各种滞后下自相关的置信区间(默认为95%):
但是,当我在python中使用statsmodels.graphics.tsaplots.plot_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