Jak pobrać pochodną wielowymiarowej gęstości normalnej?

35

Powiedzmy, że mam wielowymiarową normalną gęstość . Chcę uzyskać drugą (częściową) pochodną wrt . Nie wiem, jak pobrać pochodną macierzy.N(μ,Σ)μ

Wiki mówi, że weź pochodną element po elemencie do matrycy.

Pracuję z aproksymacją Laplace'a Tryb to .Θ = μ

logPN(θ)=logPN12(θθ^)TΣ1(θθ^).

θ^=μ

Dostałem jak do tego doszło?

Σ1=2θ2logp(θ^|y),

Co zrobiłem:

logP(θ|y)=k2log2π12log|Σ|12(θθ^)TΣ1(θθ^)

Więc biorę pochodną wrt do , po pierwsze, jest transpozycja, po drugie, jest to macierz. Więc utknąłem.θ

Uwaga: jeśli mój profesor się z tym spotka, mam na myśli wykład.

użytkownik1061210
źródło
1
częścią problemu może być to, że wyrażenie prawdopodobieństwa dziennika zawiera błąd - maszgdzie powinieneś mieć . Czy przez przypadek miałeś na myśli ? log ( | Σ | ) Σ - 1 = - 2|Σ|log(|Σ|)Σ1=2θ2logp(θ|y)
Makro
Tak, masz rację, przepraszam. Dlaczego przed częściową pochodną jest znak ujemny?
user1061210
Właśnie wyjaśniałem znak ujemny, ponieważ ujemną drugą pochodną jest obserwowana informacja o rybaku, która zwykle jest interesująca. Ponadto, według moich własnych obliczeń, stwierdzam, że2θ2logp(θ|y)=Σ1
Makro
Więc jaka jest ogólna procedura dla funkcji dyskretnej / ciągłej? Weź dziennik, napisz w formie rozszerzenia Taylora, różnicuj dwa razy wrt . Informacje Fishera ogólnie nie są prawdziwe w przypadku większości innych gęstości, prawda? θ
użytkownik1061210
3
@ użytkownik Jak wskazałem, druga pochodna logarytmu musi mieć nie dodatnie wartości własne. Tak, istnieją powiązania między wariancjami a ujemnymi drugimi pochodnymi cząstkowymi, jak pokazuje teoria szacowania maksymalnego prawdopodobieństwa, informacje Fishera itp. - Makro wspomniał o tym wcześniej w tych komentarzach.
whuber

Odpowiedzi:

66

W rozdziale 2 Matrix Cookbook znajduje się niezły przegląd rachunku macierzy, który daje wiele przydatnych tożsamości, które pomagają w rozwiązywaniu problemów związanych z prawdopodobieństwem i statystykami, w tym regułami, które pomagają rozróżnić wielowymiarowe prawdopodobieństwo Gaussa.

Jeśli masz losowy wektor który jest wielowymiarowy normalny ze średnim wektorem i macierzą kowariancji , użyj równania (86) w książce kucharskiej macierzy, aby ustalić, że gradient prawdopodobieństwo dziennika w odniesieniu do wynosiμ Σ L μyμΣLμ

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

Pozostawiam tobie, abyś to ponownie rozróżniał i znalazł odpowiedź na: .Σ1

Jako „dodatkowy kredyt” użyj równań (57) i (61), aby stwierdzić, że gradient względem wynosiΣ

LΣ=12(log(|Σ|)Σ+(yμ)Σ1(yμ)Σ)=12(Σ1Σ1(yμ)(yμ)Σ1)

Pominąłem wiele kroków, ale wykonałem to wyprowadzenie, używając tylko tożsamości znalezionych w macierzowej książce kucharskiej, więc zostawię to tobie, aby wypełnić luki.

Użyłem tych równań punktowych do oszacowania maksymalnego prawdopodobieństwa, więc wiem, że są poprawne :)

Makro
źródło
4
Świetne referencje - sam go polecę. Nie jest to dobre odniesienie pedagogiczne dla kogoś, kto nie zna algebry macierzy. Prawdziwe wyzwanie wiąże się z faktycznym opracowaniem . Prawdziwy ból. Σ
probabilislogiczny
3
Innym dobrym źródłem na rachunku macierzowym jest Magnus i Neudecker, amazon.com/…
StasK
2
Numer referencyjny równania został zmieniony (być może z powodu nowej edycji). Nowe równanie referencyjne to 86.
Goelakash
2
Mógłbym tu być poza bazą, ale nie sądzę, aby ta formuła była poprawna. Używam tego z prawdziwymi przykładami i przyglądam się ich skończonym różnicom. Wygląda na to, że formuła dla podaje poprawne wartości dla wpisów po przekątnej. Jednak wpisy o przekątnej stanowią połowę tego, czym powinny być. LΣ
jjet
5

Musisz upewnić się, że odpowiednio zajmujesz się powtarzającymi się elementami w , w przeciwnym razie twoje pochodne będą niepoprawne. Na przykład (141) Matrix Cookbook podaje dla symetrycznego następujące pochodneΣΣΣ

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

I (14) Zróżnicowanie funkcji macierzy kowariancji daje

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

gdzie oznacza produkt Hadmarda i dla wygody zdefiniowaliśmy .x:=yμ

Zwróć uwagę, że nie jest to to samo, co gdy nie jest narzucona symetryczność . W rezultacie mamy toΣ

LΣ=Σ12(Dlog|2π|+log|Σ|+xΣ1x))=Σ12(log|Σ|+trace(Σ1xx))=12(2Σ1(Σ1I)2Σ1xxΣ1+(Σ1xxΣ1I))

gdzie oznacza wymiar , i oraz pochodnąwynosi 0DxyμDlog|2π|

Zapewnia to, że element elementu odpowiada .i,jthLΣLΣij

Lawrence Middleton
źródło
0

Próbowałem komputerowo zweryfikować odpowiedź @ Macro, ale znalazłem drobny błąd w rozwiązaniu kowariancji. Uzyskał Jednak wydaje się, że poprawne rozwiązanie to w rzeczywistości Poniższy skrypt R stanowi prosty przykład, w którym różnicę skończoną oblicza się dla każdego elementu . To pokazuje, żeB=2A-diag(A)ΣAB

LΣ=12(Σ1Σ1(yμ)(yμ)Σ1)=A
B=2Adiag(A)
ΣAzapewnia poprawną odpowiedź tylko dla elementów ukośnych, podczas gdy jest poprawny dla każdego wpisu.B
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
źródło
Dziękuję za Twój komentarz. Sądzę, że interpretujesz notację inaczej niż wszyscy inni, ponieważ jednocześnie zmieniasz pary pasujących elementów o przekątnej , podwajając w ten sposób efekt zmiany. W efekcie obliczasz wielokrotność pochodnej kierunkowej. Wydaje się, że istnieje mały problem z rozwiązaniem Macro, o ile należy podjąć transpozycję - ale to nie zmieni niczego w aplikacji na matryce symetryczne. Σ
whuber