【问题标题】:Generating random samples from fit PDF in SciPy (Python)在 SciPy (Python) 中从拟合 PDF 生成随机样本
【发布时间】:2019-12-12 03:56:40
【问题描述】:

使用 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 中的任何值数组的情况下生成随机样本?

【问题讨论】:

    标签: python scipy statistics


    【解决方案1】:

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

    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方法生成的数组呢?
    • 我刚刚更新了我的答案。请注意,这只会生成定义 pdf 的 x 值。够了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2019-09-19
    相关资源
    最近更新 更多