Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Define distribution using percentile points

In @Risk and Crystal Ball, we are allowed to define the probability distribution using percentile data. For example, we can define a log normal distribution just by inputting 3 data points, e.g. P10, P50 and P90 estimates. Then the software will come out with the PDF of the distribution. How is this actually done? Example in Matlab, Excel or Mathematica would be fine.

In the documentation, is not clearly stated how the software are doing it.

like image 371
iFikr Avatar asked Jun 21 '26 04:06

iFikr


1 Answers

Starting with a log-normal distribution derived from a normal distribution with mean = 1 and standard deviation = 0.5, calculating the 10th, 50th and 90th percentiles.

μ = 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}}]]

enter image description here

Now back-calculating μ and σ from only the percentiles as the OP's question requires.

Clear[μ, σ]

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

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

Log-normal mean and variance:

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

3.08022

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

2.69476

Examining symbolic evaluation and definitions to understand the calculations.

enter image description here

like image 55
Chris Degnen Avatar answered Jun 24 '26 19:06

Chris Degnen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!