我提到了Fitting empirical distribution to theoretical ones with Scipy (Python)?并生成了最适合我的样本数据的分布。我希望根据最佳拟合分布生成随机数。参见下图。
但是,在 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.f.html#numpy.random.f ,只有3个参数,dfnum,dfden,size=None,我应该在哪里插入loc
和scale
。顺便说一句,最佳拟合分布中的 dnd 和 dfd 是 float ,而在 numpy.random 中,它需要整数。
如果我在代码中仅使用 dnd 和 dfd df_members['bd'] = df_members.bd.apply(lambda x: np.rint((np.random.f(dfnum=1441, dfden=19) ))) if x==-999 else x )
将会生成这样的值,这是 false。
最佳答案
您可以从 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()
关于python - 从拟合分布中抽取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953084/