Un problème courant en statistique est le calcul de l'inverse de la racine carrée d'une matrice définie positive symétrique. Quelle serait la façon la plus efficace de calculer cela?
Je suis tombé sur de la littérature (que je n'ai pas encore lue) et un code R accessoire ici , que je reproduirai ici pour plus de commodité
# function to compute the inverse square root of a matrix
fnMatSqrtInverse = function(mA) {
ei = eigen(mA)
d = ei$values
d = (d+abs(d))/2
d2 = 1/sqrt(d)
d2[d == 0] = 0
return(ei$vectors %*% diag(d2) %*% t(ei$vectors))
}
Je ne suis pas tout à fait sûr de comprendre la ligne d = (d+abs(d))/2
. Existe-t-il un moyen plus efficace de calculer l'inverse de la racine carrée de la matrice? La eigen
fonction R appelle LAPACK .
d[d<0] = 0
, ce qui est plus expressif.