2012-10-11 361 views
2

我有麻煩繪製累積分佈函數。SciPy累積分佈函數繪圖

到目前爲止,我發現這一點:

scipy.stats.beta.cdf(0.2,6,7) 

但這只不過是給了我一個點。

這將是我用來繪製:

pylab.plot() 
pylab.show() 

我希望它看起來就像是這樣的: File:Binomial distribution cdf.svg

p = .2和界限爲1

停止一次 y = 1或關閉

回答

5

cdf的第一個參數可以是值的數組,而不是單個值。它會返回一個數組值。

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

x = np.linspace(0,20,100) 
cdf = stats.binom.cdf 
plt.plot(x,cdf(x, 50, 0.2)) 
plt.show() 

enter image description here

+1

這正是我要找的!非常感謝你!我花了大約3個小時試圖完成這樣的事情。 但我仍然很難理解這個概念。什麼是這個linspace(0,20,100) 至於stat.beta.cdf我只是使用了錯誤的代碼? 我看到你使用了stats.binom.cdf – Overtim3

+0

[np.linspace](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html)(0,20,100)創建了一個numpy數組100個均勻間隔的值,介於0和20(含)之間。 (嘗試'print(np.linspace(0,20,10))'。付費試驗!) – unutbu

+0

既然你發佈了一個鏈接到一個二項式cdf的圖表,我使用了[stats.binom.cdf](http: //docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html)而不是[stats.beta.cdf](http://docs.scipy.org/doc/scipy/reference/生成/ scipy.stats.beta.html)。 – unutbu

1

我不認爲上面的用戶,Ubuntu的,已建議使用正確的函數。其實他的回答是非常誤導和不正確的。

請注意,binom.cdf()是計算由n和p指定的二項分佈的cdf的函數,Binomial(n,p)。也就是說,它返回x中每個值的隨機變量的cdf值,而不是由矢量x指定的離散分佈的實際cdf函數。

爲了計算CDF用於通過矢量x定義的任何分佈,只需使用histogram()功能:

import numpy as np 
hist, bin_edges = np.histogram(np.random.randint(0,10,100), normed=True) 
cdf = cumsum(hist) 

,或者只使用hist()繪圖功能從matplotlib。