要正式解决此问题,首先需要对
“分布受的约束
”Nd(μ,Σ)||x||2=1
自然的方法是在条件下定义。并将此条件应用于案例。如果我们使用极坐标,
变换的雅可比式为
因此条件分布的密度X∼Nd(μ,Σ)||X||=ϱϱ=1
x1x2xd−1xd=ϱcos(θ1)=ϱsin(θ1)cos(θ2)⋮=ϱ(∏i=1d−2sin(θi))cos(θd−1)=ϱ∏i=1d−1sin(θi)θ1∈[0,π]θ2∈[0,π]θd−1∈[0,2π]
ϱ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
结论:由于雅可比关系,此密度不同于仅将法线密度应用于单位球面上的点。
第二步是考虑目标密度
并设计马尔可夫链蒙特卡洛算法来探索参数空间。我的第一个尝试是在Gibbs采样器上进行的,该采样器在球体上最接近(即处初始化。,并以“大都市中的吉布斯”方式一次旋转一个角度:
f(θ|ϱ=1)∝exp−12{(x(θ,1)−μ)TΣ−1(x(θ,1)−μ)}∏i=1d−2sin(θi)d−1−i
[0,π]d−2×[0,2π]μμ/||μ||
- 生成(计算总和取模)并以概率
elseθ(t+1)1∼U([θ(t)1−δ1,θ(t)1+δ1])π
f(θ(t+1)1,θ(t)2,...|ϱ=1)f(θ(t)1,θ(t)2,...|ϱ=1)∧1
θ(t+1)1=θ(t)1
- 生成(计算总和取模)并以概率接受此新值
elseθ(t+1)2∼U([θ(t)2−δ2,θ(t)2+δ2])π
f(θ(t+1)1,θ(t+1)2,θ(t)3,...|ϱ=1)f(θ(t+1)1,θ(t)2,θ(t)3,...|ϱ=1)∧1
θ(t+1)2=θ(t)2
- …
- 生成(总和以模进行计算),并以概率
其他θ(t+1)d−1∼U([θ(t)d−1−δd−1,θ(t)d−1+δd−1])2π
f(θ(t+1)1,θ(t+1)2,...,θ(t+1)d−1|ϱ=1)f(θ(t+1)1,θ(t+1)2,...,θ(t)d−1|ϱ=1)∧1
θ(t+1)d−1=θ(t)d−1
比例尺,,,可以根据步骤的接受率进行缩放,以达到的理想目标。δ1δ2…δd−150%
这是一个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}
}
}