Bagaimana cara mengambil turunan dari kepadatan normal multivariat?

35

Katakanlah saya memiliki kepadatan multivarian normal . Saya ingin mendapatkan turunan kedua (parsial) wrt . Tidak yakin bagaimana cara mengambil turunan dari sebuah matriks.N(μ,Σ)μ

Wiki mengatakan ambil elemen turunan dengan elemen di dalam matriks.

Saya bekerja dengan aproksimasi Laplace Mode adalah .Θ = μ

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

θ^=μ

Saya diberi bagaimana ini bisa terjadi?

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

Apa yang telah saya lakukan:

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

Jadi, saya mengambil turunan wrt ke , pertama, ada transpos, kedua, itu adalah matriks. Jadi saya terjebak.θ

Catatan: Jika profesor saya menemukan ini, saya merujuk pada kuliah.

pengguna1061210
sumber
1
bagian dari masalah Anda mungkin ekspresi Anda untuk log-kemungkinan memiliki kesalahan - Anda memiliki di mana Anda harus memiliki log ( | Σ | ) . Selain itu, apa pun maksud Anda Σ - 1 = - 2|Σ|log(|Σ|)? Σ1=2θ2logp(θ|y)
Makro
Ya kamu benar, maaf. Mengapa ada tanda negatif di depan turunan parsial?
user1061210
Saya hanya mengklarifikasi tentang tanda negatif karena, turunan kedua negatif adalah informasi nelayan yang diamati, yang biasanya menarik. Juga, dengan perhitungan saya sendiri, saya menemukan bahwa 2θ2logp(θ|y)=Σ1
Makro
Jadi, bagaimana prosedur umum untuk fungsi diskrit / kontinu? Ambil log, tulis dalam bentuk ekspansi Taylor, bedakan dua kali wrt . Info Fisher umumnya tidak benar pada kebanyakan kepadatan lainnya, bukan? θ
user1061210
3
@user Seperti yang saya tunjukkan, turunan kedua dari logaritma harus memiliki nilai eigen yang tidak positif. Ya, ada hubungan antara varian dan turunan parsial negatif kedua, seperti yang diungkapkan teori estimasi kemungkinan maksimum, informasi Fisher, dll. - Makro telah merujuk hal itu sebelumnya dalam komentar ini.
whuber

Jawaban:

66

Dalam bab 2 dari Matrix Cookbook ada ulasan bagus tentang hal-hal kalkulus matriks yang memberikan banyak identitas berguna yang membantu dengan masalah yang akan dihadapi seseorang dalam melakukan probabilitas dan statistik, termasuk aturan untuk membantu membedakan kemungkinan multisariat Gaussian Gaussian.

Jika Anda memiliki vektor acak yang normal multivariat dengan vektor rata-rata μ dan matriks kovarian Σ , maka gunakan persamaan (86) dalam buku masak matriks untuk menemukan bahwa gradien log kemungkinan log L berkenaan dengan μ adalahyμΣLμ

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

Saya akan menyerahkan kepada Anda untuk membedakan ini lagi dan menemukan jawabannya adalah .Σ1

Sebagai "kredit ekstra", gunakan persamaan (57) dan (61) untuk menemukan bahwa gradien sehubungan dengan adalahΣ

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

Saya telah meninggalkan banyak langkah, tetapi saya membuat derivasi ini hanya dengan menggunakan identitas yang ditemukan dalam buku masak matriks, jadi saya akan menyerahkan kepada Anda untuk mengisi kekosongan.

Saya telah menggunakan persamaan skor ini untuk estimasi kemungkinan maksimum, jadi saya tahu mereka benar :)

Makro
sumber
4
Referensi hebat - akan merekomendasikannya sendiri. Bukan referensi pedagogis yang baik untuk seseorang yang tidak tahu aljabar matriks. Tantangan sebenarnya datang dari benar-benar berolahraga . Rasa sakit yang nyata. Σ
probabilityislogic
3
Sumber bagus lain tentang matriks kalkulus adalah Magnus & Neudecker, amazon.com/...
StasK
2
Nomor referensi persamaan telah diubah (mungkin karena edisi baru). Persamaan referensi baru adalah 86.
goelakash
2
Saya mungkin tidak di sini, tetapi saya rasa formula ini tidak benar. Saya telah menggunakan ini dengan contoh nyata dan melihat perbedaan mereka yang terbatas. Tampaknya rumus untuk memberikan nilai yang benar untuk entri diagonal. Namun, entri off-diagonal adalah setengah dari yang seharusnya. LΣ
jjet
5

Anda perlu memastikan bahwa Anda benar mengurus elemen diulang dalam , jika tidak, anda derivatif sedang akan salah. Sebagai contoh, (141) Matrix Cookbook memberikan simetris met turunan berikutΣΣ

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

Dan (14) Diferensiasi fungsi matriks kovarian memberikan

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

where denotes the Hadmard product and for convenience we have defined x:=yμ.

Note in particular this is not the same as when symmetricity of Σ is not imposed. As a result we have that

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

where D denotes the dimension of x, y and μ and the derivative of Dlog|2π| is 0

This ensures the i,jth element of LΣ corresponds to LΣij.

Lawrence Middleton
sumber
0

I tried to computationally verify @Macro's answer but found what appears to be a minor error in the covariance solution. He obtained

LΣ=12(Σ1Σ1(yμ)(yμ)Σ1)=A
However, it appears that the correct solution is actually
B=2Adiag(A)
The following R script provides a simple example in which the finite difference is calculated for each element of Σ. It demonstrates that A provides the correct answer only for diagonal elements while B is correct for every entry.
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
sumber
Thank you for your comment. I believe you interpret the notation differently than everyone else has, because you simultaneously change pairs of matching off-diagonal elements of Σ, thereby doubling the effect of the change. In effect you are computing a multiple of a directional derivative. There does appear to be a small problem with Macro's solution insofar as a transpose ought to be taken--but that would change nothing in the application to symmetric matrices.
whuber