2017-09-12 7 views
0

J'ajuste un modèle d'autorégression vectorielle sur le paquet de données Canada dans le vars, puis je le restreigne en fonction d'une valeur t de 1,64. Je veux ensuite obtenir les critères d'information révisés, mais je ne vois pas de moyen de le faire. Est-ce que quelqu'un sait comment?vars paquet de R - AIC après restreindre

EDIT 1

J'essaie donc de tirer l'AIC pour le modèle sans restriction:

vars::VARselect(Canada, lag.max = 2, type = "none")$criteria 
        1   2 
AIC(n) -5.600280680 -6.082112784 
HQ(n) -5.411741957 -5.705035337 
SC(n) -5.130676924 -5.142905272 
FPE(n) 0.003697972 0.002289041 

s <- summary(var.can1) 
s$covres 
       e   prod   rw    U 
e  0.140560073 0.0056629572 -0.03893668 -0.0798565366 
prod 0.005662957 0.4358209615 0.06689687 -0.0005118419 
rw -0.038936678 0.0668968657 0.60125872 0.0309232731 
U -0.079856537 -0.0005118419 0.03092327 0.0899478736 

De Nouvelle introduction à l'analyse des séries chronologiques multiples Luetkepohl, Helmut 2007, pg 147:

$$ AIC (m) = ln (det (covres)) + \ frac {2mk^2} {T} $$

m est l'ordre de décalage, k est le nombre de séries, T est la taille de l'échantillon

Mais je reçois:

-6,451984 + 2 * 2 * 4^2/84 = -5,69

qui ne correspond pas à -5,600280680

Répondre

0

En fouillant dans le code Je trouve que la matrice de covariance résiduelle qui est rapportée dans le résumé n'est pas ce qui est réellement utilisé pour calculer l'AIC.

Assez frustrant, certains diraient un bug.

library(vars) 
data("Canada") 
var.can1 <- VAR(Canada, p = 2, type = "none") 

s <- summary(var.can1) 

# Variance covariance matrix for the resid 
s$covres 

# e   prod   rw    U 
# e  0.140560073 0.0056629572 -0.03893668 -0.0798565366 
# prod 0.005662957 0.4358209615 0.06689687 -0.0005118419 
# rw -0.038936678 0.0668968657 0.60125872 0.0309232731 
# U -0.079856537 -0.0005118419 0.03092327 0.0899478736 

vars::VARselect(Canada, lag.max = 2, type = "none")$criteria 


# AIC is defined as: 
# AICm = ln(det(sigma)) + (2pk^2)/N 
# p = lag order, K = num series 

p <- 2 
K <- 4 

N <- nrow(Canada) - p 
(AIC1 <- log(det(s$covres)) + (2*2*4^2)/N) 

# [1] -5.671496 is nothing like -6.082112784 


# The residual covariance matrix 
# that is reported in the summary is not what is actually used 
# to compute the AIC. 

myresid <- residuals(var.can1) 
(mysigma <- crossprod(myresid) * (1/N)) 

# e   prod   rw    U 
# e  0.12684690 0.0051104797 -0.03513798 -0.0720656604 
# prod 0.00511048 0.3933018507 0.06037034 -0.0004619127 
# rw -0.03513798 0.0603703437 0.54259933 0.0279063671 
# U -0.07206566 -0.0004619127 0.02790637 0.0811724773 

log(det(mysigma)) + (2* p * K^2)/N 
# [1] -6.082113, which is very like -6.082112784