이차 제약 조건이 적용되는 다변량 정규 분포에서 표본 추출


답변:


12

이 문제의 공식적인 해결을 위해서는 먼저 적절한 정의가 필요합니다.

"Nd(μ,Σ) 제약 조건에 따라 배포 ||x||2=1"

자연스러운 방법은 X∼Nd(μ,Σ) 조건부 ||X||=ϱ. 이 조건을 사례에 적용하려면ϱ=1. 우리가 사용하는 경우 극 좌표를 ,

x1=ϱcos⁡(θ1)θ1∈[0,π]x2=ϱsin⁡(θ1)cos⁡(θ2)θ2∈[0,π]⋮xd−1=ϱ(∏i=1d−2sin⁡(θi))cos⁡(θd−1)θd−1∈[0,2π]xd=ϱ∏i=1d−1sin⁡(θi)
변형의 야곱은
ϱd−1∏i=1d−2sin⁡(θi)d−1−i
따라서 분포의 조건부 밀도 θ=(θ1,…,θd−1) 주어진 ϱ 이다
f(θ|ϱ)∝exp⁡−12{(x(θ,ϱ)−μ)TΣ−1(x(θ,ϱ)−μ)}∏i=1d−2sin⁡(θi)d−1−i

결론 : 이 밀도는 자 코비안 (Jacobian) 때문에 노말 밀도를 단위 구의 점에 단순히 적용하는 것과 다릅니다.

두 번째 단계는 목표 밀도를 고려하는 것입니다

f(θ|ϱ=1)∝exp⁡−12{(x(θ,1)−μ)TΣ−1(x(θ,1)−μ)}∏i=1d−2sin⁡(θi)d−1−i
매개 변수 공간을 탐색하기 위해 Markov 체인 Monte Carlo 알고리즘을 설계 [0,π]d−2×[0,2π]. 나의 첫 번째 시도는 Gibbs 샘플러에서 이루어졌으며 가장 가까운 구체의 지점에서 초기화되었습니다.μ, 그건, μ/||μ||및 대도시 내 방식으로 한 번에 한 각도 씩 진행 :
  1. 일으키다 θ1(t+1)∼U([θ1(t)−δ1,θ1(t)+δ1]) (합은 계산 된 모듈로 π) 및이 새로운 값을 확률로 수락
    f(θ1(t+1),θ2(t),...|ϱ=1)f(θ1(t),θ2(t),...|ϱ=1)∧1
    그밖에 θ1(t+1)=θ1(t)
  2. 일으키다 θ2(t+1)∼U([θ2(t)−δ2,θ2(t)+δ2]) (합은 계산 된 모듈로 π) 및이 새로운 값을 확률로 수락
    f(θ1(t+1),θ2(t+1),θ3(t),...|ϱ=1)f(θ1(t+1),θ2(t),θ3(t),...|ϱ=1)∧1
    그밖에 θ2(t+1)=θ2(t)
  3. …
  4. 일으키다 θd−1(t+1)∼U([θd−1(t)−δd−1,θd−1(t)+δd−1]) (합은 계산 된 모듈로 2π) 및이 새로운 값을 확률로 수락
    f(θ1(t+1),θ2(t+1),...,θd−1(t+1)|ϱ=1)f(θ1(t+1),θ2(t+1),...,θd−1(t)|ϱ=1)∧1
    그밖에 θd−1(t+1)=θd−1(t)

저울 δ1, δ2, …, δd−1 이상적인 목표를 향해 단계의 수용 률에 따라 조정될 수 있습니다. 50%.

위의 내용을 설명하는 R 코드는 다음과 같습니다. μ 과 Σ:

library(mvtnorm)
d=4
target=function(the,mu=1:d,sigma=diag(1/(1:d))){
 carte=cos(the[1])
 for (i in 2:(d-1))
  carte=c(carte,prod(sin(the[1:(i-1)]))*cos(the[i]))
 carte=c(carte,prod(sin(the[1:(d-1)])))
 prod(sin(the)^((d-2):0))*dmvnorm(carte,mean=mu,sigma=sigma)}
#Gibbs
T=1e4
#starting point
mu=(1:d)
mup=mu/sqrt(sum(mu^2))
mut=acos(mup[1])
for (i in 2:(d-1))
  mut=c(mut,acos(mup[i]/prod(sin(mut))))
thes=matrix(mut,nrow=T,ncol=d-1,byrow=TRUE)
delta=rep(pi/2,d-1)     #scale
past=target(thes[1,])   #current target
for (t in 2:T){
 thes[t,]=thes[t-1,]
 for (j in 1:(d-1)){
   prop=thes[t,]
   prop[j]=prop[j]+runif(1,-delta[j],delta[j])
   prop[j]=prop[j]%%(2*pi-(j<d-1)*pi)
   prof=target(prop)
   if (runif(1)<prof/past){
     past=prof;thes[t,]=prop}
   }
}

-3

||x||22=1 이후 엄격하게 가능하지 않습니다 x(연속) 랜덤 변수입니다. 1의 분산을 원한다면, 즉E[(x−μ)2]=~1n∑(x−μ)2=1n||x−n||22=1n (물결표는 우리가 분산을 추정한다는 것을 의미합니다) 그렇다면 분산이 다음과 같아야합니다. 1n. 그러나이 수요는Σ. 즉,이 분산으로 표본을 구하려면 대각선이 필요합니다.Σ 동등하다 1n.

이 분포를 일반적으로 표본 추출하기 위해 iid 표준 법선을 생성 한 다음 Σ0.5, 제곱근 Σ그런 다음 수단을 추가하십시오. μ.


답변 주셔서 감사합니다. 내가 생각할 수있는 한 가지 방법은 내가 원하지만 (비효율적 인) 생산을 거부하는 것 입니다. 거부 샘플링 입니다. 따라서 그렇게하는 것은 불가능하지 않습니다. 그러나 나는 그것을하는 효율적인 방법을 찾고 있습니다.
— Sobi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.