2017-10-25 6 views
0

Seabornのqq plotをデータの正常性のテストとして行う方法は誰にでも教えてください。少なくとも、matplotlibではそれは失敗します。 Wikipediaの記事を読んだ後、事前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を示しています。結果は少し凹んだ曲線です。

関連する問題