我一直在寻找在柯尔莫哥洛夫斯米尔诺夫测试的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