Tạo các số ngẫu nhiên bình thường phụ thuộc phân phối giống hệt nhau với tổng được chỉ định trước


7

Làm thế nào để tôi tạo ra n phân phối chính xác nhưng không độc lập các số ngẫu nhiên bình thường độc lập sao cho tổng của chúng nằm trong một khoảng định trước [a,b] với xác suất p?

(Câu hỏi này được thúc đẩy bằng cách tạo ra một bước đi ngẫu nhiên kết thúc tại một điểm được chỉ định trước: Quá trình ngẫu nhiên không quá ngẫu nhiên sau tất cả (xác định) . Vì một biến ngẫu nhiên liên tục không có xác suất đạt được một con số chính xác, chúng tôi thực hiện điều tốt nhất thứ hai và yêu cầu toàn bộ khoảng thời gian để kết thúc.)


EDIT: Việc tạo các mẫu từ phân phối Gaussian số ít đã được đề xuất như một bản sao, lần lượt được đóng lại như một bản sao của Tạo các số ngẫu nhiên phân phối thông thường với ma trận hiệp phương sai không xác định . Tôi đồng ý rằng cả hai điều này đều hữu ích. Tuy nhiên, điểm quan trọng của câu hỏi hiện tại (cụ thể hơn là câu trả lời) là trước tiên chúng ta có thể sử dụng phân phối chuẩn nhiều biến số để giải quyết câu hỏi và thứ hai, loại ma trận hiệp phương sai nào hoạt động. Làm thế nào để lấy mẫu từ một phân phối với hiệp phương sai đó là bước thứ ba, trong đó các luồng được liên kết là hữu ích.


2
cũng xem tài liệu về cầu Brownian ?
Ben Bolker

@BenBolker: nghe có vẻ là một ý tưởng tốt hơn nhiều so với của tôi. Bạn sẽ quan tâm đến việc viết lên một câu trả lời?
Stephan Kolassa

có lẽ tôi sẽ hiểu, nhưng bất cứ ai khác đang đọc cái này cũng cảm thấy thoải mái khi nhảy vào và viết ra câu trả lời. Tôi không phiền
Ben Bolker

1
(Xin lỗi, tất nhiên ý tôi là "BB-BB".)
Stephan Kolassa

1
Bản sao có thể có của Tạo mẫu từ phân phối Gaussian số ít
Xi'an

Câu trả lời:


7

Chúng tôi sẽ tạo ra các quy tắc đa biến XMN(μ,Σ) với μRnΣRn×nsao cho tổng của chúng thỏa mãn điều kiện của chúng ta Để choZ=X1++Xn.

Như một phương tiện phổ biến, chúng tôi chọn

μ1==μn=a+b2n.

Để Z[a,b] với xác suất p, độ lệch chuẩn của nó sẽ đáp ứng

σZ=baqα,

Ở đâu qα là lượng tử chuẩn thông thường đến mức α, đây α=11p2.

Bây giờ chúng ta cần chỉ định Σ. Chúng tôi có rất nhiều thời gian ở đây. Chúng ta hãy giả sử rằng chúng ta muốn mỗiXiphương sai của σ2 và hiệp phương sai cov(Xi,Xj)=τ cho ij. Chìa khóa để tạo ra một "tốt"Σđâycâu trả lời trước bởi xác suất . Nó mang lại rằng tổng của chúng tôiXis có phương sai

nσ2+n(n1)τ

vì vậy chúng tôi cần điều đó

nσ2+n(n1)τ=baqα.

Chúng ta cũng cần đảm bảo rằng Σlà xác định tích cực, nhưng điều này không quá khó. Cách dễ nhất để làm điều này là đảm bảo rằng tất cả các mục trongΣ là tích cực, ví dụ, bằng cách thiết lập

σ2:=σZ22n,τ:=σZ22n(n1),

nhưng điều này mang lại những giá trị rất nhỏ và những khoản tiền và quỹ đạo tích lũy rất nhàm chán:

nhàm chán

Ít nhàm chán hơn là thiết lập

σ2:=1,τ:=1n1(σZ2nσ2),

mang lại quỹ đạo thú vị hơn nhiều:

hấp dẫn

Lưu ý rằng cài đặt này thực sự mang lại một ma trận hiệp phương sai hợp lệ, bởi vì Σ sau đó là của hình thức Σij=m(ij), cụ thể là

m(0)=σ2,m(j)=τ for j>0,

và chúng ta có điều đó

j>0|m(j)|=(n1)|τ|=|σZ2nσ2|=|σZ2n1|<1=σ2=m(0),

đó là một điều kiện đủ cho Σđược hoàn toàn tích cực xác định bởi Wikipedia (Điểm 7 trong phần "Thuộc tính xa hơn" ).

Mã R bên dưới, nhưng trước tiên, vui lòng đi và nâng cao câu trả lời của xác suất .

n_steps <- 1000
target_min <- 1.99
target_max <- 2.01
target_prob <- 0.99

target_mean <- mean(c(target_min,target_max))
target_sd <- (target_max-target_mean)/qnorm(p=1-(1-target_prob)/2)

mm <- rep(target_mean/n_steps,n_steps)

# boring setting:
# sigma_sq <- target_sd^2/(2*n_steps)
# tau <- target_sd^2/(2*n_steps*(n_steps-1))

sigma_sq <- 1
tau <- (target_sd^2/n_steps-sigma_sq)/(n_steps-1)

CC <- matrix(tau,nrow=n_steps,ncol=n_steps)
diag(CC) <- sigma_sq

library(MASS)
foo <- mvrnorm(1,mu=mm,Sigma=CC)
sum(foo)

plot(cumsum(foo),type="l",xlab="",ylab="")
abline(h=target_mean,lty=2)
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.