Python一行代码实现ADF检验(时间序列平稳性检验)(包含结果解读)

在做时间序列的平稳性检验时,经常会用到ADF检验法

如何用python写一个ADF检验平稳性呢?

又该如何理解ADF检验的结果呢?

很简单:

# ADF
result = adfuller(y_list)
print('The result of ADF: ')
print(result)

其中 y_list 是 List 类型变量

输出结果显示为

(-3.5847310180083602, 0.006059737672943494, 11, 355, {‘1%’: -3.448905534655263, ‘5%’: -2.8697161816205705, ‘10%’: -2.5711258103550882}, -216.36816495128028)

我们看第一个值,-3.58 。它在 {‘1%’: -3.448905534655263, ‘5%’: -2.8697161816205705, ‘10%’: -2.5711258103550882},这个区间中的位置是小于1%所对应的-3.44的,而且第二个值0.006也非常接近于0

由此便可得出结论:这个序列是平稳的。如果是大于10%,那么就是一个不稳定的了

当然,中间还有很多其它的转换过程,比如否定H0假设,单位根的概念等,这里只给出了最终判断方法

tip:如果不稳定,就需要进行差分处理。我的博文里有差分的实现方法~

### 使用MATLAB对时间序列数据进行ADF单位根检验 #### ADF单位根检验简介 ADF (Augmented Dickey-Fuller) 单位根检验用于检测时间序列是否存在单位根,即该系列是否平稳。如果存在单位根,则表明时间序列是非平稳的。 #### MATLAB中的ADF检验函数 `adftest` `adftest` 函数可以用来执行增广迪基-富勒(Augmented Dickey-Fuller, ADF)测试来判断给定的时间序列是否有单位根[^4]。 #### 示例代码及解释 下面是一个简单的例子展示如何使用MATLAB内置的 `adftest` 函数来进行ADF单位根检验: ```matlab % 假设 Y 是待测时间序列向量 Y = randn(100, 1); % 这里仅作为示例生成随机数列代替实际数据 % 执行ADF检验,默认模型为带有漂移项和平滑参数的自回归过程 [h, pValue, stat, cValue, reg] = adftest(Y, 'model', 'ARD'); % 输出结果 disp(['拒绝原假设(无单位根):', num2str(h)]); disp(['p-value: ', num2str(pValue)]); disp(['检验统计量: ', num2str(stat)]); disp(['临界值: ', num2str(cValue)]); % 显示回归分析详情 disp('回归细节:'); disp(reg); ``` 上述代码中: - `'model'` 参数指定了所使用的模型类型;此处选择了包含常数项和趋势项在内的自回归分布滞后模型(`'ARD'`)。 - 返回的结果包括布尔值 `h` 表明是否应该拒绝零假设(不存在单位根),以及相应的P值 (`pValue`) 和其他诊断信息。 对于更复杂的场景,比如想要指定不同的延迟阶数或改变默认设置,可以通过调整输入参数实现更多定制化操作[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值