经验分位比较效应大小

时间:2013-10-17 04:14:32

标签: python scipy quantile ecdf

我正在尝试使用经验数据重建以下内容:

enter image description here

其中F,G是cdfs,它们的反转是分位数函数。

这是我的代码:

def eqces(u,v):
    import numpy as np
    import statsmodels.api as sm
    from scipy.stats.mstats import mquantiles

    ecdfu = sm.distributions.ECDF(u)
    ecdfv = sm.distributions.ECDF(v)
    p = np.concatenate([ecdfu.y, ecdfv.y])
    p = np.unique(p) 
    p.sort()

    qfu = mquantiles(u, p)
    qfv = mquantiles(v, p)

    uvinv = ecdfu(qfv)
    vuinv = ecdfv(qfu)

    result = abs(uvinv - p) + abs(vuinv - p)
    return np.dot(result, np.ones(p.size))

有了这个,我希望eqces(u,u) = 0 u = np.random.uniform(0,1,50),但通常情况并非如此。任何人都可以告诉我,我做错了什么或建议替代方案吗?

Edit

此代码似乎可以更好地处理一些分析结果:

def eqces(u,v): 
    ecdfu = sm.distributions.ECDF(u)
    ecdfv = sm.distributions.ECDF(v)

    p = np.concatenate([ecdfu.y, ecdfv.y])
    X = np.concatenate([ecdfu.x, ecdfv.x])

    return 2*np.dot(np.abs(ecdfu(X)-p)+np.abs(ecdfv(X)-p), np.ones(p.size))/p.size

1 个答案:

答案 0 :(得分:1)

我的猜测是ECDFmquantiles不使用相同的绘图位置

mquantiles包含可选关键字alphap=0.4, betap=0.4

puvinv在这种情况下不会往返。

然而,在大样本中,差异应该很小。

scipy.stats.ks_2samp正在做类似的事情,但直接使用没有帮助函数的numpy。

顺便说一句:两个发行版之间的距离度量是否有名称?