2015-05-31 7 views
9

आदेश बहुविविध सामान्य की CDF की गणना करने के लिए, मैं (univariate मामले के लिए) this उदाहरण का पालन किया लेकिन उत्पादन scipy द्वारा उत्पादित की व्याख्या नहीं कर सकते हैं:अजगर में बहुभिन्नरूपी सामान्य CDF का उपयोग कर scipy

from scipy.stats import norm 
import numpy as np 
mean = np.array([1,5]) 
covariance = np.matrix([[1, 0.3 ],[0.3, 1]]) 
distribution = norm(loc=mean,scale = covariance) 
print distribution.cdf(np.array([2,4])) 

उत्पादन का उत्पादन है:

[[ 8.41344746e-01 4.29060333e-04] 
[ 9.99570940e-01 1.58655254e-01]] 

संयुक्त CDF के रूप में परिभाषित किया गया है:

P (X1 ≤ x1, . . . ,Xn ≤ xn) 

तो अपेक्षित आउटपुट 0 और 1.

+0

द्वारा CDF गणना मैं आपको लगता है नहीं है multivariate मामले के लिए 'scipy.stats.norm' का उपयोग कर सकते हैं। – cel

+1

'scipy.stats' में 'multivariate_normal' है (http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.multivariate_normal.html), लेकिन इसमें' cdf' विधि नहीं है। –

उत्तर

17

बहुत खोज करने के बाद, मुझे लगता है कि this नोहा एच। सिलबर्ट द्वारा ब्लॉग एंट्री एक मानक लाइब्रेरी से एकमात्र रेडीमेड कोड का वर्णन करता है जिसका उपयोग कंप्यूटिंग के लिए किया जा सकता है पाइथन में एक बहुविकल्पीय सामान्य के लिए सीडीएफ। Scipy के पास ऐसा करने का एक तरीका है लेकिन जैसा कि ब्लॉग में उल्लेख किया गया है, यह खोजना मुश्किल है। दृष्टिकोण एलन जेनज़ के एक पेपर पर आधारित है।

ब्लॉग से, यह इस तरह काम करता है।

from scipy.stats import mvn 
import numpy as np 
low = np.array([-10, -10]) 
upp = np.array([.1, -.2]) 
mu = np.array([-.3, .17]) 
S = np.array([[1.2,.35],[.35,2.1]]) 
p,i = mvn.mvnun(low,upp,mu,S) 
print p 

0.2881578675080012 
+0

क्या अंक की एक सरणी 'mvn.mvnun' को पास करना संभव है? मैंने कोड पढ़ा, ऐसा लगता है कि मैं इसके माध्यम से केवल 'लूप' कर सकता हूं? – cqcn1991

+0

@ cqcn1991 मैं एक फ़ाइल के माध्यम से एक सरणी पारित करके साजिश के लिए multivariate सीडीएफ की तलाश में हूँ। क्या आप समाधान ढूंढने में सक्षम थे? क्या आप यहां एक नजर डालें http://stackoverflow.com/questions/37057938/bivariate-cdf-ccdf-distribution-python –

+0

'' mvn.mvnun''' के साथ समस्या यह निर्धारित नहीं है कि यह निर्धारित नहीं है। कम से कम, यह कोड प्रत्येक बार अलग-अलग परिणाम देता है: https://pastebin.com/L0WSTRui –

0

आप (यानी यह कभी कभी ही प्रदर्शन) प्रदर्शन के बारे में परवाह नहीं है, तो आप multivariate_normal का उपयोग कर मल्टीवेरिएट सामान्य पीडीएफ बना सकते हैं, और फिर integrate.nquad

+0

क्या आप इस बारे में विस्तार से बता सकते हैं कि हम इसका उपयोग कैसे कर सकते हैं? और क्या इसका उपयोग एक ऐसे कार्य की अपेक्षा खोजने के लिए किया जा सकता है जो एक बहुविकल्पीय सामान्य वितरण पर निर्भर है? –

संबंधित मुद्दे