如何取多元正态密度的导数?


35

假设我具有多元正态N(μ,Σ)密度。我想获得第二(局部的)衍生物WRT μ。不知道如何取矩阵的导数。

维基说在矩阵中逐个元素地取导数。

我正在使用拉普拉斯逼近

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

模式是 θ = μθ^=μ

我得到

Σ1=2θ2logp(θ^|y),
这究竟是怎么来的呢?

我所做的:

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

因此,我将导数wrt取到θ,首先是有转置,其次是矩阵。所以,我被困住了。

注意:如果我的教授遇到此问题,则是指该讲座。


1
问题的一部分可能是您对数似然的表达式有错误-您有您应该在其中记录日志| Σ |。另外,万一你的意思Σ - 1 = - 2|Σ|log(|Σ|)Σ1=2θ2logp(θ|y)
2012年

是的,你是对的,对不起。为什么偏导数前面有负号?
user1061210 2012年

我只是在澄清负号,因为负二阶导数是观察到的费舍尔信息,通常对此很感兴趣。此外,通过我自己的计算,我发现2θ2logp(θ|y)=Σ1

那么,离散/连续函数的一般程序是什么?就拿日志,在泰勒展开形式写,分化两次WRT 。Fisher信息通常在大多数其他密度下都不正确,对吗?θ
user1061210 2012年

3
@user正如我指出的那样,对数的二阶导数必须具有非正特征值。是的,正如最大似然估计,Fisher信息等理论所揭示的,方差与负二阶导数之间存在联系-Macro在这些注释中已提到了这一点。
ub

Answers:


66

Matrix Cookbook的第二章中,对矩阵演算的内容进行了很好的回顾,它给出了许多有用的标识,这些标识可以帮助人们解决概率和统计问题,其中包括有助于区分多元高斯似然性的规则。

如果您有一个随机向量是多元正态的,且均值向量和协方差矩阵,则使用矩阵食谱中的等式(86)来找到相对于对数似然为yμΣLμ

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

我将它留给您来再次区分,找到答案是。Σ1

作为“额外信用”,使用等式(57)和(61)来发现相对于的梯度为Σ

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

我省略了很多步骤,但是我仅使用在矩阵食谱中找到的身份进行了推导,因此我将留给您填补空白。

我已经将这些得分方程式用于最大似然估计,所以我知道它们是正确的:)


4
很好的参考-我自己会推荐它。对于不了解矩阵代数的人来说,不是一个很好的教学参考。真正的挑战来自实际制定。真痛苦。Σ
probabilityislogic

3
关于矩阵演算的另一个很好的来源是Magnus&Neudecker,amazon.com /…
StasK

2
该公式的参考编号已更改(可能是由于新版本)。新的参考方程式是
86。– goelakash

2
我在这里可能不在基地,但我认为这个公式不正确。我一直在用真实的例子,并看它们的有限差异。看来的公式为对角线条目提供了正确的值。但是,非对角线输入仅是其应有的一半。LΣ
jjet

5

您需要确保正确处理中的重复元素,否则您的派生词将是不正确的。例如,(141)矩阵食谱为对称以下导数ΣΣΣ

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

并且(14)的协方差矩阵函数的微分给出

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

其中表示Hadmard积,为方便起见,我们定义了。X= ÿ - μx:=yμ

特别要注意的是,这与不施加对称性时不同。结果,我们有了Σ

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

其中表示,和的尺寸以及的导数。是0X Ÿ μ d 日志| 2个π |DxyμDlog|2π|

这样可确保的元素对应于。大号i,jth∂&大号LΣLΣij


0

我试图通过计算验证@Macro的答案,但发现在协方差解决方案中似乎是一个小错误。他获得了 但是,看来正确的解决方案实际上是 以下R脚本提供了一个简单示例,其中为每个元素计算了有限差分。它表明=2-DIAGΣ

LΣ=12(Σ1Σ1(yμ)(yμ)Σ1)=A
B=2Adiag(A)
ΣA仅对角线元素提供正确答案,而对每个条目都是正确的。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

感谢您的评论。我相信您对符号的理解不同于其他人,因为您同时更改了匹配的非对角线元素对,从而使更改效果加倍。实际上,您正在计算方向导数的倍数。在应该进行转置的范围内,Macro的解决方案似乎确实存在一个小问题-但这对对称矩阵的应用程序不会产生任何影响。Σ
ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.