차원 벡터 모수 갖는 Dirichlet 분포가 있다고 가정 해 봅시다 . 이 분포에서 표본 ( K- 차원 벡터)을 어떻게 그릴 수 있습니까? (아마도) 간단한 설명이 필요합니다.→ α = [ α 1 , α 2 , … . . , α K ] K
차원 벡터 모수 갖는 Dirichlet 분포가 있다고 가정 해 봅시다 . 이 분포에서 표본 ( K- 차원 벡터)을 어떻게 그릴 수 있습니까? (아마도) 간단한 설명이 필요합니다.→ α = [ α 1 , α 2 , … . . , α K ] K
답변:
먼저 밀도가 각각있는 감마 분포에서 독립적 인 랜덤 샘플 를 그 립니다
그런 다음 설정
이제 는 Dirichlet 배포판을 따릅니다.
Dirichlet 배포판 의 Wikipedia 페이지는 Dirichlet 배포판 에서 샘플링하는 방법을 정확하게 알려줍니다.
또한 R라이브러리 MCMCpack에는 Dirichlet 분포에서 랜덤 변수를 샘플링하는 기능이 있습니다.
Dirichlet 분포를 그리는 것은 Polya의 urn 실험과 동일하다는 사실을 사용하는 간단한 방법 (정확하지는 않음)으로 구성됩니다. (컬러 볼 세트에서 그리기 및 볼을 그릴 때마다 같은 색상의 두 번째 볼로 항아리에 다시 넣습니다)
i에 대한 정규화되지 않은 분포로 Dirichlet 매개 변수 를 고려하십시오 .
그런 다음 :
N 번 반복
-> 다항 분포를 사용하여 i를 그립니다.
-> 1을 추가
끝 반복
분포를 얻기 위해 를 정규화 하십시오
내가 틀리지 않으면 그 방법은 무의식적으로 정확합니다. 그러나 N은 유한하기 때문에 이전 확률이 매우 작은 분포를 그리지 않습니다 (빈도는 매우 작게 분포해야 함). 대부분의 경우 N = K.10이면 만족 스럽습니다.
np.random.dirichlet샘플링 된 확률 벡터에서 정확한 0을 생성하기 때문에 이것이 구현 된 방법이라고 생각합니다 . 그러나 이러한 벡터는 Dirichlet 지원에 속하지 않습니다. 이것이 나를 여기로 데려온 것입니다.