如何解读 adfuller 测试结果?
How to interpret adfuller test results?
我很难理解 p 值的概念和 adfuller 检验的各种其他结果。
我使用的代码:
(我在 Stack Overflow 中找到了这段代码)
import numpy as np
import os
import pandas as pd
import statsmodels.api as sm
import cython
import statsmodels.tsa.stattools as ts
loc = r"C:\Stock Study\Stock Research\Hist Data"
os.chdir(loc)
xl_file1 = pd.ExcelFile("HDFCBANK.xlsx")
xl_file2 = pd.ExcelFile("KOTAKBANK.xlsx")
y1 = xl_file1.parse("Sheet1")
x1 = xl_file2.parse("Sheet1")
x = x1['Close']
y = y1['Close']
def cointegration_test(y, x):
# Step 1: regress on variable on the other
ols_result = sm.OLS(y, x).fit()
# Step 2: obtain the residual (ols_resuld.resid)
# Step 3: apply Augmented Dickey-Fuller test to see whether
# the residual is unit root
return ts.adfuller(ols_result.resid)
输出:
(-1.8481210964862593, 0.35684591783869046, 0, 1954, {'10%': -2.5675580437891359, '1%': -3.4337010293693235, '5%': -2.863020285222162}, 21029.870846458849)
如果我正确理解测试:
价值
adf : 浮动
检验统计
p值:浮点数
MacKinnon 基于 MacKinnon (1994, 2010) 的近似 p 值
使用延迟:整数
使用的滞后数
贵族 : int
用于 ADF 回归和计算临界值的观测值数量
临界值:dict
检验统计量在 1 %、5 % 和 10 % 水平的临界值。基于 MacKinnon (2010)
icbest : 浮动
autolag 不是 None 时的最大化信息准则。
resstore:ResultStore,可选
我无法完全理解结果,希望有人愿意通俗易懂地解释一下。我找到的所有解释都非常技术性。
我的解释是:它们是协整的,即我们未能反驳零假设(即单位根存在)。置信水平是百分比数字。
我完全错了吗?
拒绝原假设的典型方法是您的 t 检验结果 -1.84 小于所有临界值(1%、5%、10%),在这种情况下,它不小于您的临界值值。
你在问题中所说的是正确的。一旦您对 OLS 回归残差应用 Adfuller 检验,您就是在检查您的残差是否具有任何异方差性,换句话说,如果您的残差是平稳的。
由于你的 adfuller p 值低于某个指定的 alpha(即:5%),那么你可以拒绝原假设 (Ho),因为得到 p 值的概率低至纯粹的运气(随机机会)是不太可能的。
一旦拒绝了Ho,就可以接受备择假设(Ha),在这种情况下就是:残差序列是平稳的。
这里是给你的假设关系:
Ho:序列不是平稳的,它呈现异方差性。换句话说,你的残差取决于它自己(即:yt 取决于 yt-1,yt-1 取决于 yt-2 ...,依此类推)
哈:序列是平稳的(这通常是我们在回归分析中所希望的)。无需再做任何事情。
原假设:序列中存在非平稳性。
备择假设:序列存在平稳性
Data: (-1.8481210964862593, 0.35684591783869046, 0, 1954, {'10%': -2.5675580437891359,
'1%': -3.4337010293693235, '5%': -2.863020285222162}, 21029.870846458849)
让我们一个一个分解数据。
第一个数据点: -1.8481210964862593:您案例中数据的临界值
第二个数据点: 0.35684591783869046:原假设不会被拒绝的概率(p值)
第三个数据点: 0:回归中用于确定 t 统计量的滞后数。所以这里没有自动关联回到“0”周期。
第四个数据点: 1954 年:分析中使用的观测数。
第五个数据点: {'10%': -2.5675580437891359, '1%': -3.4337010293693235, '5%': -2.863020285222162}: adfuller对应的T值测试。
由于临界值-1.8>-2.5、-3.4、-2.8(t值在1%、5%和10%的置信区间),不能拒绝原假设。所以你的数据存在非平稳性
此外,p 值 0.35>0.05(如果我们采用 5% 的显着性水平或 95% 的置信区间),则不能拒绝原假设。
因此数据是非平稳的(这意味着它与时间有关)
我很难理解 p 值的概念和 adfuller 检验的各种其他结果。
我使用的代码:
(我在 Stack Overflow 中找到了这段代码)
import numpy as np
import os
import pandas as pd
import statsmodels.api as sm
import cython
import statsmodels.tsa.stattools as ts
loc = r"C:\Stock Study\Stock Research\Hist Data"
os.chdir(loc)
xl_file1 = pd.ExcelFile("HDFCBANK.xlsx")
xl_file2 = pd.ExcelFile("KOTAKBANK.xlsx")
y1 = xl_file1.parse("Sheet1")
x1 = xl_file2.parse("Sheet1")
x = x1['Close']
y = y1['Close']
def cointegration_test(y, x):
# Step 1: regress on variable on the other
ols_result = sm.OLS(y, x).fit()
# Step 2: obtain the residual (ols_resuld.resid)
# Step 3: apply Augmented Dickey-Fuller test to see whether
# the residual is unit root
return ts.adfuller(ols_result.resid)
输出:
(-1.8481210964862593, 0.35684591783869046, 0, 1954, {'10%': -2.5675580437891359, '1%': -3.4337010293693235, '5%': -2.863020285222162}, 21029.870846458849)
如果我正确理解测试:
价值 | |
---|---|
adf : 浮动 | 检验统计 |
p值:浮点数 | MacKinnon 基于 MacKinnon (1994, 2010) 的近似 p 值 |
使用延迟:整数 | 使用的滞后数 |
贵族 : int | 用于 ADF 回归和计算临界值的观测值数量 |
临界值:dict | 检验统计量在 1 %、5 % 和 10 % 水平的临界值。基于 MacKinnon (2010) |
icbest : 浮动 | autolag 不是 None 时的最大化信息准则。 |
resstore:ResultStore,可选 |
我无法完全理解结果,希望有人愿意通俗易懂地解释一下。我找到的所有解释都非常技术性。
我的解释是:它们是协整的,即我们未能反驳零假设(即单位根存在)。置信水平是百分比数字。
我完全错了吗?
拒绝原假设的典型方法是您的 t 检验结果 -1.84 小于所有临界值(1%、5%、10%),在这种情况下,它不小于您的临界值值。
你在问题中所说的是正确的。一旦您对 OLS 回归残差应用 Adfuller 检验,您就是在检查您的残差是否具有任何异方差性,换句话说,如果您的残差是平稳的。
由于你的 adfuller p 值低于某个指定的 alpha(即:5%),那么你可以拒绝原假设 (Ho),因为得到 p 值的概率低至纯粹的运气(随机机会)是不太可能的。
一旦拒绝了Ho,就可以接受备择假设(Ha),在这种情况下就是:残差序列是平稳的。
这里是给你的假设关系:
Ho:序列不是平稳的,它呈现异方差性。换句话说,你的残差取决于它自己(即:yt 取决于 yt-1,yt-1 取决于 yt-2 ...,依此类推)
哈:序列是平稳的(这通常是我们在回归分析中所希望的)。无需再做任何事情。
原假设:序列中存在非平稳性。
备择假设:序列存在平稳性
Data: (-1.8481210964862593, 0.35684591783869046, 0, 1954, {'10%': -2.5675580437891359,
'1%': -3.4337010293693235, '5%': -2.863020285222162}, 21029.870846458849)
让我们一个一个分解数据。
第一个数据点: -1.8481210964862593:您案例中数据的临界值
第二个数据点: 0.35684591783869046:原假设不会被拒绝的概率(p值)
第三个数据点: 0:回归中用于确定 t 统计量的滞后数。所以这里没有自动关联回到“0”周期。
第四个数据点: 1954 年:分析中使用的观测数。
第五个数据点: {'10%': -2.5675580437891359, '1%': -3.4337010293693235, '5%': -2.863020285222162}: adfuller对应的T值测试。
由于临界值-1.8>-2.5、-3.4、-2.8(t值在1%、5%和10%的置信区间),不能拒绝原假设。所以你的数据存在非平稳性
此外,p 值 0.35>0.05(如果我们采用 5% 的显着性水平或 95% 的置信区间),则不能拒绝原假设。
因此数据是非平稳的(这意味着它与时间有关)