我正在研究一些统计代码并探索从随机分布创建样本的不同方法 - 从生成从 0 到 1 的统一浮点值的随机数生成器开始
我知道可以从 normal distribution 生成近似样本通过将足够多的独立同分布均匀随机变量加在一起(通过 central limit theorem)。
是否可以做类似的事情来从 logistic distribution 创建样本? ?我假设要添加的样本需要以某种方式加权或相关,以避免以正常结束。
附言我也知道可能有更有效的方法来生成随机样本,我问这个问题是因为我更感兴趣的是了解这样的生成器如何工作而不是效率......
最佳答案
逻辑分布的逆不难找到,因此您可以使用 Inverse transform sampling .基本算法是:
for each random variate x ~ logistic
generate a random variate y ~ Uniform(0, 1)
x := F^-1 (y)
其中 F^-1 是逻辑分布或所需分布的逆 CDF。大多数编程语言都允许您通过某种 rand 函数生成介于 0 和 1 之间的统一变量。
这是一些从逻辑分布中生成 1000 个随机变量的 Python 代码:
from random import random
import math
import pylab
loc, scale = 0, 1
randvars = []
for i in range(1000):
x = random()
y = loc + scale * math.log(x / (1-x))
randvars.append(y)
pylab.hist(randvars)
关于language-agnostic - 从逻辑分布中生成样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955877/