gpt4 book ai didi

python-3.x - 基于数组生成正分布

转载 作者:行者123 更新时间:2023-12-05 07:20:22 24 4
gpt4 key购买 nike

我有一个数据数组,例如:

[1000,800,700,650,630,500,370,350,310,250,210,180,150,100,80,50,30,20,15,12,10,8,6,3]

根据这些数据,我想生成符合相同分布的随机数。

我可以使用如下代码生成一个随机数:

dist = scipy.stats.gaussian_kde(data)
randomVar = np.floor(dist.resample()[0])

这会导致生成包含负数的随机数,我相信我可以在不改变曲线其余部分的整体形状的情况下相当容易地丢弃它(我只是生成足够的重采样,在丢弃负数后我仍然有足够的目的).

但是,因为原始数据只是正值 - 并且堆积在该边界上,所以我最终得到一个 kde,它在达到零之前的一小段距离内最高,但是当它接近零时从那里急剧下降;并且 KDE 中的向下勾号阻止我生成适当的数字。

Example picture of downward tick

我可以将带宽设置得更低,以获得更尖锐的角,更接近于零,但由于原始数据的数量较少,它最终会在其他地方出现锯齿状。不幸的是,更高的带宽在移除向下的刻度之前隐藏了曲线的形状。

最佳答案

正如希尔伯特饮酒问题的评论中广泛建议的那样,真正的解决方案是找到适合参数的更好分布。在我的例子中,卡方符合曲线的形状,而且它只取正值。

然而,在评论中,Stelios 提出了使用 scipy.stats.rv_histogram 的好建议,我使用了一段时间并对此感到满意。这使我能够准确地将曲线拟合到数据,尽管它有两个问题:

  • 1) 在没有数据的情况下假定为零值。 IE。如果你设置设置太接近数据,然后在你的差距数据它将降为零而不是插值。
  • 2) 作为扩展对于第 1 点,它不会推断超出种子数据的最大值,并且最小值(这些数据范围实际上是巨大的差距,所以一切最终归零)。

关于python-3.x - 基于数组生成正分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com