- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些股票数据,通过下载并制作成 pandas 系列
import quandl as qd
api = '1uRGReHyAEgwYbzkPyG3'
qd.ApiConfig.api_key = api
data = qd.get_table('WIKI/PRICES', qopts={'columns': ['ticker', 'date', 'high', 'low', 'open', 'close']},
ticker=['AMZN'], date={'gte': '2000-01-01', 'lte': '2014-03-10'})
data.reset_index(inplace=True, drop=True)
price = pd.Series(data.iloc[:,2].values,index=pd.to_datetime(data.iloc[:,1]))
通过 statsmodels,我想绘制一个 ARIMA 模型,显示以下内容:
上图来自statsmodels文档here ,但是遵循他们的代码会引发奇怪的错误。
fig, ax = plt.subplots()
ax = price.loc['2012-01-03':].plot(ax=ax, label='observed')
fig = model_fit.plot_predict('2014-01-03','2015-01-03', dynamic=False, ax=ax, plot_insample=False)
plt.show()
以下错误,
KeyError Traceback (most recent call last)
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 1420243200000000000
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2524 try:
-> 2525 return self._engine.get_loc(key)
2526 except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
KeyError: Timestamp('2015-01-03 00:00:00')
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 1420243200000000000
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_predict_end(self, end)
172 try:
--> 173 end = self._get_dates_loc(dates, dtend)
174 except KeyError as err: # end is greater than dates[-1]...probably
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_dates_loc(self, dates, date)
94 def _get_dates_loc(self, dates, date):
---> 95 date = dates.get_loc(date)
96 return date
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/datetimes.py in get_loc(self, key, method, tolerance)
1425 key = Timestamp(key, tz=self.tz)
-> 1426 return Index.get_loc(self, key, method, tolerance)
1427
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2526 except KeyError:
-> 2527 return self._engine.get_loc(self._maybe_cast_indexer(key))
2528
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
KeyError: Timestamp('2015-01-03 00:00:00')
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-206-505c74789333> in <module>()
3 ax = price.loc['2012-01-03':].plot(ax=ax, label='observed')
4
----> 5 fig = model_fit.plot_predict('2014-01-03','2015-01-03', dynamic=False, ax=ax, plot_insample=False)
6
7 plt.show()
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in plot_predict(self, start, end, exog, dynamic, alpha, plot_insample, ax)
1885
1886 # use predict so you set dates
-> 1887 forecast = self.predict(start, end, exog, 'levels', dynamic)
1888 # doing this twice. just add a plot keyword to predict?
1889 start = self.model._get_predict_start(start, dynamic=dynamic)
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in predict(self, start, end, exog, typ, dynamic)
1808 def predict(self, start=None, end=None, exog=None, typ='linear',
1809 dynamic=False):
-> 1810 return self.model.predict(self.params, start, end, exog, typ, dynamic)
1811 predict.__doc__ = _arima_results_predict
1812
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in predict(self, params, start, end, exog, typ, dynamic)
1184 if not dynamic:
1185 predict = super(ARIMA, self).predict(params, start, end, exog,
-> 1186 dynamic)
1187
1188 start = self._get_predict_start(start, dynamic)
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in predict(self, params, start, end, exog, dynamic)
732 # will return an index of a date
733 start = self._get_predict_start(start, dynamic)
--> 734 end, out_of_sample = self._get_predict_end(end, dynamic)
735 if out_of_sample and (exog is None and self.k_exog > 0):
736 raise ValueError("You must provide exog for ARMAX")
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in _get_predict_end(self, end, dynamic)
1062 Handling of inclusiveness should be done in the predict function.
1063 """
-> 1064 end, out_of_sample = super(ARIMA, self)._get_predict_end(end, dynamic)
1065 if 'mle' not in self.method and not dynamic:
1066 end -= self.k_ar
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/arima_model.py in _get_predict_end(self, end, dynamic)
673 def _get_predict_end(self, end, dynamic=False):
674 # pass through so predict works for ARIMA and ARMA
--> 675 return super(ARMA, self)._get_predict_end(end)
676
677 def geterrors(self, params):
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_predict_end(self, end)
177 freq = self.data.freq
178 out_of_sample = datetools._idx_from_dates(dates[-1], dtend,
--> 179 freq)
180 else:
181 if freq is None:
~/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/datetools.py in _idx_from_dates(d1, d2, freq)
100 return len(DatetimeIndex(start=_maybe_convert_period(d1),
101 end=_maybe_convert_period(d2),
--> 102 freq=_freq_to_pandas[freq])) - 1
103
104
~/anaconda3/lib/python3.6/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
116 else:
117 kwargs[new_arg_name] = new_arg_value
--> 118 return func(*args, **kwargs)
119 return wrapper
120 return _deprecate_kwarg
~/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/datetimes.py in __new__(cls, data, freq, start, end, periods, copy, name, tz, verify_integrity, normalize, closed, ambiguous, dtype, **kwargs)
303
304 if data is None and freq is None:
--> 305 raise ValueError("Must provide freq argument if no data is "
306 "supplied")
307
ValueError: Must provide freq argument if no data is supplied
我做错了什么?
根据 Chad Fulton 的建议,我尝试 A) 以预先指定的频率下载数据,B) 下载后手动更改原始数据的频率,C) 将 statsmodels 更新为 0.9 并重试上述所有操作。
A 给我错误“从传递的日期推断的频率 None 不符合传递的频率 D”,而 B 在数据中产生 NaN
,导致模型本身无法运行,并且C 更改 B 的错误类型。
我认为发生的情况是,由于无法将频率应用于数据,因此预测不应因不知道如何生成 future 日期而受到指责。在这种情况下,是否有人对在进行基本预测时如何利用尽可能多的金融时间序列数据有任何实用的建议,至少对于自动处理丢失数据的非状态空间模型?
最佳答案
我的第一个答案可能不太令人满意,但从长远来看可能更好,是建议您升级到 Statsmodels 0.9,它对日期/时间处理进行了彻底修改。这很可能解决您的问题。
我的第二个答案是,您可以通过确保日期索引具有频率来解决 Statsmodels < 0.9 的问题。看来您的日期可能是每天的(如果不是,您必须更改以下内容才能使用正确的 freq
参数),因此我建议您替换:
价格 = pd.Series(data.iloc[:,2].values,index=pd.to_datetime(data.iloc[:,1]))
与:
价格 = pd.Series(data.iloc[:,2].values, index=pd.DatetimeIndex(data.iloc[:,1], freq='D'))
关于python - Statsmodels:很难将 ARIMA 预测与原始数据的置信界限叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567645/
在更大的应用程序的上下文中,我的小程序需要将一些数据打印到 Zebra 或 Dymo(取决于用户安装的内容)标签打印机。 我收到的数据是转义形式,我只需要发送到打印机并让它解释它的数据。 搜索我找到了
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭去年。 Improve th
我正在尝试使用 GetUserMedia() 从用户麦克风录制和保存声音片段和 AudioContext蜜蜂。 我已经能够使用 MediaRecorder 做到这一点API,但不幸的是,Safari/
我想编写一个将十六进制数据转换为音频文件的小型Web应用程序。 音频文件的数据将采用十六进制格式,如下所示: DA1FFFF8B3AEEE2E23BBB9A2221F10400180001EF1C1E
在其中一个 API 中,我收到以下 Json 响应:您可以在此处查看此响应示例 Sample Json resopnse { "histogram" : { "1" : "12
如何在 python 上使用 Resuests 库发布原始数据?我正在尝试登录。 Json 抛出异常 TypeError: set(['"clienteLogin":{"Token":"b94261f
有人告诉我,无论何时使用字节,都应该将变量声明为无符号字符。在 Windows 的数据类型中,BYTE 被声明为 unsigned char。 我的问题: 为什么? Unsigned 是从 0 到 2
如何读取 GPS 原始数据,更具体地说,我需要卫星伪距。此数据不提供 NMEA 格式。 最佳答案 卫星伪距在 official API 中不可用 ,既不通过 GpsStatus.Listener 也不
给定以下 XML: 1424 我正在尝试获取
我使用了以下代码将十进制的 bigint 转换为 bytearray(原始数据),但我得到了错误的结果。 这里有什么错误吗? 我正在 Apple Mac 中尝试此操作(适用于 Iphone 应用程序)
我在 iOS 应用程序中使用 Firebase 登录时遇到了表格 View 问题。该表从子提要加载内容。当我第一次登录时,表加载正常,但如果我注销并再次登录,表会重新加载所有数据,将原始数据添加到表的
我正在使用 Apache BCEL动态创建 java 类,每个类都有自己的关联图像。这些生成的类实现了以下接口(interface): interface ImageOwner { byte[
有没有办法读取 Sim 卡的“原始”数据?类似于如何使用 Pdu 的 SmsMessage 原始数据读取原始数据? 最佳答案 阅读SIM卡相关信息需要TelephonyManager API . Te
有没有办法在命令行 curl 中将数据 POST 或 GET(插入您最喜欢的 HTTP 方法)数据到 URL 并包含在原始发布的数据 header 值中,而不是发出 -H 选项? 例如: $curl
我正在开展一个项目,尝试使用 Myo Gesture Control Armband 识别一些用于康复治疗的 Action /姿势。 . 我有三个问题: EMG Raw Data 返回的最大值和最小值
我有 flv 文件,其中包含带有 aac 原始数据的音频标签。每个音频标签都有一组 aac 原始数据。原始数据有不同的大小。我想通过 RTP 发送。我添加了 13 位大小的 AU header 。它是
我使用制造商提供的库通过 USB 访问相机。我通过结构接收有关图像的信息: typedef struct { /*! Buffer handle which contains new data
我正在从事 BLE 项目,其中录音机硬件连续流式传输数据并发送到 iOS 应用程序。从 iOS 应用程序端,我需要读取传输的数据。 硬件向 iOS 应用程序发送 HEX 数据,我们需要创建 .mp3/
我正在尝试使用 AFNetworking 发出 HTTP PUT 请求以在 CouchDB 服务器中创建附件。服务器需要 HTTP 正文中的 base64 编码字符串。如何在不使用 AFNetwork
我有一些 Graylog2 使用 syslog 输入插件接收的日志。 我需要以我收到的相同格式导出它们,无需任何解析,以便我可以发送给应用程序支持团队。 我已将 INPUT 设置为保留 full_ma
我是一名优秀的程序员,十分优秀!