【问题标题】:Empirical Quantile Comparison Effect Size经验分位数比较效应大小
【发布时间】:2013-10-25 10:31:40
【问题描述】:

我正在尝试使用经验数据重新创建以下积分:

其中 F、G 是 cdf,它们的逆函数是分位数函数。

这是我的代码:

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

【问题讨论】:

  • 你能修正一下你的格式吗?
  • @tcaswell 我不太确定如何在这个问题上添加乳胶格式。你能指导我一些关于这方面的指导吗?我试着环顾四周,但找不到怎么做。
  • 所以不会做 tex 标记(我知道)。我更关心代码的缩进。

标签: python scipy quantile ecdf


【解决方案1】:

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

mquantiles 具有可选关键字alphap=0.4, betap=0.4

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

但是,在大样本中,差异应该很小。

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

顺便说一句:这两个分布之间的距离度量有名称吗?

【讨论】:

  • 我发现它被称为“分位数比较效应大小”,这是衡量两个非正态、非参数(任意)分布之间差异的指标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多