我有這樣的數據集:Python,計算二項式P值:這段代碼是否正確?
ItemNumber Successes Trials Prob
15 14 95 0.047
9625 20 135 0.047
19 14 147 0.047
24 12 120 0.047
20 15 133 0.047
22 8 91 0.047
9619 16 131 0.047
10006 8 132 0.047
25 15 127 0.047
欲識別culmulative二項式分佈p值對每個項目,瞭解觀察項目出現的相同或更高數目的概率。
我用這個代碼:
import sys
import scipy
from scipy.stats.distributions import binom
import sys
for line in open(sys.argv[1], 'r').readlines():
line = line.strip().split()
Item,num_succ,num_trials,prob = line[0],int(line[1]),int(line[2]),float(line[3])
print Item + "\t" + str(num_succ) + "\t" + str(num_trials) + "\t" + str(prob) + "\t" + str(1 - (binom.cdf(num_succ, num_trials, prob)))
輸出看起來是這樣的:
Item NumSucc NumTrials Prob Binomial
15 14 95 0.047 3.73e-05
9625 20 135 0.047 1.48e-06
19 14 147 0.047 0.004
24 12 120 0.047 0.0043
20 15 133 0.047 0.00054
22 8 91 0.047 0.027
9619 16 131 0.047 0.0001
10006 8 132 0.047 0.169
25 15 127 0.047 0.0003
的問題:當我挑一條線,並檢查所獲得的累積二項式P值對像一個在線工具這個:http://stattrek.com/online-calculator/binomial.aspx,結果不一樣。
例如,
對於項目20(#成功= 15,#試驗= 133,習題= 0.047):
My Binomial P Val = 0.00054
StatTrek P Val = 0.0015
不過,我可以從StatTrek看到,我已經看過因爲我想要「等於或大於」,我實際上想要計算的是P(X> = 15)(它是0.0015)。
我竭力要正確編輯上面的代碼,改變從返回P值「找到發病率大於數」到「找到發生率大於或等於數量」。如果有人能證明我會感激。如果你看看this question,我試圖關注Volodymyr的評論。