Phương pháp tốt nhất để chuyển đổi trình tự chênh lệch thấp thành phân phối bình thường?


9

Tôi đã sử dụng các chuỗi chênh lệch thấp trong một thời gian cho Phân phối thống nhất, vì tôi thấy các thuộc tính của chúng hữu ích (chủ yếu là trong đồ họa máy tính vì sự xuất hiện ngẫu nhiên của chúng và khả năng che phủ dày đặc [0,1] theo cách tăng dần).

Ví dụ: các giá trị ngẫu nhiên ở trên, các giá trị chuỗi Halton bên dưới:

http://i.stack.imgur.com/gCXrh.png

Tôi đã xem xét sử dụng chúng cho một số kế hoạch phân tích tài chính, nhưng tôi cần phân phối khác nhau hơn là chỉ thống nhất. Tôi bắt đầu cố gắng tạo ra một phân phối bình thường từ các phân phối thống nhất của mình thông qua thuật toán phân cực Marsaglia, nhưng kết quả có vẻ không tốt bằng phân phối đồng đều.

Một ví dụ khác, một lần nữa ngẫu nhiên ở trên, Halton bên dưới:

http://i.stack.imgur.com/NNcdH.png

Câu hỏi của tôi là: phương pháp tốt nhất để có được phân phối bình thường với các thuộc tính tôi nhận được từ chuỗi chênh lệch thấp thống nhất - phạm vi bảo hiểm, điền bổ sung, không tương quan qua nhiều chiều là gì? Tôi đang đi đúng hướng hay tôi nên thực hiện một cách tiếp cận hoàn toàn khác?

(Mã Python cho phân phối đồng đều và bình thường tôi sử dụng ở trên: Gist 2566569 )


3
Chắc chắn bạn đã xem xét câu trả lời tự nhiên và rõ ràng, đó là áp dụng biến đổi xác suất cho các giá trị đồng nhất. Phương pháp nào không đáp ứng nhu cầu của bạn?
whuber

Đó là những gì tôi đã giả định là cách bình thường để tạo ra các bản phân phối như vậy từ đầu vào thống nhất, nhưng tôi gặp khó khăn khi tìm bất kỳ thuật toán nào như vậy (Tôi là một lập trình viên, không phải là một nhà thống kê, vì vậy tôi đã bắt đầu từ đầu trong tìm kiếm của mình). Các phương pháp tôi tìm thấy là Box Muller, Marsaglia Polar, Ziggarat và Ratio of Đồng phục, tất cả đều yêu cầu trộn nhiều hơn một mẫu đầu vào có vẻ phá hủy các đặc điểm mà tôi đang cố gắng duy trì trong các chuỗi chênh lệch thấp. Tôi vừa tìm thấy trang sau: home.online.no/~pjacklam/notes/invnorm đã cung cấp cho tôi thông tin tôi muốn.
Edouard Nghèo

3
Có, trang web đó thực hiện chuyển đổi xác suất cho phân phối Bình thường. Bạn có thể đã gặp khó khăn khi nghiên cứu vấn đề này bởi vì nó cực kỳ nổi tiếng đến nỗi hầu như bất kỳ phương pháp thay thế nào tạo ra các giá trị ngẫu nhiên đều cho rằng bạn có thể sử dụng phương pháp này và sau đó tìm kiếm các cách hiệu quả hơn trong các trường hợp đặc biệt (bao gồm cả bốn phương pháp bạn liệt kê).
whuber

3
Đảo ngược sẽ là phương pháp hợp lệ duy nhất cho trường hợp này!
kjetil b halvorsen

Tôi tự hỏi nếu chúng ta cũng có thể nhận được một số giá trị bán ngẫu nhiên của phân phối khác, ví dụ: giá trị bán ngẫu nhiên của phân phối beta?
dùng315648

Câu trả lời:



6

Gần đây tôi đã vấp phải vấn đề này. Ngây thơ tôi nghĩ rằng bất kỳ sự chuyển đổi nào từ đồng phục đều hoạt động, vì vậy tôi đã cắm một chuỗi Sobol 1D (và Halton) như thể trình tự tạo một số ngẫu nhiên thành một std::normal_distribution<>biến thiên. Thật ngạc nhiên, nó không hoạt động, rõ ràng nó tạo ra một phân phối không bình thường.

Ok, sau đó tôi đã sử dụng chức năng Numerical Recipes Phiên bản thứ ba Chương 7.3.9 Normal_devđể tạo các số bình thường từ các chuỗi Sobol hoặc Halton theo phương pháp "Tỷ lệ đồng phục" và nó đã thất bại theo cách tương tự. Sau đó, tôi nghĩ, ok, nếu bạn nhìn vào mã, phải mất hai số ngẫu nhiên thống nhất để tạo hai số ngẫu nhiên phân phối bình thường. Có lẽ nếu tôi sử dụng chuỗi 2D Sobol (hoặc Halton) thì nó sẽ hoạt động. Chà, nó lại thất bại.

Tôi đã nhớ về "phương pháp Box-Muller" (được đề cập trong các bình luận) và vì nó có cách hiểu hình học hơn nên tôi mặc dù nó có thể hoạt động. Vâng, nó đã làm việc! Tôi đã rất vui mừng khi bắt đầu làm thử nghiệm khác, phân phối trông bình thường.

Vấn đề tôi thấy là phân phối không tốt hơn ngẫu nhiên, về mặt điền, vì vậy tôi hơi thất vọng, nhưng sẵn sàng công bố kết quả.

Sau đó, tôi đã thực hiện một tìm kiếm sâu hơn (bây giờ tôi biết phải tìm gì) và hóa ra đã có một bài viết về chủ đề này: http://www.scTHERirect.com/science/article/pii/S0895717710005935

Trong bài báo này, nó thực sự được tuyên bố

Hai phương pháp nổi tiếng được sử dụng với số giả ngẫu nhiên là BoxTHER Muller và phương pháp biến đổi nghịch đảo. Một số nhà nghiên cứu và kỹ sư tài chính đã tuyên bố rằng việc sử dụng phương pháp Box siêu Muller với các trình tự sai lệch thấp là không chính xác, và thay vào đó, nên sử dụng phương pháp biến đổi ngược. Trong bài báo này, chúng tôi chứng minh rằng phương pháp Boxer Muller có thể được sử dụng với trình tự sai lệch thấp và thảo luận khi nào việc sử dụng nó thực sự có lợi.

Vì vậy, kết luận chung là đây:

1) Bạn có thể sử dụng Box-Muller trên các chuỗi chênh lệch thấp 2D để thu được các chuỗi phân phối thông thường. Nhưng một vài thí nghiệm của tôi dường như cho thấy rằng sự khác biệt / không gian thấp, ví dụ như các thuộc tính điền bị mất trong chuỗi biến đổi thông thường.

2) Bạn có thể sử dụng phương pháp nghịch đảo, có lẽ các thuộc tính lấp đầy không gian / chênh lệch thấp sẽ được giữ nguyên.

3) Không thể sử dụng tỷ lệ đồng phục.

EDIT : https://mathoverflow.net/a/144234 này chỉ ra cùng kết luận.

Tôi đã thực hiện một minh họa (hình đầu tiên (Tỷ lệ đồng phục trên Sobol) cho thấy rằng phân phối thu được không bình thường nhưng ohters (Box-Muller và ngẫu nhiên để so sánh) là:

số liệu

EDIT2:

Điểm chính là, ngay cả khi bạn tìm thấy một phương pháp có thể biến đổi "phân phối" của chuỗi sai lệch thấp, thì rõ ràng là bạn sẽ bảo toàn các thuộc tính điền tốt. Vì vậy, bạn không tốt hơn với một phân phối bình thường thực sự ngẫu nhiên (tiêu chuẩn). Tôi vẫn chưa tìm thấy một phương pháp có sự khác biệt thấp và nó vẫn lấp đầy một cách độc đáo với một phân phối không đồng đều. Tôi đặt cược phương pháp như vậy là rất không rõ ràng và có lẽ là một vấn đề mở.


Trong bài viết đã đề cập ở trên ( scTHERirect.com/science/article/pii/S0895717710005935 ) câu cuối cùng có nội dung: "Dựa trên những kết quả này, chúng tôi kết luận rằng Box Muff Muller là một phương pháp thay thế tốt cho phương pháp biến đổi nghịch đảo để tạo ra các chuỗi biến đổi thấp. từ phân phối bình thường. " Điều này có mâu thuẫn với điểm 1 trong các kết luận đã nêu không?
ngiann

@ngiann, Không mâu thuẫn. Bài viết đưa ra kết luận tương tự của tôi rằng phân phối thu được chính xác bằng phép biến đổi BM nhưng không phải bằng các phương pháp khác. Phần thứ hai của câu ("Nhưng các thuộc tính lấp đầy không gian / không gian thấp dường như bị mất.") Có liên quan đến một thuộc tính thứ cấp mà người ta tìm kiếm trong các chuỗi khác biệt thấp, chẳng hạn như lấp đầy không gian hiệu quả. Thí nghiệm của tôi đã không cho thấy rằng tài sản được dịch theo trình tự chuyển đổi bình thường. Nếu tôi nhớ chính xác thì bài báo không đi vào vấn đề cụ thể đó. Tôi nghĩ rằng điều này cần nhiều nghiên cứu hơn để được kết luận.
alfC

1

Có hai phương pháp tốt. Đầu tiên, như đã lưu ý ở trên, một phép tính gần đúng chính xác với nghịch đảo của phân bố Gaussian có thể được sử dụng. Sau đó, người ta có thể chuyển đổi bất kỳ chuỗi sai lệch thấp nào thành Gaussian.

Phương pháp thứ hai là Box-Muller. Phương pháp này yêu cầu hai số đặt (R và A) và tạo hai đầu ra. Một trình tự chênh lệch thấp hai chiều là cần thiết. Người ta lấy (ví dụ trong Chuỗi Halton), các cặp số nguyên tố được sử dụng, một cho thành phần xuyên tâm (R) và một cho thành phần góc (A). Người ta nhận được Sqrt (-2 * Log (R)) cho thành phần xuyên tâm và Sin (2 * Pi * A) và Cos (2 * Pi * A) cho các thành phần góc. Nhân số xuyên tâm với hai thành phần góc (riêng) cho hai Gaussian. Hiệu quả tương tự như trên; hai đầu vào bán ngẫu nhiên và hai đầu ra Gaussian.

Bất kỳ chuỗi chênh lệch thấp đa chiều nào cũng có thể được sử dụng, tùy thuộc vào chiều của vấn đề.


0

Phương thức tự nhiên nhất sẽ thực sự sử dụng CDF nghịch đảo để chuyển đổi thành Gaussian bình thường, nhưng cũng có một vấn đề với điều này. Nếu bạn có ví dụ: một điểm LDS được tạo bởi các mạng xếp hạng 1, thì đó sẽ là điểm bắt đầu luôn luôn là (0,0), vì vậy để chuyển đổi nó, bạn cần một chút thay đổi, tốt nhất là có cùng khoảng cách như đối với góc (1,1).

3σ6σ

+6σ

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.