在 ARIMA 中搜索最佳参数?
Search for optimal parameters in ARIMA?
我正在学习时间序列预测。 ARIMA 模型具有三个参数:AR 的滞后、积分阶数和 MA 的滞后。
我正在学习这门课程,他们只是通过尝试(添加滞后)不同的模型并检查它是否增加了对数似然和降低了信息标准来估计最佳参数是什么。看起来很行人。
是否有一个过程运行,可以在其中搜索最佳参数。像超参数调整之类的东西?如果没有其他选择,我正在考虑采用 sklearn 的 GridSearch。
有两种可能:
1。您可以使用自相关 (ACF) 和偏自相关 (PACF)。
自相关表示过去的观察(滞后)与时间序列的相关性,也就是时间序列与自身的相关性。如果你有时间序列 y(t),那么你计算 y(t) 和 y(t-1)、y(t) 和 y(t-2) 等的相关性。
自相关的问题在于还包括所谓的中间 effects/indirect 相关。如果 y(t) 和 y(t-1) 相关,则 y(t-1) 和 y(t-2) 也相关。这会间接影响 y(t) 和 y(t-2) 的相关性。您可以在这里找到更详细的解释:
https://otexts.com/fpp2/non-seasonal-arima.html
偏自相关也显示时间序列的相关性及其滞后,但去除了中间效应。这意味着在 PACF 中,您只能看到 y(t) 如何直接受到 y(t-1)、y(t-2) 等的影响。也许也可以在这里看看:
解释这些情节有很多经验法则。我推荐以下内容:
如果 ACF 减弱,请使用与 PACF 具有显着且强相关性的 MA 模型。
如果 PACF 减弱,请使用与 ACF 具有显着且强相关性的 AR 模型。
你也可以在这里看看:
2。您可以使用 auto_arima()
包 pmd 提供了一个函数 auto_arima()
来自动寻找最佳参数。您需要自己找到 d 和 D,但它可以为 p、P、q 和 Q 找到好的参数。它将不同的模型与 AIC 进行比较,以找到可能的最佳拟合。请记住,它不是 100% 可靠的,您需要自己处理平稳性。简而言之,你可以这样使用它:
from pmdarima.arima import auto_arima
auto_arima(y=your_data,
seasonal=True/False,
m=season_length, #only if seasonal=True
trace=True #so that you can see what is happening.
)
有关更多详细信息,请查看:
https://alkaline-ml.com/pmdarima/tips_and_tricks.html
https://alkaline-ml.com/pmdarima/modules/generated/pmdarima.arima.auto_arima.html
我正在学习时间序列预测。 ARIMA 模型具有三个参数:AR 的滞后、积分阶数和 MA 的滞后。
我正在学习这门课程,他们只是通过尝试(添加滞后)不同的模型并检查它是否增加了对数似然和降低了信息标准来估计最佳参数是什么。看起来很行人。
是否有一个过程运行,可以在其中搜索最佳参数。像超参数调整之类的东西?如果没有其他选择,我正在考虑采用 sklearn 的 GridSearch。
有两种可能:
1。您可以使用自相关 (ACF) 和偏自相关 (PACF)。
自相关表示过去的观察(滞后)与时间序列的相关性,也就是时间序列与自身的相关性。如果你有时间序列 y(t),那么你计算 y(t) 和 y(t-1)、y(t) 和 y(t-2) 等的相关性。
自相关的问题在于还包括所谓的中间 effects/indirect 相关。如果 y(t) 和 y(t-1) 相关,则 y(t-1) 和 y(t-2) 也相关。这会间接影响 y(t) 和 y(t-2) 的相关性。您可以在这里找到更详细的解释:
https://otexts.com/fpp2/non-seasonal-arima.html
偏自相关也显示时间序列的相关性及其滞后,但去除了中间效应。这意味着在 PACF 中,您只能看到 y(t) 如何直接受到 y(t-1)、y(t-2) 等的影响。也许也可以在这里看看:
解释这些情节有很多经验法则。我推荐以下内容:
如果 ACF 减弱,请使用与 PACF 具有显着且强相关性的 MA 模型。
如果 PACF 减弱,请使用与 ACF 具有显着且强相关性的 AR 模型。
你也可以在这里看看:
2。您可以使用 auto_arima()
包 pmd 提供了一个函数 auto_arima()
来自动寻找最佳参数。您需要自己找到 d 和 D,但它可以为 p、P、q 和 Q 找到好的参数。它将不同的模型与 AIC 进行比较,以找到可能的最佳拟合。请记住,它不是 100% 可靠的,您需要自己处理平稳性。简而言之,你可以这样使用它:
from pmdarima.arima import auto_arima
auto_arima(y=your_data,
seasonal=True/False,
m=season_length, #only if seasonal=True
trace=True #so that you can see what is happening.
)
有关更多详细信息,请查看:
https://alkaline-ml.com/pmdarima/tips_and_tricks.html
https://alkaline-ml.com/pmdarima/modules/generated/pmdarima.arima.auto_arima.html