我有麻煩繪製累積分佈函數。SciPy累積分佈函數繪圖
到目前爲止,我發現這一點:
scipy.stats.beta.cdf(0.2,6,7)
但這只不過是給了我一個點。
這將是我用來繪製:
pylab.plot()
pylab.show()
我希望它看起來就像是這樣的: File:Binomial distribution cdf.svg
與p = .2
和界限爲1
y = 1
或關閉
我有麻煩繪製累積分佈函數。SciPy累積分佈函數繪圖
到目前爲止,我發現這一點:
scipy.stats.beta.cdf(0.2,6,7)
但這只不過是給了我一個點。
這將是我用來繪製:
pylab.plot()
pylab.show()
我希望它看起來就像是這樣的: File:Binomial distribution cdf.svg
與p = .2
和界限爲1
y = 1
或關閉
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()
我不認爲上面的用戶,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。
這正是我要找的!非常感謝你!我花了大約3個小時試圖完成這樣的事情。 但我仍然很難理解這個概念。什麼是這個linspace(0,20,100) 至於stat.beta.cdf我只是使用了錯誤的代碼? 我看到你使用了stats.binom.cdf – Overtim3
[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
既然你發佈了一個鏈接到一個二項式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