#備忘録
統計学に関する初歩的な関数
N(0,1^2)に従う正規分布のグラフの面積を求めるだけ。
↑これ
このポリープみたいな曲線の式は、
$$ f_{(x)}=\frac{1}{\sqrt{2x}}e^{(-\frac{x}{2})} $$
で与えられます。
コメントしてくれた人、有難うございます。
#ソース(誰得)
##1. 0からxまでの面積を求める
def NORMAL_Dist_S(a):
"""N(0,1^2)に従う正規分布の x=0からaまでの面積を返す"""
import numpy as np
import math
from scipy import integrate
f = lambda x: (math.exp(-x**2/2)) / math.sqrt(2*math.pi)
s,d = integrate.quad(f, 0, abs(a))
return s
NORMAL_Dist_Sは、
x=任意の実数
res = NORMAL_Dist_S(x)
と書き、
##2. x=∞からxまでの面積を求める
def NORMAL_Dist_S_REST(a):
"""N(0,1^2)に従う正規分布の x=0からaまでの面積を0.5から引いた値を返す"""
import numpy as np
import math
from scipy import integrate
f = lambda x: (math.exp(-x**2/2)) / math.sqrt(2*math.pi)
s,d = integrate.quad(f, 0, abs(a))
s=0.5-s
return s
NORMAL_Dist_S_RESTは、
x=任意の実数
res = NORMAL_Dist_S_REST(x)
と書き、
S(x)の値をresに返します。
##3. 任意の2地点の積分
def NORMAL_Dist(a,b):
"""N(0,1^2)に従う正規分布の aからbまでの面積を返す"""
import numpy as np
import math
from scipy import integrate
f = lambda x: (math.exp(-x**2/2)) / math.sqrt(2*math.pi)
s,d = integrate.quad(f, a,b)
return s
NORMAL_Distは、
x=任意の実数
y=任意の実数
res = NORMAL_Dist(x,y)
と書き、
S(x)の値をresに返します。
#感想
もっと単純明快かつ高速にかけそう
故に、誰得関数。
どんどん関数を増やしていきたい。(誰得なのに!!??)
なんだかんだいって、自分は使う場面が結構あるし、
めんどくさいからこの機会に思い切って関数化。
てかこの程度なら、pythonのimportするライブラリになんかあると思う。
というより、ないはずがない。
##出典など
http://org-technology.com/posts/integrate-function.html
https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83