用SciPy(Python)从拟合PDF生成随机样本

3

使用类似于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值数组的情况下生成随机样本?
1个回答

5
最佳生成随机样本的方法是:
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)) 

有道理,我会尝试一下。有没有办法使用由pdf方法生成的数组来实现呢? - Thingable
我刚刚更新了我的答案。请注意,这只会生成定义了概率密度函数的x值。这样足够吗? - Diego Palacios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接