Vẽ các mẫu từ một đối tượng phân phối bình thường nhiều biến đối với các ràng buộc bậc hai


Câu trả lời:


12

Việc giải quyết chính thức vấn đề này trước tiên đòi hỏi một định nghĩa đúng đắn về một

Phân phối " Nd(μ,Σ) subject ) theo ràng buộc là ||x||2=1 "

Cách tự nhiên là xác định phân phối điều kiện trên . Và để áp dụng điều kiện này cho trường hợp . Nếu chúng tôi sử dụng tọa độ cực , Jacobian của biến đổi là Do đó mật độ có điều kiện của phân phối| | X | | = ϱ ϱ = 1 x 1 = ϱ cos ( θ 1 )XNd(μ,Σ)||X||=ϱϱ=1 ρd-1 d - 2 Π i=1sin(θi)d-1-iθ=(θ1,...,θd-1)

x1=ϱcos(θ1)θ1[0,π]x2=ϱsin(θ1)cos(θ2)θ2[0,π]xd1=ϱ(i=1d2sin(θi))cos(θd1)θd1[0,2π]xd=ϱi=1d1sin(θi)
ϱd1i=1d2sin(θi)d1i
θ=(θ1,,θd1) cho là f ( θ | ϱ ) exp - 1ϱ
f(θ|ϱ)exp12{(x(θ,ϱ)μ)TΣ1(x(θ,ϱ)μ)}i=1d2sin(θi)d1i

Kết luận: Mật độ này khác với việc đơn giản áp dụng mật độ Bình thường cho một điểm trên quả cầu đơn vị vì Jacobian.

Bước thứ hai là xem xét mật độ mục tiêu và thiết kế thuật toán Monte Carlo chuỗi Markov để khám phá không gian tham số . Nỗ lực đầu tiên của tôi sẽ là một bộ lấy mẫu Gibbs, được khởi tạo tại điểm trên quả cầu gần nhất với , nghĩa là,và tiến hành một góc tại một thời điểm theo cách của Đô thị - trong - Gibbs:[0,π]d-2×[0,2π]LL

f(θ|ϱ=1)exp12{(x(θ,1)μ)TΣ1(x(θ,1)μ)}i=1d2sin(θi)d1i
[0,π]d2×[0,2π]μμ/||μ||
  1. Tạo (trong đó tổng được tính modulo ) và chấp nhận giá trị mới này với xác suất khácθ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. Tạo (trong đó tổng được tính modulo ) và chấp nhận giá trị mới này với xác suất khácθ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. Tạo (trong đó tổng được tính modulo ) và chấp nhận giá trị mới này với xác suất khácθd1(t+1)U([θd1(t)δd1,θd1(t)+δd1])2π
    f(θ1(t+1),θ2(t+1),...,θd1(t+1)|ϱ=1)f(θ1(t+1),θ2(t+1),...,θd1(t)|ϱ=1)1
    θd1(t+1)=θd1(t)

Các thang đo , , , có thể được thu nhỏ theo tỷ lệ chấp nhận của các bước, hướng tới mục tiêu lý tưởng là .δ1δ2δd150%

Dưới đây là mã R để minh họa ở trên, với các giá trị mặc định cho và :μΣ

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 E [ ( x - μ ) 2 ] ~ = 1||x||22=1 không hoàn toàn có thể vì là biến ngẫu nhiên (liên tục). Nếu bạn muốn nó có phương sai bằng 1, tức là (trong đó dấu ngã có nghĩa là chúng ta ước tính phương sai), sau đó bạn sẽ cần yêu cầu phương sai của nó là . Tuy nhiên, nhu cầu này có thể xung đột với . Nghĩa là, để lấy các mẫu có phương sai này, bạn cần đường chéo của bằng với .x 1E[(xμ)2]=~1n(xμ)2=1n||xn||22=1n ΣΣ11nΣΣ1n

Để lấy mẫu phân phối này nói chung, bạn có thể tạo các quy tắc chuẩn iid và sau đó nhân với , căn bậc hai của , sau đó thêm phương tiện . Σ LΣ0.5Σμ


Cám ơn phản hồi của bạn. Một cách tôi có thể nghĩ rằng sẽ tạo ra những gì tôi muốn (nhưng không hiệu quả) là lấy mẫu từ chối . Vì vậy, nó không phải là không thể làm điều đó. Nhưng tôi đang tìm kiếm một cách hiệu quả để làm điều đó.
Sobi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.