차원 벡터 모수 갖는 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 지원에 속하지 않습니다. 이것이 나를 여기로 데려온 것입니다.