다변량 정규 밀도의 미분을 얻는 방법?


35

다변량 정규 밀도 가 있다고 가정 합니다. 두 번째 (부분) 미분 wrt 을 얻고 싶습니다 . 행렬의 미분을 취하는 방법을 모릅니다.N(μ,Σ)μ

Wiki는 행렬 내부의 미분 요소를 요소별로 가져옵니다.

Laplace 근사치 모드는 입니다.

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

θ^=μ

나는 어떻게 이런 일이 일어 났습니까?

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

내가 한 일 :

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

그래서 미분 wrt를 가져갑니다 . 먼저 조옮김이 있습니다. 두 번째로 행렬입니다. 그래서 나는 붙어 있습니다.θ

참고 : 교수님이이 문제를 만나면 강의를 언급합니다.


1
문제의 일부는 로그 우도에 대한 식에 오류가있을 수 있습니다. 가 있어야합니다 . 또한 우연히 ? 로그 ( | Σ | ) Σ 1 = 2|Σ|log(|Σ|)Σ1=2θ2logp(θ|y)
매크로

네, 그렇습니다. 죄송합니다. 부분 도함수 앞에 음의 부호가있는 이유는 무엇입니까?
user1061210

음의 이차 미분은 일반적으로 관심이있는 관찰 된 피셔 정보이기 때문에 음의 부호에 대해 명확하게 설명했습니다. 또한 내 자신의 계산에 의해2θ2logp(θ|y)=Σ1
매크로

이산 / 연속 기능의 일반적인 절차는 무엇입니까? 로그를 작성하고 Taylor 확장 양식을 작성하고 wrt 두 번 구별하십시오 . Fisher 정보는 일반적으로 대부분의 다른 밀도에 해당되지 않습니다. θ
user1061210

3
@user 내가 지적했듯이, 로그의 2 차 도함수는 양수가 아닌 고유 값을 가져야 합니다 . 예, 최대 가능성 추정, Fisher 정보 등의 이론에서 알 수 있듯이 분산과 음의 2 차 도함수 사이에는 연관성이 있습니다. Macroro는 이러한 의견에서 앞서 언급했습니다.
whuber

답변:


66

Matrix Cookbook의 2 장 에는 다변량 가우시안 가능성을 구별하는 규칙을 포함하여 확률 및 통계를 수행하는 데 도움이되는 많은 유용한 ID를 제공하는 행렬 미적분학에 대한 좋은 검토가 있습니다.

평균 벡터 및 공분산 행렬 로 다변량 법선 인 랜덤 벡터 가 있는 경우 행렬 요리 책에서 방정식 (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
훌륭한 참조-직접 추천했습니다. 그래도 행렬 대수를 모르는 사람에게는 좋은 교육 학적 참고 자료는 아닙니다. 실제 과제는 실제로 운동에서 비롯됩니다 . 진짜 고통. Σ
확률 확률

3
행렬 미적분학의 또 다른 좋은 소스는 Magnus & Neudecker, amazon.com/…입니다.
StasK

2
방정식의 참조 번호가 변경되었습니다 (새로운 버전으로 인해). 새로운 참조 방정식은 86입니다.
goelakash

2
나는 기본이 아닐 수도 있지만이 공식이 정확하지 않다고 생각합니다. 나는 이것을 실제 예제와 함께 사용하고 그들의 유한 한 차이점을 살펴 보았습니다. 의 수식 은 대각선 항목에 올바른 값을 제공하는 것 같습니다. 그러나 대각선 이외의 항목은 반 이상이어야합니다. LΣ
jjet

5

에서 반복되는 요소를 올바르게 관리해야합니다 . 그렇지 않으면 파생 상품이 올바르지 않습니다. 예를 들어, (141) Matrix Cookbook 은 대칭 에 다음과 같은 파생물을 제공합니다.ΣΣ

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

그리고 (14) 공분산 행렬의 함수를 차별화 하면

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

여기서 는 Hadmard 제품을 나타내며 편의상 .x:=yμ

특히 이것은 대칭성이 부과되지 않을 때와 동일 하지 않습니다. 결과적으로 우리는Σ

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

여기서 의 치수이다 , 와 과의 유도체0입니다DxyμDlog|2π|

이는 의 요소 가 .i,jthLΣLΣij


0

@Macro의 대답을 계산적으로 확인하려고했지만 공분산 솔루션에서 사소한 오류가있는 것으로 나타났습니다. 그는 그러나 올바른 해결책은 실제로 다음 R 스크립트는 의 각 요소에 대해 유한 차이가 계산되는 간단한 예를 제공합니다 . 그것은 그 보여줍니다

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

당신의 의견에 감사드립니다. 의 일치하는 대각선 이외의 요소 쌍 을 동시에 변경 하여 변경의 효과를 두 배로 늘리기 때문에 다른 모든 표기법과 다르게 표기법을 해석한다고 생각합니다 . 실제로 여러 방향성 파생물을 계산합니다 . 조옮김을 취해야 하는 한 매크로 솔루션에는 작은 문제가 있는 것으로 보이지만 응용 프로그램에서 대칭 행렬로 변경되는 것은 없습니다. Σ
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.