Saya ingin secara efisien menggambar sampel dari tunduk pada batasan bahwa .
Saya ingin secara efisien menggambar sampel dari tunduk pada batasan bahwa .
Penyelesaian formal dari masalah ini pertama-tama membutuhkan definisi a
" distribusi tunduk pada batasan bahwa "
Cara alami adalah dengan menentukan distribusi bersyarat pada . Dan untuk menerapkan persyaratan ini pada case . Jika kita menggunakan koordinat kutub , Jacobian dari transformasi adalah Oleh karena itu kepadatan bersyarat dari distribusi| | X | | = ϱ ϱ = 1 x 1 = ϱ cos ( θ 1 ) ϱd-1 d - 2 ∏ i=1dosa(θi)d-1-iθ=(θ1,…,θd-1)
Kesimpulan: Kerapatan ini berbeda dari hanya menerapkan kerapatan Normal ke titik pada unit sphere karena Jacobian.
Langkah kedua adalah mempertimbangkan kerapatan target dan rancang algoritma rantai Monte Carlo Markov untuk menjelajahi ruang parameter . Upaya pertama saya adalah pada sampler Gibbs, diinisialisasi pada titik di bola terdekat dengan , yaitu,, dan melanjutkan satu sudut pada satu waktu dengan cara Metropolis-dalam-Gibbs:[0,π]d-2×[0,2π]μμ
Timbangan , , , dapat diskalakan dengan tingkat penerimaan langkah-langkah tersebut, menuju sasaran ideal .
Berikut ini adalah kode R untuk menggambarkan hal di atas, dengan nilai default untuk dan :
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}
}
}
x E [ ( x - μ ) 2 ] ˜ = 1 tidak sepenuhnya dimungkinkan karena adalah variabel acak (kontinu). Jika Anda ingin memiliki varian 1, yaitu (di mana tilde berarti kita memperkirakan variansnya), maka Anda perlu meminta variansnya menjadi . Namun, permintaan ini dapat bertentangan dengan . Artinya, untuk mendapatkan sampel dengan varian ini, Anda memerlukan diagonal agar sama dengan . 1 ΣΣ1
Untuk sampel bentuk distribusi ini secara umum, Anda dapat menghasilkan norm norm standar, dan kemudian kalikan dengan , akar kuadrat dari , dan kemudian tambahkan berarti . Σ μ