Assists with the construction of probability distributions built from expert elicited data for use in monte carlo simulations.
Until this is packaged for pip, copy
elicit_distibutions.py in your code. Then:
elicited is just a helper tool when using numpy and scipy, so you’ll need these too.
import numpy as np import scipy
See Occurance and Applications for examples of lognormal distributions in nature.
Expert: I have assets at risk that would generate a wide range of losses.
Elicitor: What is the most common value of these assets?
Expert: About $ 20K (
Elicitor: What’s the largest asset value you can imagine?
Expert: I suppose it could go as high as $2.5M (
Lognormal requires mean and standard deviation.
logN_mean, logN_stdv = elicitLogNormal(val_mod, val_max)
The 80/20 rule. See Occurance and Applications
Expert: The legal costs of an incident could be devastating.
Elicitor: How devastating are we talking?
Expert: Well, typically costs are zero (
val_min), but a black swan could be $100M (
Elicitor: So we can assume yoru minimum legal costs for an incident are zero, and your maximum costs are $100M?
b = elicitPareto(val_min, val_max) p = pareto(b, loc=val_min-1., scale=1.))
Expert: We have accounts that could be lost and result in losses.
Elicitor: What is the dollar value of these accounts?
Expert: About $500-$6000 (
Elicitor: What’s the most common account? (
Expert: Probably around $4500.
PERT_a, PERT_b = elicitPERT(val_min, val_mod, val_max) pert = beta(PERT_a, PERT_b, loc=val_min, scale=val_max-val_min)
This is done in numpy without assistance from elicitor. As a courtesy for those looking to use it, here’s an example.
Expert: We are concerned about lawsuits relatd to a breach.
Elicitor: Assuming a breach happens, how many litigants will there be?
Expert: One or a few. We could also see an Equifax-like situation. (
Elicitor: So most likely only a handful of litigants. What’s a nightmare situation?
Expert: I’d guess maybe 30 or more litigants? (
Elicitor: How likely would it be to have more than 30 litigants?
Expert: Very unlikely, most cases would only have a few, as I said.
Elicitor: Let’s give it a number. Is it one-in-a-thousand, or million cases?
Expert: I’d say one in a million cases. (
Zs = elicitZipf(nMin, nMax, pMax, report=True) pd = zipf(Zs, nMin-1)