2012-03-09 59 views
5

Có thể xác định hàm mật độ xác suất của riêng bạn trong MATLAB hoặc Octave và sử dụng nó để tạo các số ngẫu nhiên không?Xác định hàm phân bố xác suất của riêng bạn trong MATLAB

MATLAB và Octave có các hàm mặc định như rand, randn được tích hợp để vẽ điểm ngẫu nhiên từ một bản phân phối đồng đều hoặc bình thường nhưng dường như không có tài liệu nào về cách xác định hàm mật độ proability của riêng tôi.

Trả lời

8

Lấy mẫu từ phân phối ngẫu nhiên ngẫu nhiên không phải lúc nào cũng tầm thường. Đối với các bản phân phối nổi tiếng, có những thủ thuật để thực hiện chúng và hầu hết chúng được thực hiện trong hộp công cụ thống kê như Oli nói.

Nếu phân phối lợi ích của bạn có dạng khó, có nhiều thuật toán lấy mẫu có thể giúp bạn, chẳng hạn như, rejection sampling, lấy mẫu lát, Metropolis–Hastings algorithm.

Nếu phân phối của bạn là rời rạc hoặc có thể xấp xỉ bằng phân phối rời rạc khá tốt, thì bạn chỉ có thể thực hiện lấy mẫu đa thức bằng cách sử dụng randsamp.

+0

+1 cho câu trả lời của MCMC. – YBE

1

Nếu bạn có hộp công cụ thống kê, bạn có thể sử dụng random() vì có rất nhiều tệp PDF hữu ích được tích hợp sẵn.

1

Tôi đã phải làm điều đó một vài lần gần đây, và nó không phải là một điều dễ dàng để thực hiện. Kỹ thuật yêu thích của tôi là sử dụng Inverse transform sampling.

Ý tưởng là khá đơn giản:

  1. tạo lũy
  2. sử dụng một bộ tạo số ngẫu nhiên thống nhất.
  3. xác định RV sẽ ánh xạ tới giá trị cdf của bạn.
Các vấn đề liên quan