从合适的分布中获取绘图

时间:2017-10-26 11:27:05

标签: python numpy scipy

我参考了Fitting empirical distribution to theoretical ones with Scipy (Python)?,并为我的示例数据生成了最合适的分布。我希望根据最佳拟合分布生成随机数。见下图。

enter image description here

但是,在https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.f.html#numpy.random.f中,只有3个参数,dfnum,dfden,size = None,我应该在哪里插入locscale。顺便说一句,最佳拟合分布的dnd和dfd是浮点数,并且在numpy.random中,它需要整数。

如果我在代码df_members['bd'] = df_members.bd.apply(lambda x: np.rint((np.random.f(dfnum=1441, dfden=19))) if x==-999 else x )中仅使用dnd和dfd,则会生成这样的值,这是错误的。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用scipy.stats模块生成f分布,并根据您使用f.rvs方法找到的参数询问其中的随机值,该方法接受四个参数加上大小(你想要的数量)。

from scipy.stats import f
import matplotlib.pyplot as plt

values = f.rvs(1441.41, 19.1, -0.24, 26.5, 100000)

values是一个100000长度的数组,具有来自给定分布的绘制。你可以看到如下

plt.hist(values, bins=25)
plt.show()

enter image description here