python - 为真实数据的分布生成随机数?

标签 python numpy statistics scipy probability-density

我有一组真实数据,我想用这些数据找到一个概率分布,然后根据它们的 pdf 使用它们的属性生成一些随机点。我的数据集示例如下:

#Mag Weight
21.9786 3.6782
24.0305 6.1120
21.9544 4.2225
23.9383 5.1375
23.9352 4.6499
23.0261 5.1355
23.8682 5.9932
24.8052 4.1765
22.8976 5.1901
23.9679 4.3190
25.3362 4.1519
24.9079 4.2090
23.9851 5.1951
22.2094 5.1570
22.3452 5.6159
24.0953 6.2697
24.3901 6.9299
24.1789 4.0222
24.2648 4.4997
25.3931 3.3920
25.8406 3.9587
23.1427 6.9398
21.2985 7.7582
25.4807 3.1112
25.1935 5.0913
25.2136 4.0578
24.6990 3.9899
23.5299 4.6788
24.0880 7.0576
24.7931 5.7088
25.1860 3.4825
24.4757 5.8500
24.1398 4.9842
23.4947 4.4730
20.9806 5.2717
25.9470 3.4706
25.0324 3.3879
24.7186 3.8443
24.3350 4.9140
24.6395 5.0757
23.9181 4.9951
24.3599 4.1125
24.1766 5.4360
24.8378 4.9121
24.7362 4.4237
24.4119 6.1648
23.8215 5.9184
21.5394 5.1542
24.0081 4.2308
24.5665 4.6922
23.5827 5.4992
23.3876 6.3692
25.6872 4.5055
23.6629 5.4416
24.4821 4.7922
22.7522 5.9513
24.0640 5.8963
24.0361 5.6406
24.8687 4.5699
24.8795 4.3198
24.3486 4.5305
21.0720 9.5246
25.2960 3.0828
23.8204 5.8605
23.3732 5.1161
25.5097 2.9010
24.9206 4.0999
24.4140 4.9073
22.7495 4.5059
24.3394 3.5061
22.0560 5.5763
25.4404 5.4916
25.4795 4.4089
24.1772 3.8626
23.6042 4.7476
23.3537 6.4804
23.6842 4.3220
24.1895 3.6072
24.0328 4.3273
23.0243 5.6789
25.7042 4.4493
22.1983 6.1868
22.3661 5.9132
20.9426 4.8079
20.3806 10.1128
25.0105 4.4296
23.6648 6.6482
25.2780 4.4933
24.6870 4.4836
25.4565 4.0990
25.0415 3.9384
24.6098 4.6057
24.7796 4.2042

我该怎么做?我的第一个尝试是将多项式拟合到分箱数据并找到每个幅度分箱中权重的概率分布,但我认为这可能是一种更聪明的方法。例如,使用 scipy.stats.rv_continuous 从给定的分布中采样数据,但我不知道它是如何工作的,而且没有足够的例子。

更新: 由于我收到了很多关于使用 KDE 的评论,所以我使用了 scipy.stats.gaussian_kde 并得到了以下结果。 enter image description here

我想知道它是否是一个很好的概率分布来表示我的数据的属性?首先,我如何测试它,其次,是否有可能使用 scipy.stats 来适应多个 gaussian kde

最佳答案

(1) 如果您知道从中抽取这些数据的分布,则将该分布拟合到数据(即,通过最大似然或其他方法调整参数),然后对其进行抽样。

(2) 对于更接近经验的方法,随机选择一个数据(以相同的概率),然后假设它是一个小高斯凸起的中心,并从那个凸起中采样。这相当于构建核密度估计并从中抽样。您必须为凸起选择一个标准偏差。

(3) 对于完全基于经验的方法,随机选择一个数据(概率相等)。这相当于假设经验分布与实际分布相同。

关于python - 为真实数据的分布生成随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208536/

相关文章:

python - 使用 numpy.linalg.norm() 函数查找数组的最近点

Java 原始音频输出

python - 如何使PyCharm从setup.cfg中获取由PyScaffold创建的测试配置?

python - 正则表达式:AttributeError: 'NoneType' 对象没有属性 'groups'

python - 如何在 python 中将 OpenCV 图像传递给 Tesseract?

python - 如何处理邻接矩阵的内存错误?

python - R runif 与 Python stats.uniform.ppf(不同的结果)

python - 如何对所有变量使用describe() by group?

python - python 中分布的正态性检验

python - Django-admin.py 在我的共享主机环境中产生错误