Como tirar derivada da densidade normal multivariada?

35

Digamos que tenho densidade normal multivariada . Eu quero obter o segundo derivado (parcial) wrt . Não sei como obter derivada de uma matriz.N(μ,Σ)μ

O Wiki diz que pegue o elemento derivado por elemento dentro da matriz.

Estou trabalhando com a aproximação de Laplace O modo é .Θ = μ

registroPN(θ)=registroPN-1 12(θ-θ^)TΣ-1 1(θ-θ^).

θ^=μ

Recebi como isso aconteceu?

Σ-1 1=-2θ2registrop(θ^|y),

O que eu fiz:

registroP(θ|y)=-k2registro2π-1 12registro|Σ|-1 12(θ-θ^)TΣ-1 1(θ-θ^)

Então, eu levo wrt derivado para , primeiro, há uma transposição, em segundo lugar, é uma matriz. Então, eu estou preso.θ

Nota: Se meu professor se deparar com isso, estou me referindo à palestra.

user1061210
fonte
11
parte do seu problema pode ser que sua expressão para a probabilidade de log tenha um erro - você tem onde você deve ter log ( | Σ | ) . Além disso, por acaso você quis dizer Σ - 1 = - 2|Σ|log(|Σ|)? Σ1=2θ2logp(θ|y)
macro
Sim, você está certo, desculpe. Por que há sinal negativo na frente da derivada parcial?
User1061210
Eu estava apenas esclarecendo o sinal negativo porque, a segunda derivada negativa é a informação observada do pescador, que geralmente é de interesse. Além disso, pelo meu próprio cálculo, estou descobrindo que 2θ2logp(θ|y)=Σ1
Macro
Então, qual é o procedimento geral para função discreta / contínua? Faça o log, escreva na forma de expansão Taylor, diferencie duas vezes wrt . As informações de Fisher geralmente não são verdadeiras na maioria das outras densidades, certo? θ
User1061210
3
@user Como apontei, a segunda derivada do logaritmo deve ter autovalores não positivos. Sim, existem links entre variações e derivadas secundárias negativas, como revela a teoria da estimativa da máxima verossimilhança, informações de Fisher etc. - A Macro se referiu a isso anteriormente nesses comentários.
whuber

Respostas:

66

No capítulo 2 do Matrix Cookbook, há uma boa revisão do material de cálculo matricial, que fornece muitas identidades úteis que ajudam nos problemas encontrados com probabilidades e estatísticas, incluindo regras para ajudar a diferenciar a probabilidade gaussiana multivariada.

Se você tiver um vetor aleatório que é normal multivariado com vetor médio e matriz de covariância , use a equação (86) no livro de receitas da matriz para descobrir que o gradiente de a probabilidade de log em relação a éμ Σ L μyμΣLμ

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

Vou deixar para você diferenciar isso novamente e encontrar a resposta para ser .-Σ-1 1

Como "crédito extra", use as equações (57) e (61) para descobrir que o gradiente em relação a éΣ

euΣ=-1 12(registro(|Σ|)Σ+(y-μ)Σ-1 1(y-μ)Σ)=-1 12(Σ-1 1-Σ-1 1(y-μ)(y-μ)Σ-1 1)

Eu deixei de fora muitas etapas, mas fiz essa derivação usando apenas as identidades encontradas no livro de receitas da matriz, então deixarei para você preencher as lacunas.

Eu usei essas equações de pontuação para estimativa de probabilidade máxima, então eu sei que elas estão corretas :)

Macro
fonte
4
Ótima referência - eu mesmo recomendaria. Não é uma boa referência pedagógica para alguém que não conhece álgebra matricial. O verdadeiro desafio vem de realmente trabalhar com . Uma verdadeira dor. Σ
probabilityislogic
3
Outra boa fonte de cálculo matricial é Magnus & Neudecker, amazon.com/...
Stask
2
O número de referência da equação foi alterado (talvez devido a uma nova edição). A nova equação de referência é 86.
goelakash 17/05
2
Eu poderia estar fora da base aqui, mas não acho que essa fórmula esteja correta. Eu tenho usado isso com exemplos reais e analisando suas diferenças finitas. Parece que a fórmula para dá os valores de correcção para os elementos da diagonal. No entanto, as entradas fora da diagonal são metade do que deveriam ser. LΣ
jjet
5

Você precisa se certificar de que cuida adequadamente dos elementos repetidos em , caso contrário, suas derivadas estarão incorretas. Por exemplo, (141) o Matrix Cookbook fornece uma simétrica Σ as seguintes derivadasΣΣ

log|Σ|Σ=2Σ1(Σ1I)

E (14) da diferenciação de funções das matrizes de covariância fornece

trace(Σ1xx)Σ=2Σ1xxΣ1+(Σ1xxΣ1I)

x:=yμ

Σ

LΣ=Σ12(Dlog|2π|+log|Σ|+xΣ1 1x))=-Σ1 12(registro|Σ|+vestígio(Σ-1 1xx))=-1 12(2Σ-1 1-(Σ-1 1Eu)-2Σ-1 1xxΣ-1 1+(Σ-1 1xxΣ-1 1Eu))

DxyμDregistro|2π|

Eu,jtheuΣeuΣEuj

Lawrence Middleton
fonte
0

euΣ=-1 12(Σ-1 1-Σ-1 1(y-μ)(y-μ)Σ-1 1)=UMA
B=2UMA-diag(UMA)
ΣUMAB está correto 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
jjet
fonte
Σ