我想生成一个包含 n 个严格正值的列表,以便该列表具有预定的均值和标准差(可以接近/不精确)。我正在使用均匀分布的方程来计算期望和方差并求解“a”和“b”,但是方程组(对于特定的均值和标准偏差。我想要)没有 a、b >= 0 的解. 我想知道是否有一种即插即用的方法可以在任何编程语言中做到这一点,但希望在 Python 中。谢谢!
Ex:生成 84 个正值的列表,均值 ~= 60/84 = 0.71,std.dev。 ~= 1.7
最佳答案
回答
使用NumPy从具有尺度参数 theta = 方差/均值和形状参数 k = 均值/theta 的 Gamma 分布生成样本。
例子
>> import numpy
>> mu = 0.71
>> var = 1.7**2
>> theta = var / mean
>> k = mu / theta
>> samples = numpy.random.gamma(k, theta, 1000)
>> numpy.mean(samples)
0.71622189354608201
>> numpy.std(samples)
1.7865898752966483
评论
您提供的约束未指定分布。您针对 another answer 发表的一些评论作为问题的一部分会有所帮助。特别是,您似乎正在尝试对队列中的到达进行建模,例如泊松过程。正如您所指出的,泊松分布的均值和方差是相同的,即 lambda 参数。但是,将 lambda 本身视为一个随机变量。泊松分布先于 Gamma 分布的共轭。
当形状参数 k > 0 和尺度参数 theta > 0 时,gamma distribution均值 = k * theta 和方差 = k * theta^2。因此,theta 是方差/均值 > 0,k 是均值/theta > 0。由于 gamma 分布有正支持,这很容易回答你的问题。
关于algorithm - 生成 n 个(严格为正)值的列表,使得该列表具有预定的均值 x 和标准差。开发者是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159423/