根据概率分布生成随机变量

乐事

我已经从python数据集中提取了一些变量,我想从我的分布中生成更大的数据集。问题是我试图在保持相似行为的同时为新数据集引入一些可变性。这是我提取的数据的一个示例,其中包含400个观察值:

Value    Observation Count     Ratio of Entries
1        352                    0.88
2        28                     0.07
3        8                      0.02
4        4                      0.01
7        4                      0.01
13       4                      0.01

现在,我正在尝试使用此信息来生成具有2,000个观测值的相似数据集。我知道numpy.random.choicerandom.choice函数,但是我不想使用完全相同的发行版。相反,我想根据分布生成随机变量(值列),但具有更大的可变性。我想要更大的数据集的示例:

Value         Observation Count        Ratio of Entries
1             1763                     0.8815
2             151                      0.0755
3             32                       0.0160
4             19                       0.0095
5             10                       0.0050
6             8                        0.0040
7             2                        0.0010
8             4                        0.0020
9             2                        0.0010
10            3                        0.0015
11            1                        0.0005
12            1                        0.0005
13            1                        0.0005
14            2                        0.0010
15            1                        0.0005

因此,如果我用指数衰减函数拟合原始数据,则可以估算新分布,但是,我对连续变量不感兴趣。我该如何解决这个问题,并且有一种与我想做的事情相关的特定方法或数学方法吗?

疯狂物理学家

听起来您想基于第二张表中所述的PDF生成数据。PDF就像

0 for x <= B
A*exp(-A*(x-B)) for x > B

A定义分布的宽度,该宽度将始终归一化为1。B水平偏移量,在您的情况下为零。您可以通过与合并将其设为整数分布ceil

归一化衰减指数的CDF为1 - exp(-A*(x-B))通常,进行自定义分发的一种简单方法是生成统一编号并通过CDF映射它们。

幸运的是,您不必这样做,因为它scipy.stats.expon已经提供了您要寻找的实现。您所要做的就是将最后一列中的数据拟合为AB显然为零)。您可以轻松地做到这一点curve_fit请记住,它A映射为1.0/scalescipy PDF语言。

这是一些示例代码。我在这里通过计算目标函数从n-1n整数输入的整数,并在进行拟合时为您考虑了合并,从而增加了一层复杂性

import numpy as np
from scipy.optimize import curve_fit
from scipy.stats import expon

def model(x, a):
    return np.exp(-a * (x - 1)) - exp(-a * x)
    #Alternnative:
    # return -np.diff(np.exp(-a * np.concatenate(([x[0] - 1], x))))

x = np.arange(1, 16)
p = np.array([0.8815, 0.0755, ..., 0.0010, 0.0005])
a = curve_fit(model, x, p, 0.01)
samples = np.ceil(expon.rvs(scale=1/a, size=2000)).astype(int)
samples[samples == 0] = 1
data = np.bincount(samples)[1:]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从正态分布中选择的随机变量的出现概率

来自分类Dev

使用逆采样从分布函数生成随机变量

来自分类Dev

生成对数正态分布的随机变量

来自分类Dev

如何根据数据类型生成随机变量?

来自分类Dev

如何从不同大小的概率分布中采样随机变量

来自分类Dev

从密度函数生成随机变量

来自分类Dev

从密度函数生成随机变量

来自分类Dev

递归生成指数随机变量

来自分类Dev

嵌套for循环以生成R中具有不同概率的随机变量

来自分类Dev

给定变量的均匀分布,请使用随机变量函数绘制概率密度函数MATLAB

来自分类Dev

带范围的高斯随机变量的寻找概率

来自分类Dev

带范围的高斯随机变量的寻找概率

来自分类Dev

如何在python中生成独立的均匀分布(iid)随机变量

来自分类Dev

用Matlab创建均匀分布的随机变量

来自分类Dev

三角分布随机变量

来自分类Dev

根据TensorFlow概率中的另一个随机变量从张量中选择一个法线

来自分类Dev

Nginx随机变量

来自分类Dev

如何使用dplyr生成列相关的随机变量

来自分类Dev

使用数学/兰德在golang中生成随机变量

来自分类Dev

如何生成随机变量或类名并稍后使用?

来自分类Dev

R使用分布生成随机变量,但具有许多不同的维度和参数值

来自分类Dev

如何计算scipy中的泊松随机变量概率?

来自分类Dev

当参数本身是随机变量时,绘制正态分布

来自分类Dev

计算对数正态分布随机变量的预期收益

来自分类Dev

模拟R中正态分布随机变量的平均值

来自分类Dev

Java指向随机变量

来自分类Dev

在Ruby中同步随机变量

来自分类Dev

在列表中选择随机变量

来自分类Dev

Jmeter-随机变量集

Related 相关文章

热门标签

归档