パラメータを変えて正規分布グラフを書きたい(sympyを使う)

確率分布を試しに書く際、データを発生させたりせず試したかったので、数式を扱うsympyで書いてみました。

使うもの

# 描画
from sympy.plotting import plot
# 数式
from sympy import symbols
# 計算
from sympy import exp,pi,sqrt

▼上を読んで「ん?」となったらsympyの基本をまとめた記事をどうぞ esu-ko.hatenablog.com

esu-ko.hatenablog.com

今回書くもの

正規分布を書いてみることにします。
この数式をまずはコードに起こします。


\frac{1}{\sqrt{2\pi\sigma^2}}exp(-\frac{(x-\mu)^2}{2\sigma^2})


\mu, \sigmaとxをsymbolsにし、式にします。

mu,sigma,x = symbols('mu,sigma,x')

expr = (1/sqrt(2 * pi * sigma**2 )) * exp(-1 * ((x-mu)**2 )/ (2*sigma**2))

プロットしてみる

正規分布は、 \mu,\sigmaに値を渡し形を決定するので
上記に代入をします。.subsで代入です。

plot(
    expr.subs([
        (mu,0),
        (sigma,1)
    ]),
    (x,-2,2) #xの範囲を決定する
)

f:id:esu-ko:20200712223843p:plain

何パターンか試す場合

#sigmaは固定し、平均を動かしてみる
ps = [ expr.subs([(sigma,1),(mu,i)])for i in range(5)]
plot(*ps,range=(x,-10,10))

f:id:esu-ko:20200712224008p:plain オッケーそうです。