2012-03-09 3 views
5

MATLAB 또는 Octave에서 자신의 확률 밀도 함수를 정의하고 을 사용하여 난수 생성에 사용할 수 있습니까?matlab에서 자신의 확률 분포 함수 정의하기

MATLAB과 Octave에는 rand, randn과 같은 기본 기능이있어 균일하거나 정규 분포에서 무작위로 점을 그릴 수 있지만 내 고유 확률 밀도 함수를 정의하는 방법에 대한 문서는없는 것 같습니다.

답변

8

임의 임의 분포의 샘플링이 항상 사소한 것은 아닙니다. 잘 알려진 배포판에는 구현할 트릭이 있으며 대부분은 통계 도구 상자에 구현됩니다.

관심있는 분포가 어려운 경우 rejection sampling, 조각 샘플링, Metropolis–Hastings algorithm과 같이 많은 샘플링 알고리즘이 도움이 될 수 있습니다.

분포가 불연속이거나 불연속 분포로 매우 근사 할 수 있다면 randsamp을 사용하여 다항식 샘플링을 수행하면됩니다.

+0

+1. – YBE

1

유용한 도구 모음이 내장되어 있으므로 통계 도구 상자가있는 경우 random()을 사용할 수 있습니다.

1

나는 최근에 그 일을 몇 번해야했으며, 달성하기가 쉽지 않았습니다. 내가 가장 좋아하는 기술은 Inverse transform sampling입니다.

아이디어는 매우 간단합니다 :

  1. 균일 난수 생성기를 사용하십시오 CDF
  2. 을 만들 수 있습니다.
  3. 은 CDF 값에 매핑되는 RV를 식별합니다.