Antworten:
Die formale Lösung dieses Problems erfordert zunächst eine korrekte Definition von a
" Verteilung unter der Bedingung, dass "
Der natürliche Weg besteht darin, die Verteilung von Bedingung von . Und um diese Bedingung auf den Fall anzuwenden . Wenn wir Polarkoordinaten verwenden , ist Der Jacobi der Transformation ist Daher die bedingte Dichte der Verteilung von
Schlussfolgerung: Diese Dichte unterscheidet sich vom einfachen Anwenden der Normaldichte auf einen Punkt auf der Einheitskugel aufgrund des Jacobi.
Der zweite Schritt besteht darin, die Zieldichte und entwerfen Sie einen Markov-Ketten-Monte-Carlo-Algorithmus, um den Parameterraum . Mein erster Versuch an einem Gibbs - Sampler wäre, an dem Punkt auf der Kugel initialisiert am nächsten , das istund einen Winkel nach dem anderen in einer Metropolis-in-Gibbs-Weise vorgehen:
Die Skalen , , , können gegen die Akzeptanzraten der Schritte in Richtung eines idealen Ziels von skaliert werden .
Hier ist ein R-Code zur Veranschaulichung des oben Gesagten mit Standardwerten für und :
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}
}
}
ist nicht unbedingt möglich, da eine (kontinuierliche) Zufallsvariable ist. Wenn Sie möchten, dass es eine Varianz von 1 hat, dh (wobei die Tilde bedeutet, dass wir die Varianz schätzen), dann müsste die Varianz . Diese Anforderung kann jedoch mit Konflikt stehen . Das heißt, um Stichproben mit dieser Varianz zu erhalten, muss die Diagonale von gleich .
Um diese Verteilung im Allgemeinen zu testen, können Sie iid-Standardnormalen generieren und dann mit , der Quadratwurzel von , multiplizieren und dann die Mittelwerte hinzufügen .