2015-06-18 3 views
5

मैं पाइथन 2.7.10 में scipy.stats का उपयोग करके फिट परीक्षणों की कुछ भलाई चला रहा हूं।एक सामान्य तरीके से scipy.stats से एक पीडीएफ प्राप्त करना

for distrName in distrNameList: 
    distr = getattr(distributions, distrName) 
    param = distr.fit(sample) 
    pdf = distr.pdf(???) 

मैं distr.pdf() में क्या गुजरती है ब्याज की नमूना अंक की list पर सबसे फिट पीडीएफ के मूल्यों को प्राप्त करने के लिए, abscissas कहा जाता है?

+0

[यहाँ उदाहरण कोड के साथ सभी scipy.stats वितरण पीडीएफ़ कर रहे हैं।] (http://stackoverflow.com/a/37559471/2087463) – tmthydvnprt

उत्तर

4

abscissas पर पीडीएफ का मूल्यांकन करने के लिए, आप abcissas को pdf पर पहले तर्क के रूप में पास करेंगे। पैरामीटर निर्दिष्ट करने के लिए, use the * operatorparam टपल खोल और distr.pdf को उन मूल्यों को पारित करने के लिए:

pdf = distr.pdf(abscissas, *param) 

उदाहरण के लिए,

import numpy as np 
import scipy.stats as stats 

distrNameList = ['beta', 'expon', 'gamma'] 
sample = stats.norm(0, 1).rvs(1000) 
abscissas = np.linspace(0,1, 10) 
for distrName in distrNameList: 
    distr = getattr(stats.distributions, distrName) 
    param = distr.fit(sample) 
    pdf = distr.pdf(abscissas, *param) 
    print(pdf) 
6

प्रलेखन से, .fit() method रिटर्न:

आकार, स्थान, स्केल: फ्लोट्स का टुपलकिसी भी आकार के आंकड़ों के लिएएमएलई, उसके बाद स्थान और पैमाने के लिए।

और .pdf() method स्वीकार करता है:

एक्स: array_like quantiles

ARG1, ARG2, arg3, ...: वितरण के लिए आकार पैरामीटर (रों) array_like (docstring देखना अधिक जानकारी के लिए इंस्टेंस ऑब्जेक्ट का)

लोक: array_like, वैकल्पिक स्थान पैरामीटर (डिफ़ॉल्ट = 0)

पैमाने: array_like, वैकल्पिक

तो अनिवार्य रूप से आप कुछ इस तरह करना होगा:

import numpy as np 
from scipy import stats 
from matplotlib import pyplot as plt 


# some random variates drawn from a beta distribution 
rvs = stats.beta.rvs(2, 5, loc=0, scale=1, size=1000) 

# estimate distribution parameters, in this case (a, b, loc, scale) 
params = stats.beta.fit(rvs) 

# evaluate PDF 
x = np.linspace(0, 1, 1000) 
pdf = stats.beta.pdf(x, *params) 

# plot 
fig, ax = plt.subplots(1, 1) 
ax.hold(True) 
ax.hist(rvs, normed=True) 
ax.plot(x, pdf, '--r') 

enter image description here

+0

ग्राफ, और विस्तार के लिए +1 बहुत अच्छा है, लेकिन संक्षेप में यह unutbu के उत्तर में नहीं जोड़ा गया - या क्या मैं गलत हूं? – gt6989b

+0

नहीं, वास्तव में नहीं - मेरे पास अपने उत्तर टाइप करने के लिए समय नहीं था, Unutbu ने –

+0

पोस्ट किया था, मैंने +1 किया था, लेकिन दुर्भाग्य से, स्वीकार नहीं कर सकता ... बहुत बहुत धन्यवाद – gt6989b

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