使用百分位数定义分布

Define distribution using percentile points

在@Risk 和Crystal Ball 中,我们可以使用百分位数数据来定义概率分布。例如,我们可以通过输入 3 个数据点来定义对数正态分布,例如P10、P50 和 P90 估计值。然后该软件将与分发的 PDF 一起出现。这实际上是如何完成的? Matlab 中的示例,Excel 或 Mathematica 都可以。

在文档中,没有明确说明软件是如何工作的。

从均值 = 1 和标准差 = 0.5 的正态分布导出的对数正态分布开始,计算第 10、50 和 90 个百分位数。

μ = 1;
σ = 0.5;

p[n_] := Quantile[LogNormalDistribution[μ, σ], n]

p10 = p[0.1]

1.43222

p50 = p[0.5]

2.71828

p90 = p[0.9]

5.15917

Show[
  Plot[PDF[LogNormalDistribution[μ, σ], x], {x, 0, 12}],
  Plot[PDF[LogNormalDistribution[μ, σ], x], {x, 0, #},
    PlotStyle -> None, Filling -> Axis] & /@ {p10, p50, p90},
  Epilog -> MapThread[Inset[#1, {#2, 0.025}] &,
   {{"p10", "p50", "p90"}, {p10, p50, p90}}]]

现在根据 OP 的问题要求仅从百分位数反算 μσ

Clear[μ, σ]

sol = Quiet@First@Solve[{
     Quantile[LogNormalDistribution[μ, σ], 0.1] == p10,
     Quantile[LogNormalDistribution[μ, σ], 0.5] == p50, 
     Quantile[LogNormalDistribution[μ, σ], 0.9] == p90}, {μ, σ}]

{μ -> 1., σ -> 0.5}

对数正态均值和方差:

Mean[LogNormalDistribution[μ, σ]] /. sol

3.08022

Variance[LogNormalDistribution[μ, σ]] /. sol

2.69476

检查符号计算和定义以理解计算。