Phân phối cắt ngắn có nghĩa là gì?


14

Trong một bài viết nghiên cứu về phân tích độ nhạy của mô hình phương trình vi phân thông thường của một hệ động lực, tác giả đã cung cấp phân phối của một tham số mô hình là phân phối chuẩn (mean = 1e-4, std = 3e-5) cắt ngắn trong phạm vi [0,5e -4 1,5e-4]. Sau đó, ông sử dụng các mẫu từ phân phối cắt ngắn này để mô phỏng mô hình. Việc phân phối bị cắt cụt và mẫu từ phân phối bị cắt này có nghĩa là gì?

Tôi có thể đưa ra hai cách để làm điều này:

  • Mẫu từ phân phối chuẩn nhưng bỏ qua tất cả các giá trị ngẫu nhiên nằm ngoài phạm vi đã chỉ định trước khi mô phỏng.
  • Bằng cách nào đó có được một phân phối "Cắt ngắn bình thường" đặc biệt và lấy mẫu từ nó.

Là những cách tiếp cận hợp lệ và tương đương?

Tôi tin rằng trong trường hợp đầu tiên, nếu người ta vẽ sơ đồ cdf / pdf thử nghiệm của mẫu, nó sẽ không giống như phân phối Bình thường vì các đường cong không mở rộng đến ± .

Câu trả lời:


16

Để cắt bớt phân phối là giới hạn các giá trị của nó trong một khoảng và chuẩn hóa lại mật độ sao cho tích phân trên phạm vi đó là 1.

Vì vậy, để cắt ngắn N(μ,σ2) phân phối cho một khoảng thời gian (a,b) sẽ được tạo ra một biến ngẫu nhiên có mật độ

pa,b(x)=ϕμ,σ2(x)abϕμ,σ2(y)dyI{x(a,b)}

nơi ϕμ,σ2(x)N(μ,σ2) mật độ. Bạn có thể lấy mẫu từ mật độ này theo một số cách. Một cách (cách đơn giản nhất tôi có thể nghĩ ra) để làm điều này sẽ được tạo ra N(μ,σ2) giá trị và vứt bỏ những người mà rơi bên ngoài (a,b)khoảng thời gian, như bạn đã đề cập. Vì vậy, vâng, hai viên đạn mà bạn liệt kê sẽ hoàn thành cùng một mục tiêu. Ngoài ra, bạn là đúng rằng mật độ thực nghiệm (hoặc histogram) của các biến từ phân phối này sẽ không mở rộng đến ± . Tất nhiên, nó sẽ bị giới hạn ở (a,b) .


17

Mô phỏng từ bình thường phân phối cho đến khi kết quả nằm trong một khoảng thời gian ( một , b ) là tốt khi xác suất ρ = b một φ μ , σ 2 ( x )N(μ,σ2)(a,b) đủ lớn. Nếu nó quá nhỏ, thủ tục này là quá tốn kém kể từ khi số trung bình thu hút cho một sự chấp nhận là 1 / ρ .

ϱ=abφμ,σ2(x)dx
1/ϱ

Như được mô tả trong Phương pháp thống kê Monte Carlo (Chương 2, Ví dụ 2.2), cũng như trong bài viết arXiv của tôi , một cách hiệu quả hơn để mô phỏng bình thường bị cắt cụt này là sử dụng phương pháp chấp nhận dựa trên phân phối theo cấp số nhân .E(α)

Xem xét, mà không mất tính tổng quát, trường hợp σ = 1 . Khi b = + , một bản phân phối công cụ tiềm năng là phân phối mũ dịch, E ( α , một ) , với mật độ g α ( z ) = α e - α ( z - một )μ=0σ=1b=+E(α,a) Tỷ lệ p một , ( z ) / g α ( z ) α e - α ( z - một ) e - z 2 / 2 sau đó được bao bọc bởi exp ( α 2 / 2 - α một ) nếu α > một và bởi exp ( - một 2 / 2 ) bằng cách khác. Giới hạn tương ứng (trên) là

gα(z)=αeα(za)Iza.
pa,(z)/gα(z)eα(za)ez2/2
exp(α2/2αa)α>aexp(a2/2) Khái niệm đầu tiên được giảm thiểu bằng cách α*=1
{1/αexp(α2/2αa)if α>a,1/αexp(a2/2)otherwise.
trong khi ~ α = một giảm thiểu ràng buộc thứ hai. Do đó, sự lựa chọn tối ưu của α là (1).
α=12a+12a2+4,(1)
α~=aα

2
UUnif(Φ(a),Φ(b))X=Φ1(U)

2
a0

1
Tây An nói đúng, @bnaul. Chạy qnormtrong một vòng lặp R không phải là một ý tưởng tốt.
Stéphane Laurent

@ Xi'an: Điều đó đúng, nhưng các chức năng như vậy có thể được thiết kế để có độ chính xác tùy ý.
Neil G

9

Mẫu từ phân phối chuẩn nhưng bỏ qua tất cả các giá trị ngẫu nhiên nằm ngoài phạm vi đã chỉ định trước khi mô phỏng.

Phương pháp này là chính xác, nhưng, như @ Xi'an đã đề cập trong câu trả lời của mình, sẽ mất nhiều thời gian khi phạm vi nhỏ (chính xác hơn, khi số đo của nó nhỏ theo phân phối bình thường).

F1(U)FUUnif(0,1). When F is the distribution obtained by truncating some distribution G on some interval (a,b), this is equivalent to sample G1(U) with UUnif(G(a),G(b)).

However, and this is already mentionned by @Xi'an's in a comment, for some situations the inversion method requires a very precise evaluation of the quantile function G1, and I would add it also requires a fast computation of G1. When G is a normal distribution, the evaluation of G1 is rather slow, and it is not highly precise for values of a and b outside the "range" of G.

Simulate a truncated distribution using importance sampling

A possibility is to use importance sampling. Consider the case of the standard Gaussian distribution N(0,1). Forget the previous notations, now let G be the Cauchy distribution. The two above mentionned requirements are fulfilled for G : one simply has G(q)=arctan(q)π+12 and G1(q)=tan(π(q12)). Therefore, the truncated Cauchy distribution is easy to sample by the inversion method and it is a good choice of the instrumental variable for importance sampling of the truncated normal distribution.

After a bit of simplifications, sampling UUnif(G(a),G(b)) and taking G1(U) is equivalent to take tan(U) with UUnif(arctan(a),arctan(b)):

a <- 1
b <- 5
nsims <- 10^5
sims <- tan(runif(nsims, atan(a), atan(b)))

Now one has to calculate the weight for each sampled value xi, defined as the ratio ϕ(x)/g(x) of the two densities up to normalization, hence we can take

w(x)=exp(x2/2)(1+x2),
but it could be safer to take the log-weights:
log_w <- -sims^2/2 + log1p(sims^2)
w <- exp(log_w) # unnormalized weights
w <- w/sum(w)

The weighted sample (xi,w(xi)) allows to estimate the measure of every interval [u,v] under the target distribution, by summing the weights of each sampled value falling inside the interval:

u <- 2; v<- 4
sum(w[sims>u & sims<v])
## [1] 0.1418

This provides an estimate of the target cumulative function. We can quickly get and plot it with the spatsat package:

F <- spatstat::ewcdf(sims,w)
# estimated F:
curve(F(x), from=a-0.1, to=b+0.1)
# true F:
curve((pnorm(x)-pnorm(a))/(pnorm(b)-pnorm(a)), add=TRUE, col="red")

ewcdf

# approximate probability of u<x<v:
F(v)-F(u)
## [1] 0.1418

Of course, the sample (xi) is definitely not a sample of the target distribution, but of the instrumental Cauchy distribution, and one gets a sample of the target distribution by performing weighted resampling, for instance using the multinomial sampling:

msample <- rmultinom(1, nsims, w)[,1]
resims <- rep(sims, times=msample)
hist(resims) 

hist

mean(resims>u & resims<v)
## [1] 0.1446

Another method: fast inverse transform sampling

Olver and Townsend developed a sampling method for a broad class of continuous distribution. It is implemented in the chebfun2 library for Matlab as well as the ApproxFun library for Julia. I have recently discovered this library and it sounds very promising (not only for random sampling). Basically this is the inversion method but using powerful approximations of the cdf and the inverse cdf. The input is the target density function up to normalization.

The sample is simply generated by the following code:

using ApproxFun
f = Fun(x -> exp(-x.^2./2), [1,5]);
nsims = 10^5;
x = sample(f,nsims);

As checked below, it yields an estimated measure of the interval [2,4] close to the one previously obtained by importance sampling:

sum((x.>2) & (x.<4))/nsims
## 0.14191
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.