在pandas dataframe:correlate()中使用最大似然估计的自回归(AR)模型得到了一个意外的关键字参数“old behavior”

2024-04-26 23:03:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧的子集,其中包含我要使用statsmodel使用AR或ARIMA模型分析的时间序列:

data_sci = H_Clinton_social_vector.Florida

数据如下:

^{pr2}$

我的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()参数造成的。我的数据有很高的自相关,所以这应该没问题。在

autocorrelation of dataset

我不太熟悉stasmodels,我更喜欢避免从头开始编写AR或ARIMA模型。在


Tags: 数据模型pandasdata参数model时间序列
2条回答

经过一些研究,问题是statsmodel与nump1.10的不兼容。虽然我有statmodel的最新版本,但是自相关(与最新版本的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下载的。解压缩,导航到该目录并执行以下操作:

^{pr2}$

完成后,从Github导航到下载的statsmodel副本,并构建statmodel:

^{pr2}$

您将看到:

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.9.2或更低版本,只是经过测试,代码不再出现此错误。这是由于调用_presample_varcov中的np.correlate(),其中statsmodels.tsa.armodel计算预采样方差协方差的倒数。在

Numpy在2015年6月(see docs)左右反对使用multiarray.correlate()(即old behavior),但是{}在这方面没有更新(0.6.1从2014年12月开始)。在

相关问题 更多 >