假设我们有两个样本data1
和{
我们在python中这样做的方法如下:
def ks_w(data1,data2,wei1,wei2):
ix1=np.argsort(data1)
ix2=np.argsort(data2)
wei1=wei1[ix1]
wei2=wei2[ix2]
data1=data1[ix1]
data2=data2[ix2]
d=0.
fn1=0.
fn2=0.
j1=0
j2=0
j1w=0.
j2w=0.
while(j1<len(data1))&(j2<len(data2)):
d1=data1[j1]
d2=data2[j2]
w1=wei1[j1]
w2=wei2[j2]
if d1<=d2:
j1+=1
j1w+=w1
fn1=(j1w)/sum(wei1)
if d2<=d1:
j2+=1
j2w+=w2
fn2=(j2w)/sum(wei2)
if abs(fn2-fn1)>d:
d=abs(fn2-fn1)
return d
我们只需根据我们的目的修改经典的两个样本KS统计,如Press,Flannery,Teukolsky,Vetterling——C-剑桥大学出版社1992-第626页中的数字配方。在
我们的问题是:
这是一个双尾加权KS统计量的R版本,它遵循Monohan提出的统计数值方法,1E页为334页,2E页为358页
通过研究
scipy.stats.ks_2samp
代码,我们能够找到一个更有效的python解决方案。如果有人感兴趣,我们分享以下内容:为了评估性能,我们进行了以下测试:
^{pr2}$在我们的机器上,
ks_w2(ds1, ds2, we1, we2)
用了11.7毫秒,ks_w(ds1, ds2, we1, we2)
用了1.43秒相关问题 更多 >
编程相关推荐