2015-08-23 73 views
0

我有一個數據集,其平均值= 40,sd = 5,等級間隔爲20,從30開始,所以第一個頻率等級是(30-50)。我已經通過定義函數通過以下如何計算Python中觀測數據的預期相對頻率

scipy.stats.norm.cdf((50-mean)/sd)-scipy.stats.norm.cdf((30-mean)/sd) 

然後我怎樣才能計算高達10類的預期值的代碼計算用於第一類預期相對累積頻率(在正常分佈),從而使預期值對於第二類將是

scipy.stats.norm.cdf((70-mean)/sd)-scipy.stats.norm.cdf((50-mean)/sd) 

對此問題的任何幫助是高度appriciated。

+1

這個問題很難閱讀,我仍然不確定你在問什麼。你想計算這10個班的「期望值」(你是指該班的預期頻率?):(30..50,50..70,70..90,90..110,.. 。)?如果是,那有什麼問題?你已經有了前兩個。你是否在尋求幫助來編寫for循環? – maxy

+0

@maxy對不起,我的英語不太好,是的,你明白我的問題。我爲十個班級手動做了這個計算。我的問題是如何讓這個問題循環?這樣我們就不必爲每個類手動操作了 – bikuser

回答

1

你可以使用一個簡單的for循環:

cdf = scipy.stats.norm.cdf # just a shortcut 
for i in range(10): 
    lo = 30 + 20*i 
    hi = lo + 20 
    freq = cdf((hi-mean)/sd)-cdf((lo-mean)/sd) 
    print 'interval', lo, 'to', hi, 'freq', freq 

,或者你可以使用數組它計算(也稱爲矢量):

start, interval = 30, 20 
count = 10 
lo = start + numpy.arange(count) * interval 
hi = lo + interval 
print cdf((hi-mean)/sd)-cdf((lo-mean)/sd) 

正如預期的那樣,較高的間隔是遠成正態分佈的尾部和全零。

如果第一種方法導致了您的問題,我建議您搜索一個通用的Python教程並開始工作。

+0

謝謝maxy對你的大力幫助:) – bikuser