2017-05-15 11 views
2

loguni [n, exp (min)], [exp (max)]와 같이 최소값과 최대 값 (R 값은 here)을 사용하여 로그 균일 분포를 생성하는 내장 함수를 파이썬에서 찾을 수 없습니다. base]는 exp (min) 및 exp (max) 범위에서 균일하게 분포 된 n 로그를 반환합니다.파이썬에서 로그 통일 분포를 생성하려면 어떻게해야합니까?

가장 가까운 부분은 numpy.random.uniform입니다. http://ecolego.facilia.se/ecolego/show/Log-Uniform%20Distribution에서

+0

링크가 작동하지 않습니다. 그 외에도 [scipy.stats] (https://docs.scipy.org/doc/scipy/reference/stats.html)를 확인하십시오 (numpy는 필요한 공통 dists 만 제공함). 그리고 scipy가 그것을 제공하지 않는다면, 아마도 R- 등가물을 기반으로하거나 또는 대부분의 시간에 쉽게 받아들이 기 거부와 같은 일을 할 것입니다 (그러나 반드시 가장 빠를 필요는 없습니다). – sascha

+0

이것을 지적 해 주셔서 감사합니다! 링크가 변경되었으므로 정상적으로 작동합니다. – jkrish

+0

당신은 단지 균일 한 분포를 지수 할 수 있습니다. –

답변

4

: 따라서

In a loguniform distribution, the logtransformed random variable is assumed to be uniformly distributed.

따라서

logU(a, b) ~ exp(U(log(a), log(b)) 

, 우리가 numpy를 사용하여 로그 균일 한 분포 만들 수 있습니다 : 당신이 다른 기본을 선택하려면

def loguniform(low=0, high=1, size=None): 
    return np.exp(np.random.uniform(low, high, size)) 

을 다음과 같이 새 함수를 정의 할 수 있습니다.

def lognuniform(low=0, high=1, size=None, base=np.exp(1)): 
    return np.power(base, np.random.uniform(low, high, size)) 
+0

이것은 위험합니다. 0.0을 그릴 때 0으로 나누는 RuntimeWarning을 제공합니다. –

+0

감사합니다. 따라서 분포의 최소값과 최대 값이 1에서 1000 사이가되도록하려면 저위 및 고위도 또는 지수입니까? – jkrish

+0

@aryamccarthy 사실! 그러나 내 배포 값> 0.0 그래서 나는 그것을 예외로 처리 할 수 ​​있습니다. – jkrish