2016-11-06 19 views
0

多変量正規分布のCDFを計算する関数を探しています。私はscipy.stats.multivariate_normalは(サンプルx用)PDFを計算するための唯一の方法を持っていることがわかったが、しなかったCDF multivariate_normal.pdf(x, mean=mean, cov=cov)Pythonでの多変量正規のCDF

私はCDF、のようなものを計算するが、同じものを探しています

multivariate_normal.cdf(x, mean=mean, cov=cov)を、残念ながらmultivariate_normal doesnのcdfメソッドを持っています。私が見つけた

唯一のものはこれです:Multivariate Normal CDF in Python using scipy が、パラメータとしてサンプルxを取ることはありませんので、私は本当に私が言ったことと同様のものを持って、それを使用する方法が表示されないscipy.stats.mvn.mvnun(lower, upper, means, covar)提示方法上記。

+1

[この]のチェックを開始する(http://statsmodels.sourceforge.net/stable/generated /statsmodels.sandbox.distributions.extras.mvnormcdf.html#statsmodels.sandbox.distributions.extras.mvnormcdf)。 – sascha

+0

@sascha私が 'scipy.stats.mvn.mvnun'を求めたのと同じ質問は、あなたがこのリンクで提供したものにも当てはまります。 – eLearner

+0

それであなたは正確に何をしたいですか?ポイントへの配布を*適合させたいと思っていますか? – sascha

答えて

0

一部のディストリビューションのCDFは、実際にはそのディストリビューションのPDF上で積分されています。つまり、積分の境界を関数に与える必要があります。彼らはいくつかのディストリビューションに関連したいくつかの点のp_valueのために頼むとき、ほとんどの人が何を意味するか

は次のとおりです。

この分布与えられたこれらの値以上を取得するチャンスは何ですか?

注意赤でマークされた領域 - それはポイントではなく、むしろ不可欠以降、いくつかのポイントから:、

したがって

enter image description here

、あなたは下の境界としてあなたのポイントを設定する必要があります+上限としてinfファイル(またはいくつかの任意の十分に高い値に)、あなたが既に持っている手段と共分散行列を提供します。

from sys import maxsize 

def mvn_p_value(x, mu, cov_matrix): 
    upper_bounds = np.array([maxsize] * x.size) # make an upper bound the size of your vector 
    p_value = scipy.stats.mvn.mvnun(x, upper_bounds, mu, cov_matrix)[1] 
    if 0.5 < p_value: # this inversion is used for two-sided statistical testing 
     p_value = 1 - p_value 
    return p_value 
関連する問題