根据需要的分布和经验抽样生成随机数

时间:2016-04-22 09:00:52

标签: python-2.7 scipy

我有两组样本,一组以指数方式分布,第二组是Bernoli(我使用scipy.stats.exponscipy.stats.bernoulli来拟合我的数据。)

根据这些抽样,我想创建两个随机生成器,使我能够从两个发行版中抽取数字。

有什么替代方法呢?

如何找到创建随机生成器的正确参数?

1 个答案:

答案 0 :(得分:3)

使用rvs方法使用估计参数生成样本。例如,假设x保存我的初始数据。

In [56]: x
Out[56]: 
array([ 0.366,  0.235,  0.286,  0.84 ,  0.073,  0.108,  0.156,  0.029,
        0.11 ,  0.122,  0.227,  0.148,  0.095,  0.233,  0.317,  0.027])

使用scipy.stats.expon使指数分布适合此数据。我假设我们对location参数为0的常见情况感兴趣,因此我在floc=0调用中使用fit

In [57]: from scipy.stats import expon

In [58]: loc, scale = expon.fit(x, floc=0)

In [59]: scale
Out[59]: 0.21076203455218898

现在使用这些参数生成随机样本。

In [60]: sample = expon.rvs(loc=0, scale=scale, size=8)

In [61]: sample
Out[61]: 
array([ 0.21576877,  0.23415911,  0.6547364 ,  0.44424148,  0.07870868,
        0.10415167,  0.12905163,  0.23428833])