2017-10-25 1 views
0

Seaborn에서 qq plot을 데이터의 정규성 테스트로 사용할 수있는 사람이 있습니까? 또는 matplotlib에서 적어도 실패했습니다. 위키 피 디아 기사를 읽은 후 사전Seaborn과 SciPy를 사용한 Quantile-Quantile 플롯

+2

http://www.statsmodels.org/dev/generated/statsmodels.graphics.gofplots.qqplot.html을 참조하십시오. –

답변

4

에서

덕분에, 나는 Q-Q 플롯이 서로에 대한 두 개의 분포의 분위수의 플롯 것을 이해합니다.

numpy.percentile은 분포의 백분위 수를 얻을 수 있습니다. 따라서 각 분포에서 numpy.percentile을 호출하고 결과를 서로 대입 할 수 있습니다.

import numpy as np 
import matplotlib.pyplot as plt 

a = np.random.normal(5,5,250) 
b = np.random.rayleigh(5,250) 

percs = np.linspace(0,100,21) 
qn_a = np.percentile(a, percs) 
qn_b = np.percentile(b, percs) 

plt.plot(qn_a,qn_b, ls="", marker="o") 

x = np.linspace(np.min((qn_a.min(),qn_b.min())), np.max((qn_a.max(),qn_b.max()))) 
plt.plot(x,x, color="k", ls="--") 

plt.show() 

enter image description here

3

Statsmodels.api이 작업의 플로터를 가지고있다.

체크 아웃 sm.qqplot는() sm docs

다음은 위와 같은 데이터를 사용하여 몇 가지 예입니다.

import numpy as np 
import matplotlib.pyplot as plt 
import statsmodels.api as sm 

a = np.random.normal(5,5,250) 
sm.qqplot(a) 
plt.show() 

아직 이미지를 게시 할 수 없습니다. 그래서 그것을 밖으로 시도하십시오. 이 것은 정상 분포에 대해 플롯 된 정규 분포를 보여줍니다.이 결과는 (직사각형) 직선입니다.

b = np.random.rayleigh(5,250) 
sm.qqplot(b) 

정상적인 dist에 대해 raleigh dist를 보여줍니다. 결과는 약간 오목한 곡선입니다.

관련 문제