在 pandas 数据框中使用最大似然估计器的自动回归 (AR) 模型:correlate() 得到了一个意外的关键字参数“旧行为”
Posted
技术标签:
【中文标题】在 pandas 数据框中使用最大似然估计器的自动回归 (AR) 模型:correlate() 得到了一个意外的关键字参数“旧行为”【英文标题】:Auto Regressive (AR) model using Maximum Likelihood Estimator in pandas dataframe: correlate() got an unexpected keyword argument 'old behavior' 【发布时间】:2016-03-26 11:09:51 【问题描述】:我有一个包含时间序列的 pandas 数据帧子集,我想使用 statsmodel 使用 AR 或 ARIMA 模型进行分析:
data_sci = H_Clinton_social_vector.Florida
数据如下:
Date
2015-09-28 587
2015-10-05 582
2015-10-12 606
2015-10-19 698
我的 AR 模型是这样创建的,每周汇总时间序列:
ar_model = sm.tsa.AR(data_sci, freq='W')
ar_model
<statsmodels.tsa.ar_model.AR at 0x1178f5490>
接下来,我想对 AR 参数进行最大似然估计 (MLE) 拟合,滞后半年:
ar_res = ar_model.fit(maxlag=26, method='mle')
我得到以下结果:
correlate() got an unexpected keyword argument 'old behavior'
我不明白问题是什么,我认为这与数据的自动相关性有关,因为 correlate() 参数。我的数据有很高的自相关性,所以应该没问题。
我对 stasmodel 不是很熟悉,并且更喜欢避免从头开始编写 AR 或 ARIMA 模型。
【问题讨论】:
你的 statsmodels 版本是什么,numpy 版本是什么。一种可能性是这是一个旧的 statsmodels,它使用了从最近的 numpy 中删除的选项。 谢谢。我的 statsmodel 是 0.6.1。 numpy 是 1.10.1。 【参考方案1】:经过一番研究,问题是 statsmodel 与 numpy 1.10 不兼容。虽然我有最新版本的 stasmodel,但自相关存在内部问题(与最新版本的 numpy 不兼容),需要在 Github 安装主代码。
首先,我发现了我有哪些版本的 stasmodels 依赖项:
Python >= 2.6, including Python 3.x
NumPy >= 1.5.1
SciPy >= 0.9.0
Pandas >= 0.7.1
Patsy >= 0.3.0
所有这些都可以,所以为了从源代码安装,我需要有 Cython >= 20.1,这是我从 here 下载的。解压缩,导航到该目录并执行:
python setup.py install
完成后,导航到从Github 下载的 statsmodel 副本,然后构建 stasmodel:
python setup.py install
你会看到:
Cythonizing sources
Processing statsmodels/nonparametric/_smoothers_lowess.pyx
Processing statsmodels/nonparametric/linbin.pyx
Processing statsmodels/tsa/kalmanf/kalman_loglike.pyx
Processing statsmodels/tsa/statespace/_statespace.pyx.in
等等。一段时间后,您将拥有最新版本的 statsmodel。现在我的 AR 模型工作正常,尽管有一些您可以忽略或禁用的警告。
【讨论】:
似乎在 numpy 1.10.2 中修复了其他错误,这些错误会影响 master 中的新状态空间模型。所以,如果可能的话,我建议也升级 numpy。【参考方案2】:您需要将numpy
降级到1.9.2
或更低版本,刚刚测试,您的代码不再出现此错误。这是由于在_presample_varcov
中调用了np.correlate()
,其中statsmodels.tsa.armodel
计算了预采样方差-协方差的倒数。
Numpy
已弃用 multiarray.correlate()
(old behavior
)和 1.10
大约在 2015 年 6 月 (see docs),但 statsmodels
在这方面尚未更新(0.6.1
日期为 2014 年 12 月)。
【讨论】:
谢谢@Stefan,但降级到较低的 numpy 版本会产生比我试图解决的问题更多的问题。 或者,您可以自己分叉和更新相关的statsmodel
代码 - 请参阅第 260 行附近的statsmodels.tsa.ar_model.py
。或者使用其他包,但我不知道任何其他免费时间序列实现在python
.
谢谢@Stefan,我能够通过从 Github 上最新的源代码重建 statsmodel 来解决问题(在当前版本中解决,而不是在 0.6.1 中解决)以上是关于在 pandas 数据框中使用最大似然估计器的自动回归 (AR) 模型:correlate() 得到了一个意外的关键字参数“旧行为”的主要内容,如果未能解决你的问题,请参考以下文章