【问题标题】:How exactly BIC in Augmented Dickey–Fuller test work in Python?Augmented Dickey-Fuller 测试中的 BIC 在 Python 中究竟是如何工作的?
【发布时间】:2016-02-01 13:11:47
【问题描述】:

这个问题是关于 statsmodels.tsa.stattools python 库 - adfuller() 中的 Augmented Dickey–Fuller 测试实现。

原则上,AIC 和 BIC 应该为一组可用模型计算信息标准,并选择最好的(信息损失最低的模型)。

但它们如何在 Augmented Dickey-Fuller 的背景下运作?

我没有得到的东西:我设置了 maxlag=30,BIC 选择了带有一些信息标准的 lags=5。我已设置 maxlag=40 - BIC 仍选择 lags=5 但信息标准已更改!为什么在世界上相同数量的滞后的信息标准会随着 maxlag 的变化而不同?

有时这会导致模型选择发生变化,当 BIC 从 lags=5 切换到 lags=4 时,而 maxlag 从 20 更改为 30,这是没有意义的,因为 lag=4 以前可用。

【问题讨论】:

  • 这不是一个真正的编程问题 - stats.stackexchange.com 可能更合适。
  • 如果我没记错的话,原因是为了确保 AIC、BIC 搜索对所有模型使用相同的观察结果,所有滞后的初始观察次数都相同。如果 maxlag 发生变化,那么样本也会发生变化。
  • @tzaman:嗯,我考虑过统计部分,但问题是关于其中一个包中统计方法的具体实现,因此我选择了这个部分。
  • @user333700:这很合适!那么,您是否暗示第一个 BIC 使用 (NumOfObs - maxlag) 观察次数搜索最佳模型,然后使用 (NumOfObs - LagsOfChosenOne) 观察运行选择的模型?您可以将此作为答案发布。我想,就是这样。
  • 我写了一个答案。我不记得runs the chosen one with (NumOfObs - LagsOfChosenOne) ,但我检查了代码,这就是 adfuller 正在做的。

标签: python statsmodels


【解决方案1】:

当我们在 adfulller 中请求自动滞后选择时,该函数需要比较所有模型,直到给定 maxlag 滞后。对于这种比较,我们需要对所有模型使用相同的观察结果。由于滞后观测值进入回归矩阵,我们将观测值作为初始条件,对应于包含的最大滞后值。

因此autolag 对所有模型使用nobs - maxlags 观测值。为了计算 adfuller 本身的测试统计量,我们不再需要模型比较,我们可以使用所有可用于所选滞后的观察值,即nobs - best_lag

更一般地说,如何处理初始条件和不同数量的初始条件并不总是一目了然,自相关和偏自相关主要基于使用所有可用的观测值,AR 和 ARMA 模型的完整 MLE 使用平稳模型来包含初始条件,而条件 MLE 或最小二乘法根据需要丢弃它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2017-08-23
    • 2023-04-01
    相关资源
    最近更新 更多