首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中使用相同的bin获取可变大小numpy数组的CDF?

在Python中使用相同的bin获取可变大小numpy数组的CDF?
EN

Stack Overflow用户
提问于 2013-04-04 02:39:30
回答 2查看 448关注 0票数 2

我想为几个numpy数组(每个数组具有不同的长度)制作一组可比较的经验CDF,并将它们存储在pandas数据帧中:

代码语言:javascript
复制
a = scipy.randn(100)
b = scipy.randn(500)
# ECDF from statmodels
cdf_a = ECDF(a)
cdf_b = ECDF(b)

问题是,cdf_a.x, cdf_a.y会有不同的cdf_b.x, cdf_b.y长度,我希望它们是相同的长度,即使用相同数量的柱子来计算CDF,以便可以从熊猫DataFrame以相同的比例绘制这些数据。这是不可能的:

代码语言:javascript
复制
df = pandas.DataFrame({"cdf_a": cdf_a.y, "cdf_b": cdf_b.y})

因为cdfs的长度不同。我怎样才能在计算ab的CDF时使用相似的bin,这样我就可以得到同等长度的向量了?

这是最好的解决方案吗?

代码语言:javascript
复制
bins = np.linspace(0, 1, 10)
v1 = cdf_a(bins)
v2 = cdf_b(bins)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-04 06:32:56

看起来这是一个很好的解决方案:

代码语言:javascript
复制
bins = np.linspace(0, 1, 10)
v1 = cdf_a(bins)
v2 = cdf_b(bins)

然后,len(v1) == len(v2)和这些可以在相同比例上绘制为a, b的CDF。

票数 0
EN

Stack Overflow用户

发布于 2013-04-04 06:36:23

我们在一些拟合优度测试中使用它的方法是堆叠数组,因此它们是在所有点上定义的,来自两个数组的点。

然后使用np.searchsorted获得排名,数据集1中低于x的点数和数据集2中低于x的点数。

如果我没记错的话,看看scipy.stats.ks_2samp

代码语言:javascript
复制
data1 = np.sort(data1)
data2 = np.sort(data2)
data_all = np.concatenate([data1,data2])
cdf1 = np.searchsorted(data1,data_all,side='right')/(1.0*n1)
cdf2 = (np.searchsorted(data2,data_all,side='right'))/(1.0*n2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15795353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档