さまざま分布のQQプロットを描画してみる


https://qiita.com/kenmatsu4/items/59605dc745707e8701e0
http://www.ie-kau.net/entry/2016/03/10/%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E8%A6%8B%E6%A5%B5%E3%82%81%E3%82%8B3%E3%81%A4%E3%81%AE%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%EF%BC%88Python%EF%BC%89

上記のURLにも載っていますが、いくつか載せてみます。

import numpy as np 
import scipy.stats as stats
import matplotlib.pyplot as plt

def qqplot(dist):
    plt.hist(dist, bins=30)
    plt.show()
    stats.probplot(dist, dist="norm", plot=plt)
    plt.show()

# 正規分布
qqplot(np.random.randn(10000))


# 一様分布
qqplot(np.random.rand(10000))


# 混合ガウス分布1
dist = [np.random.normal(-3,1) if np.random.randint(2) else np.random.normal(3,1) for _ in range(10000)]
qqplot(dist)


# 混合ガウス分布2
dist = [np.random.normal(-5,1) if np.random.randint(3) 
   else np.random.normal(3,5) for _ in range(10000)]
qqplot(dist)


# Beta分布
qqplot(np.random.beta(0.5,0.5,10000))


#t分布
qqplot(stats.t.rvs(5, size=100000))


# 対数正規分布
qqplot(np.exp(np.random.normal(100,0.5,10000)))


裾の重いt分布のプロットが面白いですね。