Come prendere derivati ​​della densità normale multivariata?


35

Supponiamo che io abbia una densità normale multivariata . Voglio ottenere il secondo (parziale) derivato wrt . Non sono sicuro di come prendere la derivata di una matrice.N(μ,Σ)μ

Wiki dice di prendere l'elemento derivato per elemento all'interno della matrice.

Sto lavorando con l'approssimazione di Laplace La modalità è .Θ = μ

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

θ^=μ

Mi è stato dato come è potuto succedere?

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

Cosa ho fatto:

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

Quindi, prendo la derivata wrt a , prima di tutto, c'è una trasposizione, in secondo luogo, è una matrice. Quindi, sono bloccato.θ

Nota: se il mio professore si imbatte in questo, mi riferisco alla lezione.


1
parte del tuo problema potrebbe essere che la tua espressione per la verosimiglianza presenta un errore - haidove dovresti avere . Inoltre, per caso intendevi ? |Σ|log(|Σ|)Σ1=2θ2logp(θ|y)
Macro

Sì, hai ragione, scusa. Perché c'è un segno negativo davanti al derivato parziale?
user1061210

Stavo solo chiarendo il segno negativo perché, il secondo derivato negativo è l'informazione osservata sul pescatore, che di solito è di interesse. Inoltre, secondo il mio calcolo, sto scoprendo che2θ2logp(θ|y)=Σ1
Macro

Quindi, qual è la procedura generale per la funzione discreta / continua? Prendi log, scrivi nel modulo di espansione di Taylor, differenzia due volte wrt . Le informazioni di Fisher non sono generalmente vere la maggior parte delle altre densità, giusto? θ
user1061210

3
@user Come ho sottolineato, la seconda derivata del logaritmo deve avere autovalori non positivi. Sì, ci sono collegamenti tra varianze e derivati ​​secondari parziali negativi, come rivela la teoria della stima della massima verosimiglianza, informazioni di Fisher, ecc. - Macro ha fatto riferimento a quello prima in questi commenti.
whuber

Risposte:


66

Nel capitolo 2 del Matrix Cookbook c'è una bella rassegna delle cose sul calcolo della matrice che fornisce molte identità utili che aiutano a risolvere i problemi che si incontrerebbero facendo probabilità e statistiche, comprese le regole per aiutare a differenziare la probabilità multirariata gaussiana.

Se hai un vettore casuale che è multivariato normale con il vettore medio e la matrice di covarianza , usa l'equazione (86) nel ricettario della matrice per scoprire che il gradiente di la probabilità del log rispetto a èyμΣLμ

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

Lascerò a te differenziarlo di nuovo e trovare la risposta .Σ1

Come "credito extra", usa le equazioni (57) e (61) per scoprire che il gradiente rispetto a èΣ

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

Ho tralasciato molti passaggi, ma ho fatto questa derivazione usando solo le identità trovate nel ricettario della matrice, quindi ti lascerò a te per colmare le lacune.

Ho usato queste equazioni del punteggio per la stima della massima verosimiglianza, quindi so che sono corrette :)


4
Grande riferimento - lo avrei raccomandato da solo. Non è un buon riferimento pedagogico per qualcuno che non conosce l'algebra matriciale. La vera sfida deriva dall'effettiva elaborazione di . Un vero dolore. Σ
Probislogic

3
Un'altra buona fonte sul calcolo della matrice è Magnus & Neudecker, amazon.com/…
StasK

2
Il numero di riferimento dell'equazione è stato modificato (forse a causa di una nuova edizione). La nuova equazione di riferimento è 86.
goelakash,

2
Potrei essere fuori base qui, ma non credo che questa formula sia corretta. Ho usato questo con esempi reali e ho esaminato le loro differenze finite. Sembra che la formula per fornisca i valori corretti per le voci diagonali. Tuttavia, le voci fuori diagonale sono la metà di ciò che dovrebbero essere. LΣ
jjet

5

Devi assicurarti di occuparti adeguatamente degli elementi ripetuti in , altrimenti i tuoi derivati ​​non saranno corretti. Ad esempio, (141) il libro di cucina Matrix fornisce un simmetrico i seguenti derivatiΣΣ

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

E (14) di differenziazione delle funzioni delle matrici di covarianza

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

dove indica il prodotto Hadmard e per comodità abbiamo definito .x:=yμ

Nota in particolare che questo non è lo stesso di quando non viene imposta la simmetria di . Di conseguenza abbiamo quelloΣ

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

dove indica la dimensione di , e e la derivata diè 0DxyμDlog|2π|

Questo assicura che elemento di corrisponde a .i,jthLΣLΣij


0

Ho provato a verificare computazionalmente la risposta di @ Macro ma ho trovato quello che sembra essere un errore minore nella soluzione di covarianza. Ha ottenuto Tuttavia, sembra che la soluzione corretta sia in realtà Il seguente script R fornisce un semplice esempio in cui viene calcolata la differenza finita per ciascun elemento di . Dimostra che

LΣ=12(Σ1Σ1(yμ)(yμ)Σ1)=A
B=2Adiag(A)
ΣAfornisce la risposta corretta solo per gli elementi diagonali mentre è corretta per ogni voce.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

Grazie per il tuo commento. Credo che tu interpreti la notazione in modo diverso rispetto a tutti gli altri, perché cambi contemporaneamente coppie di elementi off-diagonali corrispondenti di , raddoppiando così l'effetto del cambiamento. In effetti stai calcolando un multiplo di un derivato direzionale. Sembra esserci un piccolo problema con la soluzione di Macro nella misura in cui dovrebbe essere preso un recepimento - ma ciò non cambierebbe nulla nell'applicazione in matrici simmetriche. Σ
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.