【问题标题】:Generating Pareto observations using the inverse cumulative distribution使用逆累积分布生成 Pareto 观测值
【发布时间】:2018-03-26 13:43:09
【问题描述】:
我目前正在处理一项任务,在该任务中,您必须使用帕累托分布的逆累积函数生成帕累托观测值。我以前从未设法真正反转统计函数,而且我似乎无法正确地做到这一点。我理解公式 X=F^1(U),其中 X 是帕累托分布随机变量,U 是标准均匀随机变量,对于生成观察很重要,但我不知道如何计算反函数。
我希望对如何解决这个问题有所了解。
【问题讨论】:
标签:
distribution
inverse
uniform-distribution
【解决方案1】:
- 写下 F(X) 的公式。
- 在公式右侧写上“= U”。
- 使用代数将方程左侧的单个值 X 分离出来,即求解 X 作为 U 的函数。
得到的方程是反演公式。现在通过插入几个 U 值进行“健全性检查”:0 获得最小值,1 获得最大值,0.5 获得中值。
示例:A Uniform(a, b) 对于 a ≤ x ≤ b 具有 CDF F(x) = (x - a) / (b - a),并且具有最小值 a、最大值 b 和中值 (a + b) / 2。
- F(X) = (X - a) / (b - a)
- (X - a) / (b - a) = U
- X - a = (b - a) U
- X = a + (b - a) U
测试用例:
- U = 0 => a + (b - a) 0 = a
- U = 1 => a + (b - a) 1 = a + b - a = b
- U = 0.5 => a + (b - a) / 2 = (2a + b - a) / 2 = (a + b) / 2
实现(在 Ruby 中,因为您没有指定语言):
def uniform(a, b)
return a + (b - a) * rand # rand with no arguments returns a U(0,1)
end