Lấy mẫu thống nhất từ ​​một đơn giản


29

Tôi đang tìm kiếm một thuật toán để tạo ra một mảng gồm N số ngẫu nhiên, sao cho tổng của số N là 1 và tất cả các số nằm trong 0 và 1. Ví dụ: N = 3, điểm ngẫu nhiên (x, y, z) nên nằm trong tam giác:

x + y + z = 1
0 < x < 1
0 < y < 1
0 < z < 1

Lý tưởng nhất là tôi muốn mỗi điểm trong khu vực có xác suất bằng nhau. Nếu nó quá khó, tôi có thể bỏ yêu cầu. Cảm ơn.


Phân phối mục tiêu là gì? Bạn đã thử những gì?
Raphael

3
Lưu ý rằng luôn có mẫu từ chối : mẫu số đồng nhất và từ chối nếu các số không thêm tối đa . Ở đây, số lần lặp dự kiến ​​cao không thoải mái, vì vậy bạn nên làm việc khác. n1
Raphael

Câu trả lời:


28

Trước tiên chúng tôi giả sử rằng bạn muốn lấy mẫu trong

x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1

Điều này không tạo ra sự khác biệt, vì điểm mẫu sẽ vẫn nằm trong khu vực bạn yêu cầu với xác suất cao.

Bây giờ bạn còn lại với việc lấy mẫu một điểm từ một đơn giản . Trong ví dụ 3d, bạn nhận được một đơn giản 2d (tam giác) được nhận ra trong 3d.

Làm thế nào để chọn một điểm thống nhất một cách ngẫu nhiên đã được thảo luận trong bài đăng trên blog này (xem các bình luận).

Đối với vấn đề của bạn, điều đó có nghĩa là bạn lấy số ngẫu nhiên từ khoảng , sau đó bạn thêm và để có danh sách số. Bạn sắp xếp danh sách và sau đó bạn ghi lại sự khác biệt giữa hai yếu tố liên tiếp. Điều này cung cấp cho bạn một danh sách số sẽ tổng hợp lên tới . Hơn nữa, mẫu này là thống nhất. Ý tưởng này có thể được tìm thấy trong Donald B. Rubin, The Bayesian bootstrap Ann. Thống kê. 9, 1981, 130-134.n1(0,1)01n+1n1

Ví dụ ( ) bạn có ba số ngẫu nhiên sau đó bạn có được chuỗi đã được sắp xếp và điều này mang lại sự khác biệt , và bằng cách xây dựng bốn số này tổng cộng thành 1.n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

Một cách tiếp cận khác như sau: mẫu đầu tiên từ hypercube (nghĩa là bạn quên đi x+y+z=1) và sau đó bình thường hóa điểm mẫu. Chuẩn hóa là một hình chiếu từ -hypercube đến -simplex. Cần phải rõ ràng bằng trực giác rằng các điểm ở trung tâm của đơn giản có nhiều "điểm trước ảnh" hơn ở bên ngoài . Do đó, nếu bạn lấy mẫu đồng đều từ hypercube, điều này sẽ không cung cấp cho bạn một mẫu thống nhất trong đơn giản. Tuy nhiên, nếu bạn lấy mẫu từ hypercube với Phân bố hàm mũ thích hợp, thì hiệu ứng này sẽ bị loại bỏ. Hình cho bạn một ý tưởng về cách cả hai phương thức sẽ lấy mẫu. Tuy nhiên, tôi thích phương pháp "sắp xếp" hơn do hình thức đơn giản của nó. Nó cũng dễ thực hiện hơn.d - 1dd1

Ví dụ về 2 phương pháp lấy mẫu


Tôi đoán ý tưởng ngây thơ - rút ra số từ ( 0 , 1 ) và bình thường hóa - là bị lỗi, sau đó. n(0,1)
Raphael

Tôi đã giải quyết câu hỏi của bạn trong câu trả lời mở rộng.
A.Schulz

1
Có bằng chứng đơn giản nào cho thấy cách sắp xếp phân phối đồng đều không? Tôi chỉ có nền tảng cơ bản về xác suất nên bài báo nằm trên đầu tôi.
Chao Xu

5
n(0,1)nn1(0,1)

1
@Orient: Vui lòng đặt câu hỏi cho bạn trong một bài đăng riêng biệt và đừng lạm dụng các ý kiến ​​cho việc này.
A.Schulz

8

Điều này là để thêm vào các câu trả lời hiện có.

Devroye là một tài liệu tham khảo tuyệt vời cho các câu hỏi loại này. Chap.7 đưa ra các thuật toán cần thiết để tạo số liệu thống kê đơn hàng thống nhất, mà OP đứng sau.

n[0,1]O(nlogn)nx1,,xnExp(1)

(yi)1in=1ixj1nxj
O(n)

[0,1]2x+3y+z=5


Nếu tôi làm theo câu trả lời ở đây: stackoverflow.com/questions/2106503/ Từ Sau đó tạo số ngẫu nhiên từ phân phối hàm mũ liên quan đến việc đánh giá logarit, có thể hơi chậm.
R zu

3
X[0] = 0
for i = 1 to N-1
    X[i] = uniform(0,1)
X[n] = 1
sort X[0..N]
for i = 1 to N
    Z[i] = X[i] - X[i-1]
return Z[1..N]

Ở đây, uniform(0,1)trả về một số thực độc lập và được phân phối đồng đều giữa 0 và 1.


5
Đây là câu trả lời của A. Schulz trong mã mà không có lời giải thích, phải không?
Raphael

1

Xem bài viết này : Smith, N. và Tromble, R., Lấy mẫu thống nhất từ ​​đơn vị đơn vị .


2
Vui lòng định dạng câu trả lời của bạn theo cách dễ đọc: bạn đang viết cho con người, không phải trình biên dịch bibtex. Ngoài ra, nếu giấy có sẵn trực tuyến, việc cung cấp liên kết sẽ hiệu quả hơn nhiều.
David Richerby
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.