2016-12-16 4 views
0

저는 여러 분포를 맞추고 각각에 대한 표준 편차를 얻으려고합니다. 그러나 표준 편차에 대해서는 inf 또는 Nan 중 많은 수가 다시 실행됩니다. 필자가하고있는 적합 분포의 분산을 얻는 방법이 정확한가? 더 좋은 방법이 있습니까? 왜 Nans? 이것이 내가 한 일입니다.scipy에서 맞는 분포에서 표준 편차를 구하는 방법?

param = distribution.fit(data) 
arg = param[:-2] 
loc = param[-2] 
scale = param[-1] 

if len(arg)>0: 
    std = np.sqrt(distribution.stats(arg, loc, scale, moments='v')[0])) 
else: 
    std = np.sqrt(distribution.stats(loc, scale, moments='v')[0])) 

또한 데이터를 피팅하는 동안 경고를 생성하는 배포를 건너 뜁니다.

업데이트 1 : 예를 들어 , distribution = scipy.stats.beta, 나는 [ nan nan]을 얻고 매개 변수가있는 경우 다음과 같이 베타 분포의

arg: (32.198726690922953, 15883184.284202889) 
loc: -33527.5754686 
scale: 35484135514.4 
+4

자세한 내용을 입력하십시오. '데이터 '를 제공하고 어느 배포판이'inf' 나'nan'을 제공하는지 보여줍니다. –

+0

알림 @WarrenWeckesser에게 감사드립니다. 배포본을 질문에 추가 하겠지만 코드는 정확합니까? 또는 내 데이터의 표준 편차를 얻는 더 좋은 방법이 있습니다. – user2179347

답변

0

variance은 다음과 같습니다 그래서

a * b/[ (a + b)^2 * (a + b + 1) ] 

표준 편차 그것의 제곱근입니다. ab를 얻으려면 : 당신이 항상는 데이터의 표준 편차를 산출 할 수

a = scipy.stats.beta.fit(data)[0] 
b = scipy.stats.beta.fit(data)[1] 

참고 np.std(data)를 사용 (모든 장착 분포를 결석).

+0

알아요.하지만 배포 목록을 반복하고 있습니다. 따라서, 나는 어떤 배포본에서나 작동하는 일반적인 방법을 찾고 있었다. – user2179347