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 .Θ = μ

log⁡PN(θ)=log⁡PN−12(θ−θ^)TΣ−1(θ−θ^).

θ^=μ

Saya diberi bagaimana ini bisa terjadi?

Σ-1=-∂2∂θ2log⁡hal(θ^|y),

Apa yang telah saya lakukan:

log⁡P(θ|y)=−k2log⁡2π−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.


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∂θ2log⁡p(θ|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∂θ2log⁡p(θ|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 :)


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−(Σ−1∘I)

Dan (14) Diferensiasi fungsi matriks kovarian memberikan

∂trace(Σ−1xx⊤)∂Σ=−2Σ−1xx⊤Σ−1+(Σ−1xx⊤Σ−1∘I)

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−(Σ−1∘I)−2Σ−1xx⊤Σ−1+(Σ−1xx⊤Σ−1∘I))

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.


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=2A−diag(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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.