web-dev-qa-db-ja.com

scipy.stats.normのコンテキストでの確率密度関数とは何ですか?

これは非常に基本的な質問ですが、良い答えを見つけることができないようです。 scipyが正確に計算するもの

scipy.stats.norm(50,10).pdf(45)

平均50と標準偏差10のガウスで45のような特定の値の確率が0であることを理解しています。それでは、pdfは正確に何を計算しているのでしょうか。それはガウス曲線の下の領域ですか、そうであれば、x軸の値の範囲はどのくらいですか?

7
max_max_mir

Pythonで表される 正規分布確率密度関数 は、

from math import pi
from math import exp
from scipy import stats


def normal_pdf(x, mu, sigma):
    return 1.0 / (sigma * (2.0 * pi)**(1/2)) * exp(-1.0 * (x - mu)**2 / (2.0 * (sigma**2)))

(ウィキペディアの定義と比較してください)。そして、これはまさにscipy.stats.norm().pdf()が計算するものです:与えられたmu, sigmax点でのpdfのvalue

これはnot確率(=areapdfの下)ですが、の値xでpdfを渡してpdf(x)に渡します(その値は1.0よりも大きくなる可能性があります!)。たとえば、N(0, 0.1)x = 0にあることがわかります。

val = stats.norm(0, 0.1).pdf(0)

print(val)

val = normal_pdf(0, 0, 0.1)

print(val)

出力を与える

3.98942280401

3.989422804014327

まったくない=曲線の下の面積!

これは、x = 0のような特定の値の確率が0であるというステートメントと矛盾しないことに注意してください。これは、正式には、ポイントのPDFの下の領域(つまり、長さ0の間隔)がゼロであるためです(fは[a、b]の連続関数であり、[〜#〜] f [〜#〜]は[a、b]のその逆導関数であり、fover [a、b] =F(a)-F(b)。ここで、a = b = xしたがって、積分の値はF(x) - F(x) = 0)。

8
Stefan Zobel

取得しているのは、平均50と標準偏差10の通常のpdf関数の値xでのpdfです。 ここで関数を確認してください

使用して視覚化しやすい

npdf=norm(50,10)
plt.plot(range(0,100), npdf.pdf(range(0,100)), 'k-', lw=2)`

を使用して作成した通常のpdfからランダム変数を生成することもできます

npdf.rvs(1000) #1000 numbers 
hist=plt.hist(n.rvs(10000),bins=100,normed=True)

確率変数からの理論的なpdfおよび正規化されたヒストグラム

1
suvy