我有一个记录间隔为30秒的数据集,我正在尝试使用时间序列模块中的ARMA函数进行预测预测。由于数据保密,我使用了随机数据来重现错误
import numpy as np
from pandas import *
import statsmodels.api as sm
data = np.random.rand(100000)
data_index = date_range('2013-5-26', periods = len(data), freq='30s')
data = np.array(data)
data_series = Series(data, index = data_index)
model = sm.tsa.ARMA(data_series,(1,0)).fit()
我的软件包版本:
Python版本2.7.3
熊猫0.11.0版
statsmodels版本0.5.0
主要错误信息如下(我省略了一些):
ValueError Traceback (most recent call last)
<ipython-input-24-0f57c74f0fc9> in <module>()
6 data = np.array(data)
7 data_series = Series(data, index = data_index)
----> 8 model = sm.tsa.ARMA(data_series,(1,0)).fit()
...........
...........
ValueError: freq 30S not understood
在我看来ARMA不支持熊猫生成的日期格式?如果我删除date_range中的freq选项,那么该命令将再次不适用于大系列,因为年份将远远超出熊猫限制。
反正到处走走?谢谢
更新:
好的,可以使用data_series.values,但是接下来,如何进行预测?我的data_index来自[2013-05-26 00:00:00,...,2013-06-29 17:19:30]
prediction = model.predict('2013-05-26 00:00:00', '2013-06-29 17:19:30', dynamic=False)
还是给我一个错误
我知道预测= model.predict()可以进行并生成整个序列预测,然后可以进行匹配,但是总的来说并不方便。
最佳答案
问题在于,由于某些原因,此频率不会给熊猫带来补偿,因此我们需要一个补偿才能将日期用于任何事物。看来是个熊猫虫/我没有实现。
from pandas.tseries.frequencies import get_offset
get_offset('30s')
也许我们可以改善错误消息。
[编辑我们实际上并不需要日期,只是为了方便预测而重新添加日期,因此您仍然可以使用data_series.values估算模型。]
关于python - statsmodel ARMA功能与Pandas不兼容吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17579932/