【问题标题】:How to simulate new values without normality assumption?如何在没有正态性假设的情况下模拟新值?
【发布时间】:2022-11-19 19:28:05
【问题描述】:

我有以下列表:

series=[0.6, 4.1, 0.6, 6.7, 9.2, 7.6, 5.5, 0.9, 3.8, 8.4]

series 的 mean 是 4.74 而它的 np.std 等于:3.101

我想从 series 生成 1000 个观察结果,所以我使用了以下方法:

>>> series_1000=np.random.normal(4.74, 3.101, size=(1000))
>>> series_1000
>>> array([ 3.43395217,  6.60462489,  5.27316166,  4.20429521,  4.76772334,
        8.04441319, -0.6967243 ,  0.53378519,  2.1736758 ,  9.96333279....

问题

上面的方法看起来不错,但是它是在series 是normally 分布的假设下工作的。

目标

我的目标是找到一种在不对原始 series 做任何假设的情况下模拟值的方法。

您身边的任何帮助将不胜感激。

【问题讨论】:

    标签: python numpy random normal-distribution montecarlo


    【解决方案1】:

    如果统一分布更适合您的需要,您可以使用:

    (np.random.uniform(-1, 1, size=1000) * 3.101) + 4.74
    

    或者在一个方便的函数中:

    def generate_values(mean, std, size=1000):
        return(np.random.uniform(-1, 1, size=size) * std) + mean
    

    【讨论】:

    • 谢谢@Edu,我认为这是在series 均匀分布的假设下工作的,尽管我在没有任何假设的情况下搜索了一种方法
    • 您不能从未定义的分布中抽取数字。然而,均匀分布是偏差较小的选择,所以如果您对原始分布一无所知,我会选择它
    猜你喜欢
    • 2017-12-11
    • 2022-01-17
    • 2017-08-26
    • 2014-01-07
    • 1970-01-01
    • 2017-02-24
    • 2012-03-21
    • 2021-03-31
    • 2011-08-06
    相关资源
    最近更新 更多