2011-08-12 3 views
2

scipy.stats.spearmanr(a,b)을 사용하면 다음과 같이 나타납니다.scipy.stats.spearmanr : 경고 : 나누기에서 0으로 나눕니다.

Warning: divide by zero encountered in divide 

작업이 올바르게 끝나지만 경고가 표시됩니다. ab은 모두 "정상"데이터입니다 ("제로 전용"벡터 없음 등). 어떤 생각이 어떤 원인인지 또는 경고를 중지하는 방법?

편집 :

이것은 spearmanr에서 문제가되는 행입니다.

/usr/lib/python2.7/dist-packages/scipy/stats/stats.pyc in spearmanr(a, b, axis) 
    2226  rs = np.corrcoef(ar,br,rowvar=axisout) 
    2227 
-> 2228  t = rs * np.sqrt((n-2)/((rs+1.0)*(1.0-rs))) 
    2229  prob = distributions.t.sf(np.abs(t),n-2)*2 
    2230 
+3

가 포함되어 있습니다. 또한'np.seterr (all = 'raise')'을 설정하면 경고가 예외로 바뀌며,'spearmanr '의 어느 행이 0으로 나누어 졌는지 알려줍니다. – unutbu

+0

0으로 나눈 값은 대각선에서 rs = 1입니다. – user333700

답변

4

0으로 나누기 대각선에 디자인, RS = 1이다

spearmanr에 불쾌감을 줄 것이다. 이것은 모든 값에 대해 발생합니다.

그러나 scipy 0.9에서이 오류는 spearmanr 기능 내에서 로컬로 소거됩니다. 당신이 A``에 대한 값을 게시 할 수 있습니다와`문제를 재현하는 b`, 즉 도움이 될 것입니다 경우 대응 SourceLine을은

np.seterr(divide='ignore') # rs can have elements equal to 1

+0

이상한, 너는 내가 오히려 패키지 (@ 우분투)를 업데이트했고 여전히 수동으로 침묵해야했다. –

관련 문제