language-agnostic - 从逻辑分布中生成样本

标签 language-agnostic statistics random random-sample

我正在研究一些统计代码并探索从随机分布创建样本的不同方法 - 从生成从 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/

相关文章:

algorithm - 组合:两个线程访问的变量

php - 是否有用于网络的高级语言?

r - R 中 SVM 的错误

matlab - 给定四分位数,我如何使用 MATLAB、matplotlib、gnuplot 或其他一些软件包绘制盒须?

swift - 快速重新滚动随机数

math - float 学有问题吗?

algorithm - 找到最大簇的最小值?

python - 线性回归——降低自由度

java - 在 Java 中获取一个 "for each"循环,每次都以不同的顺序运行

java - 转换日期中特定范围的随机数