回答:
この問題の正式な解決には、まず適切な定義が必要です。
"分布は、という制約を受けます "
自然な方法は、条件としての分布を定義すること。そして、この条件をケースに適用します。極座標を使用する場合、 変換のヤコビアンは したがって、分布の条件付き密度
結論:ヤコビアンのため、この密度は、単位球上の点に単に正規密度を適用することとは異なります。
2番目のステップは、ターゲット密度 とマルコフ連鎖モンテカルロアルゴリズムを設計して、パラメーター空間を探索します。私の最初の試みは、に最も近い球上の点で初期化さギブスサンプラーにてだろう、で、、そしてメトロポリスギブス内の方法で一度に1つの角度を進めます。
スケール、、、は、理想的な目標に向けて、ステップの受け入れ率に対してスケーリングできます。
以下は、上記を説明する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}
}
}
は、が(連続)確率変数であるため、厳密には不可能です。分散を1にしたい場合、つまり(チルドは分散を推定することを意味します)の場合、その分散をする必要があります。ただし、この要求はと競合する可能性があります。つまり、この分散のサンプルを取得するには、の対角がと等しい必要があります。
この分布を一般的にサンプリングするには、iidの標準法線を生成し、次に平方根である乗算して、平均追加します。