美文网首页机器学习金融
时间序列的ADF检验(单位根检验)

时间序列的ADF检验(单位根检验)

作者: 曦宝 | 来源:发表于2018-07-27 16:31 被阅读0次

    from statsmodels.tsa.stattools import adfuller

    我使用的是python的statsmodels。 1532680234(1).jpg

    可以看到里面的参数
    x:array_like,1维,时间序列

    maxlag:int型,最大延迟阶数

    regression:Constant and trend order to include in regression,回归中包含的常数和趋势阶数。解释一下:ADF检验和DF检验一样可以用于三种类型的单位根检验。(王燕,应用时间序列分析,6.3.2ADF检验,分了三种类型,代码里给了四种类型)

        * 'c' : constant only (default),默认,仅有常数均值。
        * 'ct' : constant and trend,有常数均值,有趋势。
        * 'ctt' : constant, and linear and quadratic trend,有常数均值有线性和二次趋势。
        * 'nc' : no constant, no trend,无常数均值,无趋势。
    

    当选择的回归类型不同时,检验结果也会不同。我在这里深深地踩了一个坑。可以看一下时序图,你的数据是否有趋势,是否有常数均值。
    autolag : {'AIC', 'BIC', 't-stat', None},自动选择延迟阶数
    * if None, then maxlag lags are used,如果选择none,则使用最大延迟阶数
    * if 'AIC' (default) or 'BIC', then the number of lags is chosen
    to minimize the corresponding information criterion,如果选择AIC或者BIC,则延迟阶数是根据相应的最小信息准则决定的。(BIC就是SBC准则)(王燕,应用时间序列分析,3.3.6模型优化)
    * 't-stat' based choice of maxlag. Starts with maxlag and drops a
    lag until the t-statistic on the last lag length is significant
    using a 5%-sized test,这个选择要基于最大延迟maxlag,从最大延迟阶数开始,每次减少一个延迟,直到某一阶延迟的t统计量对5%来说是显著的。(也就是说p_value值小于0.05,显著拒绝原假设,证明无单位根,也就是说序列是平稳的)


    image.png

    这是我的数据的检测结果。
    第一部分是τ(tao)统计量的值。
    第二部分是p_value的值。
    第三部分是结果使用的延迟阶数。
    第四部分是ADF回归和计算临界值所使用的观察次数。
    第五部分是临界值。
    第六部分是最大的信息准则的值(如果autolag 非空),也就是AIC或者BIC的值。
    当我们看序列是否平稳的结果时,一般首先看第二部分的p_value值。如果p_value值比0.05小,证明有单位根,也就是说序列平稳。如果p_value比0.05大则证明非平稳。
    源码里有一句note,如果p_value接近于0.05时,则要通过临界值进行判断。也就是说如果p_value接近于0.05就要通过第一部分τ(tao)统计量的值和第五部分的临界值进行对比。τ(tao)统计量的值比临界值小,就证明平稳,反之就是非平稳。我的检测结果τ(tao)统计量的值再临界值5%-10%之间。比5%的临界值大。这里的1%,5%,10%对应的是99%,95%,90%置信区间。
    ADF检验只适合AR(P)模型。
    且对方差齐性效果好,对异方差性效果不佳。异方差可用PP检验。

    相关文章

      网友评论

        本文标题:时间序列的ADF检验(单位根检验)

        本文链接:https://www.haomeiwen.com/subject/khsgmftx.html