【发布时间】: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