¿Cómo tomar derivado de densidad normal multivariante?

35

Digamos que tengo una densidad normal multivariada . Quiero obtener la segunda derivada (parcial) wrt . No estoy seguro de cómo tomar derivada de una matriz.norte(μ,Σ)μ

Wiki dice que tome el elemento derivado por elemento dentro de la matriz.

Estoy trabajando con la aproximación de Laplace El modo es .Θ = μ

Iniciar sesiónPAGSnorte(θ)=Iniciar sesiónPAGSnorte-12(θ-θ^)TΣ-1(θ-θ^).

θ^=μ

Me dieron ¿cómo sucedió esto?

Σ-1=-2θ2Iniciar sesiónpags(θ^El |y),

Lo que he hecho:

Iniciar sesiónPAGS(θEl |y)=-k2Iniciar sesión2π-12Iniciar sesiónEl |ΣEl |-12(θ-θ^)TΣ-1(θ-θ^)

Entonces, tomo la derivada wrt para , en primer lugar, hay una transposición, en segundo lugar, es una matriz. Entonces, estoy atascado.θ

Nota: Si mi profesor se encuentra con esto, me estoy refiriendo a la conferencia.

usuario1061210
fuente
1
parte de su problema puede ser que su expresión para la probabilidad de registro tenga un error: usted tienedonde deberías tener \ log (| \ Sigma |) . Además, por casualidad quisiste decir {\ Sigma} ^ {- 1} = - \ frac {{{\ partial} ^ {2}}} {\ partial {{\ theta} ^ {2}}} \ log p (\ theta | y) ? log ( | Σ | ) Σ - 1 = - 2|Σ|log(|Σ|)Σ1=2θ2logp(θ|y)
Macro
Sí, tienes razón, lo siento. ¿Por qué hay un signo negativo frente a la derivada parcial?
user1061210
Solo estaba aclarando sobre el signo negativo porque, la segunda derivada negativa es la información de pesca observada, que generalmente es de interés. Además, según mis propios cálculos, descubro que2θ2Iniciar sesiónpags(θEl |y)=-Σ-1
Macro
Entonces, ¿cuál es el procedimiento general para la función discreta / continua? Tomar registro, escribir en forma de expansión Taylor, diferenciar dos veces wrt . La información de Fisher no es generalmente cierta en la mayoría de las otras densidades, ¿verdad? θ
user1061210
3
@user Como señalé, la segunda derivada del logaritmo debe tener valores propios no positivos. Sí, hay vínculos entre las variaciones y las derivadas secundarias negativas, como revela la teoría de la estimación de máxima verosimilitud, la información de Fisher, etc. - Macro se ha referido a eso anteriormente en estos comentarios.
Whuber

Respuestas:

66

En el capítulo 2 del Matrix Cookbook hay una buena revisión del material de cálculo matricial que brinda muchas identidades útiles que ayudan con los problemas que uno encontraría al hacer la probabilidad y las estadísticas, incluidas las reglas para ayudar a diferenciar la probabilidad gaussiana multivariada.

Si tiene un vector aleatorio que es multivariante normal con el vector medio y la matriz de covarianza , use la ecuación (86) en el libro de cocina de la matriz para encontrar que el gradiente de la probabilidad de registro con respecto a esμ Σ L μyμΣLμ

Lμ=-12((y-μ)Σ-1(y-μ)μ)=-12(-2Σ-1(y-μ))=Σ-1(y-μ)

Dejaré que usted diferencie esto nuevamente y encuentre la respuesta como .Σ1

Como "crédito adicional", use las ecuaciones (57) y (61) para encontrar que el gradiente con respecto a esΣ

LΣ=-12(Iniciar sesión(El |ΣEl |)Σ+(y-μ)Σ-1(y-μ)Σ)=-12(Σ-1-Σ-1(y-μ)(y-μ)Σ-1)

He omitido muchos de los pasos, pero hice esta derivación utilizando solo las identidades que se encuentran en el libro de cocina de la matriz, por lo que te lo dejaré a ti para completar los vacíos.

He usado estas ecuaciones de puntuación para la estimación de máxima verosimilitud, así que sé que son correctas :)

Macro
fuente
44
Gran referencia: lo recomendaría yo mismo. No es una buena referencia pedagógica para alguien que no sabe álgebra de matrices sin embargo. El verdadero reto viene del hecho que se resuelve . Un verdadero dolor. Σ
probabilityislogic
3
Otra buena fuente sobre cálculo matricial es Magnus & Neudecker, amazon.com/…
StasK
2
El número de referencia de la ecuación ha cambiado (quizás debido a una nueva edición). La nueva ecuación de referencia es 86.
goelakash
2
Podría estar fuera de lugar aquí, pero no creo que esta fórmula sea correcta. He estado usando esto con ejemplos reales y mirando sus diferencias finitas. Parece que la fórmula para da los valores correctos para las entradas diagonales. Sin embargo, las entradas fuera de la diagonal son la mitad de lo que deberían ser. LΣ
jjet
5

Debe asegurarse de cuidar adecuadamente los elementos repetidos en , de lo contrario, sus derivados serán incorrectos. Por ejemplo, (141) el Matrix Cookbook proporciona para un simétrico las siguientes derivadasΣΣΣ

Iniciar sesiónEl |ΣEl |Σ=2Σ-1-(Σ-1yo)

Y (14) de la diferenciación de las funciones de las matrices de covarianza da

rastro(Σ-1XX)Σ=-2Σ-1XXΣ-1+(Σ-1XXΣ-1yo)

donde denota el producto Hadmard y por conveniencia hemos definido .x : = y - μX: =y-μ

Tenga en cuenta en particular que esto no es lo mismo que cuando no se impone la simétrica de . Como resultado tenemos esoΣ

LΣ=-Σ12(reIniciar sesiónEl |2πEl |+Iniciar sesiónEl |ΣEl |+XΣ-1X))=-Σ12(Iniciar sesiónEl |ΣEl |+rastro(Σ-1XX))=-12(2Σ-1-(Σ-1yo)-2Σ-1XXΣ-1+(Σ-1XXΣ-1yo))

donde denota la dimensión de , y y la derivada dees 0x yreXy D log | 2 π |μreIniciar sesiónEl |2πEl |

Esto garantiza que el elemento de corresponde a .Lyo,jthLLΣLΣyoj

Lawrence Middleton
fuente
0

Traté de verificar computacionalmente la respuesta de @ Macro pero encontré lo que parece ser un error menor en la solución de covarianza. Obtuvo Sin embargo, parece que la solución correcta es en realidad El siguiente script R proporciona un ejemplo simple en el que se calcula la diferencia finita para cada elemento de . Demuestra queB=2A-diag(A)ΣA

LΣ=-12(Σ-1-Σ-1(y-μ)(y-μ)Σ-1)=UNA
si=2UNA-diag(UNA)
ΣUNAproporciona la respuesta correcta solo para elementos diagonales, mientras que es correcta para cada entrada.si
library(mvtnorm)

set.seed(1)

# Generate some parameters
p <- 4
mu <- rnorm(p)
Sigma <- rWishart(1, p, diag(p))[, , 1]

# Generate an observation from the distribution as a reference point
x <- rmvnorm(1, mu, Sigma)[1, ]

# Calculate the density at x
f <- dmvnorm(x, mu, Sigma)

# Choose a sufficiently small step-size
h <- .00001

# Calculate the density at x at each shifted Sigma_ij
f.shift <- matrix(NA, p, p)
for(i in 1:p) {
  for(j in 1:p) {
    zero.one.mat <- matrix(0, p, p)
    zero.one.mat[i, j] <- 1
    zero.one.mat[j, i] <- 1

    Sigma.shift <- Sigma + h * zero.one.mat
    f.shift[i, j] <- dmvnorm(x, mu, Sigma.shift)
  }
}

# Caluclate the finite difference at each shifted Sigma_ij
fin.diff <- (f.shift - f) / h

# Calculate the solution proposed by @Macro and the true solution
A <- -1/2 * (solve(Sigma) - solve(Sigma) %*% (x - mu) %*% t(x - mu) %*% solve(Sigma))
B <- 2 * A - diag(diag(A))

# Verify that the true solution is approximately equal to the finite difference
fin.diff
A * f
B * f
jjet
fuente
Gracias por tu comentario. Creo que interpretas la notación de manera diferente a la de todos los demás, porque al mismo tiempo cambias pares de elementos coincidentes fuera de la diagonal de , duplicando así el efecto del cambio. En efecto, está calculando un múltiplo de una derivada direccional. Parece haber un pequeño problema con la solución de Macro en la medida en que se debe tomar una transposición , pero eso no cambiaría nada en la aplicación a las matrices simétricas. Σ
whuber