2012-04-24 4 views
1

私はプログラミングしているPythonアプリケーションで確率と累積密度関数を使用する必要があります。 SciPyは両方を提供していますが、これらの2つの機能だけでは依存度が高すぎます。 PDFはSciPyなしで実装するのに十分簡単です。 (From the docs:SciPyなしのPDFとCDF

ノルムの確率密度関数である:

norm.pdf(X)= EXP(-x ** 2/2)/ SQRT(2 * PI)

CDFを取得する方法はありますか SciPyを使用しないでください。

+0

手で統合!そのための簡単な式があります...そうですか? [ヒント:いいえ] – Shep

答えて

2

this postを参照してください:

from math import * 
def erfcc(x): 
    """Complementary error function.""" 
    z = abs(x) 
    t = 1./(1. + 0.5*z) 
    r = t * exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+ 
     t*(.09678418+t*(-.18628806+t*(.27886807+ 
     t*(-1.13520398+t*(1.48851587+t*(-.82215223+ 
     t*.17087277))))))))) 
    if (x >= 0.): 
     return r 
    else: 
     return 2. - r 

def ncdf(x): 
    return 1. - 0.5*erfcc(x/(2**0.5)) 
3

"エラー機能"を探しています。the math moduleを参照してください。 elementary functionsの形でのクローズドフォーム表現はありません。

math.erf(x)はpython 2.7で導入されました。以前のバージョンを使用している場合は、an approximationで期限を設定する必要があります。

関連する問題