我有两组样本,一组以指数方式分布,第二组是Bernoli(我使用scipy.stats.expon和scipy.stats.bernoulli来拟合我的数据。)
根据这些抽样,我想创建两个随机生成器,使我能够从两个发行版中抽取数字。
有什么替代方法呢?
如何找到创建随机生成器的正确参数?
答案 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])