【SciPy】scipy.statsを使った色々な分布の描き方[Python]

  • URLをコピーしました!
目次

SciPy

前回、PythonのSciPyでガウス分布(正規分布)のグラフを描く方法を紹介しました。

今回は同じく「scipy.stats」を使って他の色々な分布を描く方法を紹介します。

私自身は数学的な意味はよく理解をしていないので割愛します。

別途調べてもらえると助かります。

それでは始めていきましょう。

ベータ分布

ベータ分布を作成するには「scipy.statsのbeta」をインポートし、「beta.pdf(xのリスト, a, b)」です。

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

x = np.arange(-1, 1, 0.01)
y1 = beta.pdf(x, 1, 3)
y2 = beta.pdf(x, 2, 3)
y3 = beta.pdf(x, 1, 6)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

χ二乗分布

χ二乗分布を作成するには「scipy.statsのchi2」をインポートし、「chi2.pdf(xのリスト, df)」です。

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

x = np.arange(-10, 10, 0.01)
y1 = chi2.pdf(x, 1)
y2 = chi2.pdf(x, 2)
y3 = chi2.pdf(x, 3)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

f分布

f分布を作成するには「scipy.statsのf」をインポートし、「f.pdf(xのリスト, dfn, dfd)」です。

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

x = np.arange(-10, 10, 0.01)
y1 = f.pdf(x, 1, 3)
y2 = f.pdf(x, 2, 3)
y3 = f.pdf(x, 1, 6)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

ガンマ分布

ガンマ分布を作成するには「scipy.statsのgamma」をインポートし、「gamma.pdf(xのリスト, a)」です。

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

x = np.arange(-10, 10, 0.01)
y1 = gamma.pdf(x, 1)
y2 = gamma.pdf(x, 2)
y3 = gamma.pdf(x, 1, 3)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

t分布

t分布を作成するには「scipy.statsのt」をインポートし、「t.pdf(xのリスト, df)」です。

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

x = np.arange(-10, 10, 0.01)
y1 = t.pdf(x, 1)
y2 = t.pdf(x, 5)
y3 = t.pdf(x, 1, 5)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

一様分布

一様分布を作成するには「scipy.statsのuniform」をインポートし、「uniform.pdf(xのリスト)」です。

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

x = np.arange(-10, 10, 0.01)
y1 = uniform.pdf(x, 1)
y2 = uniform.pdf(x, 5)
y3 = uniform.pdf(x, 1, 5)

fig = plt.figure()
plt.clf()

plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)

plt.show()

実行結果

ここで紹介した分布はごく一部です。

他の分布に関してはこちらのページで確認してみてください。

次回はmatplotlibで斜体(イタリック)文字、上付き文字、下付き文字を使う方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次