如何从经验分布函数中制作样本

4

我正在尝试在Python上实现非参数bootstrapping。它需要获取一个样本,从中构建经验分布函数,然后从这个edf生成一堆样本。我该怎么做呢?在scipy中,我只发现了如何制作自己的分布函数,如果您知道描述它的确切公式,但我只有一个edf。


为什么需要EDF?你应该从数据中进行(有放回的)采样,这些将成为你的自助样本。 - maxymoo
1个回答

2

通过对样本进行排序所得到的EDF:

N = samples.size
ss = np.sort(samples) # these are the x-values of the edf
                      # the y-values are 1/(2N), 3/(2N), 5/(2N) etc.
edf = lambda x: np.searchsorted(ss, x) / N

然而,如果你只想对样本进行重新采样,那么你只需从样本中等概率地随机抽取并替换即可。

如果这种“跳跃式”的方法不符合您的口味,您可以使用某种插值方法来获得平滑分布。


EDF 根据定义是分步的! - maxymoo
@maxymoo 是的我知道。但通常人们对edf并不是真正感兴趣,而是作为一种估计“真实”分布的设备。而且,人们可能有充分的理由认为真实分布是平滑的。此外,根据您使用新样本的目的,从真实分布平滑的离散分布中进行采样可能会导致伪影。 - Paul Panzer
这很有趣...你经常平滑你的引导程序吗? - maxymoo
@maxymoo 幸运的是,我的日常生活并不需要太多的统计知识。为什么?你有什么原则性的反对意见吗?我很乐意倾听更高级的知识。 - Paul Panzer
幸运的是,我绝对没有优越的知识或任何原则上的反对意见,我在这里学到了一些东西,并且如果我在未来观察到引起估计误差的迹象,我会记住平滑技巧。 - maxymoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接