VAR
Autorégression vectorielle en niveau, estimation OLS native (coefficients, IC, IRF, FEVD, Granger, JB, whiteness, diagnostics graphiques).
README source :
makystats/var_model/README.md
Import
from makystats import VAR, select_var_order
Déterministes
det | Contenu |
|---|---|
n | aucun |
c | constante (défaut) |
t | tendance linéaire seule |
ct | constante + tendance |
ctt | constante + tendance + quadratique |
Exemple
res = VAR(df[["DTS", "FMG"]], k_ar=1, det="c").fit()
print(res.summary())
print(res.aic, res.bic)
print(res.forecast(5, conf_int=True, variables=["DTS", "FMG"]))
print(res.irf(10).to_wide()["DTS"])
print(res.fevd(10).to_wide()["DTS"])
print(res.test_causality("DTS", "FMG"))
print(res.test_normality())
print(res.test_whiteness(nlags=2))
res.plot_diagnostics(lags=12)
Sélection d’ordre
order = select_var_order(data, maxlags=4, det="c", criterion="bic")
print(order.table, order.best, order.selected)
order = select_var_order(data, maxlags=4, return_best=True, criterion="aic")
order.best_model.summary()
Options : criterion, return_best, verbose, common_sample.
Pont vers le VECM
p = order.best
k_ar_diff = p - 1
rank = select_coint_rank(data, k_ar_diff=k_ar_diff, test_case="3")
if rank.rank >= 1:
model = VECM(data, k_ar_diff=k_ar_diff, coint_rank=rank.rank, det_case="3a").fit()
else:
res = VAR(data, k_ar=p, det="c").fit()
API VARResults
| Méthode / propriété | Rôle |
|---|---|
summary() | Tables par équation + diagnostics + IC système |
params / stderr / tvalues / pvalues | Coefficients |
fittedvalues / resid | DataFrames, index d’estimation |
forecast(..., variables=…) | Prévision filtrée |
irf / fevd | .to_wide(), .plot() |
test_causality, test_normality, test_whiteness | Tests |
plot_diagnostics | 1 ligne / équation |
IRF, FEVD, lecture
Pour l’équation DTS à l’horizon 5, shock[FMG] = 0.38 signifie qu’environ
38 % de l’erreur de prévision de DTS à 5 pas est attribuable aux chocs sur FMG
(ordre de Cholesky = ordre des colonnes).
IC système (−2ℓ/T) : AIC = −2ℓ/T + 2k/T ; BIC = −2ℓ/T + k log(T)/T.