时间序列学习(4):平稳性检验(单位根检验、ADF检验) | 您所在的位置:网站首页 › DF检验是什么 › 时间序列学习(4):平稳性检验(单位根检验、ADF检验) |
时间序列学习(4):平稳性检验(单位根检验、ADF检验)
1、单位根检验2、ADF检验3、指数走势的检验4、对数收益率序列检验
相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。 这篇笔记来就谈一谈平稳性的检验。 到目前为止,我们有了以下的时间序列模型: 白噪声;随机游走;AR模型;MA模型;ARMA模型。我们知道白噪声、MA模型一定是平稳的(这里的平稳都是弱平稳);随机游走一定是不平稳的;ARMA模型取决于其AR部分。 所以唯一需要做平稳性检验的就是AR模型。 1、单位根检验先来看一阶AR模型,即AR(1)的情况,其模型如下: r t = α 1 r t − 1 + w t r_t=\alpha_1r_{t-1}+w_t rt=α1rt−1+wt 如果 α 1 = 1 \alpha_1=1 α1=1,该模型就是随机游走,我们知道它是不平稳的。换个思路想象一下,当 α 1 = 1 \alpha_1=1 α1=1,那么前一时刻的收益率对当下时刻的影响是100%的,不会减弱;那么就算是很远的某个时刻,当下对它的影响还是不会消除,所以方差(表现在波动)是受前面所有时刻的影响,是和 t t t相关的,因此不平稳; 如果 α 1 > 1 \alpha_1\gt1 α1>1,那么当前时刻的波动不仅受前面时刻的影响,还被放大了,所以肯定不平稳; 只有当 α 1 < 1 \alpha_1\lt1 α1}} for i in range(len(prices)): current_price = prices.iloc[i,0] if i == 0: current_return = 0 else: last_price = prices.iloc[i-1,0] current_return = math.log(current_price)-math.log(last_price) date = list(prices.index)[i] returns['return'][date] = current_return return_df = pd.DataFrame(returns, columns=['return'], index=list(prices.index)) fig = plt.figure(figsize=(10, 6)) ax = fig.add_axes([0.2, 0.2, 1.2, 1.2]) ax.plot(return_df, color="blue", linewidth=1.5, linestyle="-", label=r'hs300-daily-log-returns') plt.legend(loc='upper right', frameon=False) 检验结果如下: unitroot_adf(return_df.loc[:,'return']) (-6.9332827227876, 1.070439257686785e-09, 8, 466, {'1%': -3.4444609168389615, '5%': -2.8677622536920317, '10%': -2.5700842229549266}, -2646.8267439593874)这个结果里,t-检验值远小于1%的临界值,P-Value也远小于1%。所以,序列没有显著的不平稳性。因而我们可以认为该序列是平稳的。 这里要注意的一点是:当我们采用ADF进行检验的时候,我们实际上已经假设用AR模型对序列进行建模了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |