このページでは統計の基本となる正規分布について全部で2つのモジュールで取り扱っていきます。
今回は正規分布をPythonで取り扱う方法を知りたいです!
正規分布を取り扱うにはどういった方法があるんですか?
numpyやscipyといった科学技術計算を行うためのライブラリで扱うことができます!
今回は正規分布に従うデータを生成する方法を勉強していきましょう!
正規分布(またはガウス分布)は、統計学や確率論において非常に重要な分布で、自然界や社会現象などさまざまな現象が正規分布に従うことがあります。
この記事では、Pythonを使用して正規分布を取り扱う方法について解説します。
正規分布は、平均値(μ)を中心にして左右対称な釣鼻型の分布を持ち、標準偏差(σ)が分布の広がりを制御します。正規分布は次のような性質を持っています。
- 平均値(μ)に最大の確率密度があります。
- 標準偏差(σ)が小さければ分布は細く、大きければ広がります。
- 中心極限定理により、独立かつ同一の確率分布に従う多数の独立な確率変数の平均は正規分布に従います。
以下では、それぞれのライブラリの使い方を例とともに説明します。
正規分布に従うデータを生成する2つの方法
Pythonで正規分布に従うデータを生成する方法は2つあります。
- numpy.random.normal()関数でデータ生成する方法
- scipy.stats.normモジュールでデータ生成する方法
生成したデータを元にグラフの描画も行います。それぞれ順番に説明していきます。
numpy.random.normal()関数でデータ生成する方法
numpyは科学計算を行うためのライブラリで、正規分布からランダムな値を生成するnumpy.random.normal()
関数を提供しています。
import numpy as np
import matplotlib.pyplot as plt
# 平均μ,標準偏差σ
mu, sigma = 50,20
# 平均μ=50,標準偏差σ=20の正規分布に従うランダムな値を1000件生成
s = np.random.normal(mu, sigma, 1000)
#ヒストグラムで表示
plt.hist(s)
plt.show()
scipy.stats.normモジュールでデータ生成する方法
scipyは科学技術計算を行うためのライブラリで、正規分布を扱うためのscipy.stats.norm
モジュールを提供しています。
このモジュールには、正規分布に関連する様々な関数が含まれています。
例えば、rvs()
関数を使ってランダムな値を生成したり、pdf()
関数を使って確率密度関数を計算したり、cdf()
関数を使って累積分布関数を計算したりできます。
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# 平均μ,標準偏差σ
mu, sigma = 0, 1
# 確率密度関数
x = np.linspace(norm.ppf(0.01), norm.ppf(0.99), 100)
pdf = norm.pdf(x, mu, sigma)
# 平均μ=0,標準偏差σ=1の正規分布に従うランダムな値を1000件生成
s = norm.rvs(mu, sigma, size=1000)
#ヒストグラムで表示
plt.hist(s)
plt.show()
正規分布に従うデータのヒストグラムまで表示できました~!
numpyとscipyを用いる2種類の方法で正規分布を取り扱えるんですね!
そうなんです!
今回グラフの表示にはmatplotlibを用いましたが、seabornなど他のグラフ描画モジュールを用いることもできますね。
詳細なグラフの設定を含めて、目的に合わせてグラフ描画も使い分けられると良いですね!
まとめ
この記事では、Pythonで正規分布に従うデータを生成する方法について2つの方法を紹介しました。
どちらの方法も、生成したデータを元にヒストグラムを描画することで、正規分布の形状を確認することができます。
また、scipy.stats.normモジュールでは、確率質量関数や累積分布関数を計算する関数も提供されています。
これらの関数を使って、正規分布の特徴を詳しく調べることもできます。
どちらの方法もプログラム自体は簡単で使いやすいので、目的に合わせて使い分けてみてください!
このサイトの記事一覧へは以下へアクセス!
コメント