【问题标题】:Why I get MemoryError when I run ADF test?为什么我在运行 ADF 测试时出现 MemoryError?
【发布时间】:2020-05-07 19:21:59
【问题描述】:

这是我的时间序列:


                          data    z_data   zp_data
time                                              
2018-01-01 00:00:00  -0.045988       NaN       NaN
2018-01-01 00:01:00  -0.046024       NaN       NaN
2018-01-01 00:02:00  -0.044360       NaN       NaN
2018-01-01 00:03:00  -0.044722       NaN       NaN
2018-01-01 00:04:00  -0.043637       NaN       NaN
                        ...       ...       ...
2018-12-12 23:55:00  11.454639  0.088124  1.631736
2018-12-12 23:56:00  11.498422  0.935382  2.551753
2018-12-12 23:57:00  11.521695  1.251496  1.223949
2018-12-12 23:58:00  11.476974  0.244583 -0.012273
2018-12-12 23:59:00  11.480120  0.278023  0.015562
[498240 rows x 3 columns]


我使用了增强的 Dickey-Fuller 测试。该测试用于评估时间序列是否平稳。但我得到了 MemoryError。我该如何解决这个问题?

【问题讨论】:

  • 你没有足够的内存来容纳这个数组。

标签: python time-series statsmodels


【解决方案1】:

autolag 正在浪费内存,因为它在滞后搜索期间将所有完整模型保留在内存中。

https://github.com/statsmodels/statsmodels/issues/1849

一些可能的解决方法是

  • 修复滞后数并避免自动滞后搜索,或者
  • 限制滞后数,设置maxlag,为滞后搜索评估

这并没有真正考虑到大的时间序列。

【讨论】:

    【解决方案2】:

    根据Python's documentation

    异常内存错误

    当一个操作耗尽内存但情况仍然可以挽救时引发(通过删除一些对象)。关联的值是一个字符串,指示哪种(内部)操作耗尽了内存。请注意,由于底层内存管理架构(C 的 malloc() 函数),解释器可能并不总是能够完全从这种情况中恢复;尽管如此,它还是会引发异常,以便可以打印堆栈回溯,以防程序失控。

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 2019-05-12
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2022-06-15
      相关资源
      最近更新 更多