【问题标题】:The result of ADF test doesn't match to ndiff of arima [closed]ADF 测试的结果与 arima 的 ndiff 不匹配 [关闭]
【发布时间】:2022-01-25 18:17:34
【问题描述】:

我尝试在时间序列数据集(股票 sp-500)上使用 ARIMA 模型。

在将数据输入到 ARIMA 模型之前,我想知道时间序列是否具有平稳性。

所以,我选择股票代码为“APA”(Apache Corporation)的股票,我使用包statsmodels.tsa.stattools中的adfuller来测试时间序列是否具有平稳性。

我还使用了 pmdarima.arima 包中的 ndiff 来找到适合 ARIMA 模型的差异数(据我了解,在 ARIMA 模型上设置此数字会使时间序列具有平稳性)。

adfuller的p值大于0.05,所以我认为时间序列没有平稳性(我在这里找到结论:How to interpret adfuller test results?

但是ndiff的结果是0

据我了解,这有点奇怪,因为adfuller 表明时间序列没有平稳性,而ndiff 表明不需要设置 ARIMA 差分项。

我的问题是:如果时间序列非平稳ndiff 的结果不应该大于0 吗?

测试代码:

数据集:https://www.kaggle.com/hanseopark/prediction-of-price-for-ml-with-finance-stats/data

完整代码:https://gist.github.com/bab6426c0e8a10472c924755c1f5ff67.git

【问题讨论】:

  • 不是一个 programming 问题,因此这里离题了;请参阅stackoverflow.com/tags/machine-learning/info 中的介绍和注意事项。我建议您将其移至交叉验证(在您将屏幕截图替换为代码的实际文本之后)。

标签: python statistics time-series statsmodels arima


【解决方案1】:

pmdarima 的功能很棒,但并非万无一失。此外,这实际上取决于您的数据。差分是使数据静止的好方法,但有时它不起作用。它通常用于去除数据中的趋势,而季节性差异用于去除季节性。

股票价格或标准普尔等指数不是季节性的,甚至趋势也难以检测或量化。相反,这样的时间序列通常有很多不规则性,起伏等,在这种情况下,您可能需要应用对数(或组合,或其他东西......)来使数据静止,这样的事情可以' t 总是被pmdarima 甚至 ADF 测试检测到。它们是很棒的工具,但您不能完全依赖它们。

对数解是这样的:

your_dataframe["your_stationary_feature"] = numpy.log(your_dataframe["your_feature"])

如果你预测的是对数数据,那么它需要倒置:

inverted_data = numpy.epx(your_predictions)

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多