我一直在尋找在柯爾莫哥洛夫斯米爾諾夫測試的scipy.stats
實施,看見下面的代碼:Python代碼範例優化
D = np.max([Dplus,Dmin])
if mode == 'asymp':
return D, distributions.kstwobign.sf(D*np.sqrt(N))
if mode == 'approx':
pval_two = distributions.kstwobign.sf(D*np.sqrt(N))
if N > 2666 or pval_two > 0.80 - N*0.3/1000.0 :
return D, distributions.kstwobign.sf(D*np.sqrt(N))
else:
return D, distributions.ksone.sf(D,N)*2
我認爲這將是更好地做到這一點,如下所示:
D = np.max([Dplus,Dmin])
pval_two = distributions.kstwobign.sf(D*np.sqrt(N))
if mode == 'asymp':
return D, pval_two
if mode == 'approx':
if N > 2666 or pval_two > 0.80 - N*0.3/1000.0 :
return D, pval_two
else:
return D, distributions.ksone.sf(D,N)*2
我不落實節省了昂貴的生存分佈函數的調用,我覺得是更清晰一點,以及...
但我不是一個Python專家,scipy
是一個非常深思熟慮的庫(或者至少對我來說似乎是這樣)。那麼你能否解釋爲什麼圖書館以第一種方式做到了?
這個問題*力量*是一個更適合於[代碼審查(http://codereview.stackexchange.com /) – That1Guy