Chúng tôi sẽ tạo ra các quy tắc đa biến X∼MN(μ,Σ) với μ∈Rn và Σ∈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=b−aqα,
Ở đâu qα là lượng tử chuẩn thông thường đến mức α, đây α=1−1−p2.
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 i≠j. Chìa khóa để tạo ra một "tốt"Σđây là câ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(n−1)τ
vì vậy chúng tôi cần điều đó
nσ2+n(n−1)τ=b−aqα.
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:=σ2Z2n,τ:=σ2Z2n(n−1),
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:
Ít nhàm chán hơn là thiết lập
σ2:=1,τ:=1n−1(σ2Zn−σ2),
mang lại quỹ đạo thú vị hơn nhiều:
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(i−j), cụ thể là
m(0)=σ2,m(j)=τ for j>0,
và chúng ta có điều đó
∑j>0|m(j)|=(n−1)|τ|=∣∣σ2Zn−σ2∣∣=∣∣σ2Zn−1∣∣<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)