42 votos

¿Cómo tomar la derivada de la densidad normal multivariante?

Digamos que tengo una normal multivariante $N(\mu, \Sigma)$ densidad. Quiero obtener la segunda derivada (parcial) con respecto a $\mu$ . No estoy seguro de cómo tomar la derivada de una matriz.

Wiki dice que hay que tomar la derivada elemento por elemento dentro de la matriz.

Estoy trabajando con la aproximación de Laplace $$\log{P}_{N}(\theta)=\log {P}_{N}-\frac{1}{2}{(\theta-\hat{\theta})}^{T}{\Sigma}^{-1}(\theta-\hat{\theta}) \>.$$
El modo es $\hat\theta=\mu$ .

Me dieron $${\Sigma}^{-1}=-\frac{{{\partial }^{2}}}{\partial {{\theta }^{2}}}\log p(\hat{\theta }|y),$$ ¿cómo surgió esto?

Lo que he hecho:
$$\log P(\theta|y) = -\frac{k}{2} \log 2 \pi - \frac{1}{2} \log \left| \Sigma \right| - \frac{1}{2} {(\theta-\hat \theta)}^{T}{\Sigma}^{-1}(\theta-\hat\theta)$$

Por lo tanto, tomo la derivada con respecto a $\theta$ En primer lugar, hay una transposición, en segundo lugar, es una matriz. Así que, estoy atascado.

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

1 votos

Parte de tu problema puede ser que tu expresión para la log-verosimilitud tiene un error - tienes $|\Sigma|$ donde debería tener $\log(|\Sigma|)$ . Además, por casualidad, ¿quieres decir ${\Sigma}^{-1}=-\frac{{{\partial }^{2}}}{\partial {{\theta }^{2}}}\log p(\theta|y)$ ?

0 votos

Sí, tienes razón, lo siento. ¿Por qué hay un signo negativo delante de la derivada parcial?

0 votos

Sólo aclaraba lo del signo negativo porque, la segunda derivada negativa es la información de fisher observada, que suele ser de interés. Además, por mi propio cálculo, estoy encontrando que $\frac{{{\partial }^{2}}}{\partial {{\theta }^{2}}}\log p(\theta|y) = -\Sigma^{-1}$

83voto

Niall Puntos 51

En el capítulo 2 del Libro de cocina Matrix hay una buena revisión del cálculo de matrices que da un montón de identidades útiles que ayudan con los problemas que uno encontraría haciendo probabilidad y estadística, incluyendo reglas para ayudar a diferenciar la probabilidad gaussiana multivariada.

Si tienes un vector aleatorio ${\boldsymbol y}$ que es normal multivariante con el vector de la media ${\boldsymbol \mu}$ y la matriz de covarianza ${\boldsymbol \Sigma}$ , a continuación, utilice la ecuación (86) en el libro de cocina de la matriz para encontrar que el gradiente de la probabilidad logarítmica ${\bf L}$ con respecto a ${\boldsymbol \mu}$ es

$$\begin{align} \frac{ \partial {\bf L} }{ \partial {\boldsymbol \mu}} &= -\frac{1}{2} \left( \frac{\partial \left( {\boldsymbol y} - {\boldsymbol \mu} \right)' {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y} - {\boldsymbol \mu}\right) }{\partial {\boldsymbol \mu}} \right) \nonumber \\ &= -\frac{1}{2} \left( -2 {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y} - {\boldsymbol \mu}\right) \right) \nonumber \\ &= {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y} - {\boldsymbol \mu} \right) \end{align}$$

Te dejo que diferencies esto de nuevo y que encuentres la respuesta para ser $-{\boldsymbol \Sigma}^{-1}$ .

Como "crédito extra", utiliza las ecuaciones (57) y (61) para encontrar que el gradiente con respecto a ${\boldsymbol \Sigma}$ es

$$ \begin{align} \frac{ \partial {\bf L} }{ \partial {\boldsymbol \Sigma}} &= -\frac{1}{2} \left( \frac{ \partial \log(|{\boldsymbol \Sigma}|)}{\partial{\boldsymbol \Sigma}} + \frac{\partial \left( {\boldsymbol y} - {\boldsymbol \mu}\right)' {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y}- {\boldsymbol \mu}\right) }{\partial {\boldsymbol \Sigma}} \right)\\ &= -\frac{1}{2} \left( {\boldsymbol \Sigma}^{-1} - {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y} - {\boldsymbol \mu} \right) \left( {\boldsymbol y} - {\boldsymbol \mu} \right)' {\boldsymbol \Sigma}^{-1} \right) \end{align} $$

He omitido muchos de los pasos, pero he hecho esta derivación utilizando sólo las identidades que se encuentran en el libro de recetas de matrices, así que dejaré que tú rellenes los huecos.

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

4 votos

Gran referencia - iba a recomendarlo yo mismo. Sin embargo, no es una buena referencia pedagógica para alguien que no sepa álgebra matricial. El verdadero reto viene de trabajar realmente $\Sigma$ . Un verdadero dolor.

3 votos

Otra buena fuente sobre cálculo matricial es Magnus & Neudecker, amazon.com/

2 votos

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 la 86.

9voto

sarafi Puntos 14

Debes asegurarte de que cuidas adecuadamente los elementos repetidos en $\mathbf{\Sigma}$ De lo contrario, sus derivados serán incorrectos. Por ejemplo, (141) el libro de cocina Matrix da para una simetría $\mathbf{\Sigma}$ los siguientes derivados

\begin{align} \frac{\partial \log|\mathbf{\Sigma}|}{\partial \mathbf{\Sigma}}&=2\mathbf{\Sigma}^{-1}-(\mathbf{\Sigma}^{-1}\circ I) \end{align}

Y (14) de Diferenciación de funciones de matrices de covarianza da \begin{align} \frac{\partial \textrm{trace}(\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top)}{\partial \mathbf{\Sigma}}&=-2\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top\mathbf{\Sigma}^{-1}+(\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top\mathbf{\Sigma}^{-1}\circ I) \end{align}

donde $\circ$ denota el producto de Hadmard y por comodidad hemos definido $\mathbf{x}:=\mathbf{y}-\mathbf{\mu}$ .

Obsérvese en particular que esto no es lo mismo que cuando la simetría de $\mathbf{\Sigma}$ no se impone. Como resultado tenemos que

\begin{align} \frac{\partial \mathbf{L}}{\partial \mathbf{\Sigma}}&=-\frac{\partial }{\partial \mathbf{\Sigma}}\frac{1}{2}\left(D\log|2\pi|+ \log|\mathbf{\Sigma}| + \mathbf{x}^{\top}\mathbf{\Sigma}^{-1}\mathbf{x})\right)\\ &=-\frac{\partial }{\partial \mathbf{\Sigma}}\frac{1}{2}\left( \log|\mathbf{\Sigma}| + \textrm{trace}(\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top)\right)\\ &=-\frac{1}{2}\left( 2\mathbf{\Sigma}^{-1}-(\mathbf{\Sigma}^{-1}\circ I) -2\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top\mathbf{\Sigma}^{-1}+(\mathbf{\Sigma}^{-1}\mathbf{x}\mathbf{x}^\top\mathbf{\Sigma}^{-1}\circ I)\right) \end{align}

donde $D$ denota la dimensión de $\mathbf{x}$ , $\mathbf{y}$ y $\mathbf{\mu}$ y la derivada de $D\log|2\pi|$ es 0

Esto asegura la $i,j^{th}$ elemento de $\frac{\partial \mathbf{L}}{\partial \mathbf{\Sigma}}$ corresponde a $\frac{\partial \mathbf{L}}{\partial \mathbf{\Sigma}_{ij}}$ .

1voto

anonimus.riga Puntos 21

He intentado verificar computacionalmente la respuesta de @Macro pero he encontrado lo que parece ser un pequeño error en la solución de covarianza. Obtuvo $$ \begin{align} \frac{ \partial {\bf L} }{ \partial {\boldsymbol \Sigma}} &= -\frac{1}{2} \left( {\boldsymbol \Sigma}^{-1} - {\boldsymbol \Sigma}^{-1} \left( {\boldsymbol y} - {\boldsymbol \mu} \right) \left( {\boldsymbol y} - {\boldsymbol \mu} \right)' {\boldsymbol \Sigma}^{-1} \right) ={\bf A} \end{align} $$ Sin embargo, parece que la solución correcta es en realidad $$ {\bf B}=2{\bf A} - \text{diag}({\bf A}) $$ El siguiente R script proporciona un ejemplo sencillo en el que se calcula la diferencia finita para cada elemento de ${\boldsymbol \Sigma}$ . Demuestra que ${\bf A}$ proporciona la respuesta correcta sólo para los elementos diagonales mientras que ${\bf B}$ es correcto para cada entrada.

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X