首页 > 解决方案 > 在 SciPy (Python) 中从拟合 PDF 生成随机样本

问题描述

给定使用 scipy.stats 的数据集的拟合分布,类似于:

data = fetch_data(file)
x = np.linspace(0, 100, 1000)

param = scipy.stats.norm.fit(data)
fit_pdf = scipy.stats.norm.pdf(x, param[0], param[1])

从该拟合数据中生成 N=1000 个随机样本的最佳方法是什么?是否可以在给定 PDF 中的任何值数组的情况下生成随机样本?

标签: pythonscipystatistics

解决方案


生成随机样本的最佳方法是:

data = fetch_data(file)
x = np.linspace(0, 100, 1000)

param = scipy.stats.norm.fit(data)
random_samples = scipy.stats.norm.rvs(param[0], param[1], size=1000)

要使用给定的 pdf 作为数组生成随机样本,您可以使用以下命令:

fit_pdf = scipy.stats.norm.pdf(x, param[0], param[1])

samples = np.random.choice(x, size=1000, p=fit_pdf/np.sum(fit_pdf)) 

推荐阅读