python ADF单位根检验,序列平稳性检验

平稳的序列 直观感受如下:

但还有一种情况:数据量也大,但是结论依旧比较离谱,比如我统计考研人数:

  • 第一年上去一拨人,另一波人二战
  • 第二年,参加考试的二战的同学凭实力挤下去应届的,但仍有人三战;也有一部分应届生考上了,但另一部分二战
  • 第三年…三战的挤下去二战的,二战的挤下去一战的…同样,一战变为二战,二战变为三战,三战变为四战…

所以当我要统计考研人数的时候,其实统计的就是:一战的 + (二战剩下的+三战剩下的+…+N战剩下的),时间维度越长,这个 N战剩下的就对结果影响越大。

其中当我要预测考研人数的时候: 二战剩下的+三战剩下的+.....+N战剩下的 = 之前剩下的这个 之前剩下的就称为 单位根,带着单位根预测有没有问题?没有问题!但是不够准!

单位根检验 / 平稳性检验:就是用来判断是否数据中是否存在”之前剩下的”这一部分,如果能剔除出去,问题就变得简单了,准确性也会更高。单位根检验分很多,更多请参考其他更理论的内容哈

一般常用的就是ADF单位根检验

  • H0:不平稳,存在单位根
  • H1:平稳,不存在单位根

示例代码:

from statsmodels.tsa.stattools import adfuller
import numpy as np

if __name__ == '__main__':
    array = np.random.standard_normal(size=100)
    adf_result = adfuller(array)
    adf_value = adf_result[0]
    print("adf值:", adf_value)
    p_value = adf_result[1]
    print("p:", p_value)
    t_value = adf_result[4]
    print("临界值:", t_value)

得到结果:

adf值: -4.918907632344451
p: 3.203639985122076e-05
临界值: {'1%': -3.506944401824286, '5%': -2.894989819214876, '10%': -2.584614550619835}

如果要证明数据平稳,需要:

Original: https://blog.csdn.net/weixin_35757704/article/details/121769993
Author: 呆萌的代Ma
Title: python ADF单位根检验,序列平稳性检验

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601394/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球