Mô phỏng từ một phân phối bình thường hỗn hợp cắt ngắn


9

Tôi muốn mô phỏng một mẫu từ phân phối bình thường hỗn hợp sao cho

p×N(μ1,σ12)+(1p)×N(μ2,σ22)

được giới hạn trong khoảng thay vì . Điều này có nghĩa là tôi muốn mô phỏng một hỗn hợp cắt ngắn của các bản phân phối bình thường.R[0,1]R

Tôi biết rằng có một số thuật toán để mô phỏng một bình thường bị cắt bớt (tức là từ câu hỏi này ) và gói tương ứng trong R để làm điều này. Nhưng làm thế nào tôi có thể mô phỏng một hỗn hợp cắt ngắn bình thường? Có giống nhau không nếu tôi mô phỏng hai bình thường bị cắt của và ) để tạo ra một hỗn hợp cắt ngắn bình thường?N ( μ 2 , σ 2 2N(μ1,σ12)N(μ2,σ22


3
Nếu đó là khoảng thời gian đơn vị, tại sao không sử dụng betas thay vì quy tắc? Đối với , phân phối là đối xứng và không đồng nhất và giới hạn trên khoảng đơn vị. α=β>1
Sycorax nói Phục hồi lại

2
Nếu bạn không cần mô phỏng rất nhanh, bạn có thể thực hiện bằng cách sử dụng lấy mẫu từ chối: (1) mẫu từ hỗn hợp hai quy tắc, (2) nếu không nằm trong , quay lại bước 1, (3) đầu ra . (nhưng user777 đã đúng, bạn có lý do chính đáng để chọn phân phối này thay vì hỗn hợp betas không?)x[ 0 , 1 ]x[0,1]x
Elvis

1
@ user777 một hỗn hợp Gaussian bị cắt có phân phối khác với phân phối Beta và không thể hoán đổi chỉ vì bạn có thể thực thi tính đối xứng và hỗ trợ tương tự.
mjnichol 11/05/2015

Câu trả lời:


13

Mô phỏng từ một bình thường cắt ngắn được thực hiện dễ dàng nếu bạn có quyền truy cập vào một hàm lượng tử bình thường thích hợp. Chẳng hạn, trong R, mô phỏng trong đó và biểu thị giới hạn dưới và trên có thể được thực hiện bằng cách đảo ngược cdf , ví dụ: trong R

Nab(μ,σ2)
ab
Φ(σ1{xμ})Φ(σ1{aμ})Φ(σ1{bμ})Φ(σ1{aμ})

x = mu + sigma * qnorm( pnorm(a,mu,sigma) + 
     runif(1)*(pnorm(b,mu,sigma) - pnorm(a,mu,sigma)) )

Mặt khác, tôi đã phát triển một thuật toán chấp nhận từ chối bình thường cắt ngắn hai mươi năm trước.

Nếu chúng tôi xem xét vấn đề hỗn hợp cắt ngắn, với mật độ nó là một hỗn hợp của các phân phối bình thường bị cắt bớt nhưng với các trọng số khác nhau : Do đó, để mô phỏng từ một cắt bình thường hỗn hợp, nó là đủ để lấy

f(x;θ){pφ(x;μ1,σ1)+(1p)φ(x;μ2,σ2)}I[a,b](x)
f(x;θ)p{Φ(σ11{bμ1})Φ(σ11{aμ1})}σ11ϕ(σ11{xμ1})Φ(σ11{bμ1})Φ(σ11{aμ1})+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}σ21ϕ(σ21{xμ2})Φ(σ21{bμ2})Φ(σ11{aμ2})
x={x1Nab(μ1,σ12)with probability p{Φ(σ11{bμ1})Φ(σ11{aμ1})}/sx2Nab(μ2,σ22)with probability (1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}/s
trong đó
s=p{Φ(σ11{bμ1})Φ(σ11{aμ1})}+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}


Tại sao chúng ta không thể vẽ mẫu từ bình thường đầu tiên với xác suất p và phân phối thứ hai với xác suất 1 - p?
mjnichol

1
Ah! Tôi nghĩ rằng tôi thấy vấn đề. Đó là bởi vì toàn bộ phân phối đang bị cắt ngắn, không phải mỗi phân phối riêng biệt. Nếu mỗi phân phối phụ của hỗn hợp được cắt riêng trước khi thêm vào hỗn hợp thì chúng ta có thể lấy mẫu đơn giản từ phân phối theo các trọng số tương đối của mỗi phân phối phụ, phải không?
mjnichol

1
@mjnichol Nó là hỗn hợp nhưng có trọng lượng khác nhau so với và . p1p
Tây An

@ Xi'an: Giả sử chúng ta xem xét một thiết lập hơi khác: Điều gì sẽ xảy ra nếu thay vì xây dựng phân phối hỗn hợp từ các Gaussian có trọng số và sau đó cắt bớt chúng ta thay vào đó trộn lẫn hai Gaussian đã bị cắt bớt (với cùng một hỗ trợ). Nếu Gaussian bị cắt trước khi trộn, chúng ta có thể lấy mẫu từ phân phối bằng cách lấy mẫu từ Gaussian bị cắt ngắn đầu tiên với xác suất p và lần thứ hai với xác suất 1 - p?
mjnichol

2
@mjnichol: trong trường hợp đó, bạn sẽ có vì vậy, có thực sự điều này sẽ làm việc.
pNab(μ1,σ12)+(1p)Nab(μ2,σ22)
Tây An
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.