はじめに
numpyのrandom.lognormal()で対数正規分布に従うランダムな要素を生成し、matplotlibのplt.histでヒストグラムを作成する。そして、ヒストグラムに最頻値、中央値、平均値を表示する方法について説明する。
コード
解説
モジュールのインポート
データの生成
np.random.lognormal(mu, sigma, 10000)で対数正規分布に従うランダムな要素を生成する。muは平均でsigmaは標準偏差となる。生成したデータの主な統計値は以下のようになる。この統計量はdescribeで取得できる。
count | mean | std | min | 25% | 50% | 75% | max | |
---|---|---|---|---|---|---|---|---|
0 | 10000.0 | 3.596309 | 3.209368 | 0.18162 | 1.619376 | 2.66991 | 4.44486 | 48.417122 |
DataFrameから平均と中央値をスライスで取得する。.ilocとすることでnp.arrayのようにスライスできる。
ヒストグラムの表示
ヒストグラムのビンはbins = np.linspace(0,np.percentile(data, 98))とすることで0からデータの98パーセンタイルまでとした。
ヒストグラムはfreq,binn,_ = ax.hist(data,bins=bins,color=’C5′,alpha=0.5, clip_on=False)で表示できる。
freqが頻度となる。
最頻値はヒストグラムのピーク値に該当するので、np.argmax(freq)で頻度が最大となるインデックスを取得して、ヒストグラムデータを使いグラフ上に長細いプロットを表示する。
同様に、中央値と平均値もプロットする。
np.where(bins>median)[0][0]とすることでmedianより大きいbinsの最初のインデックスが取得できる。
参考
対数正規分布 - Wikipedia
numpy.random.lognormal — NumPy v1.9 Manual
コメント