Multiple Risk
Determine non-exceedence probabilities for a multiple risks.
Import libraries
import sys
import os
import pandas as pd
from darpi.quantitative.plots import plot_histogram_and_cdf, plot_ppf_curve
from darpi.quantitative.probability import (
get_histogram_data,
get_samples,
get_triangular_distribution,
get_empirical_cdf,
get_empirical_ppf,
sum_samples,
)
from darpi.qualitative.plots import plot_empty_heat_map, add_scatter_to_heat_map
Generate probability of non-exceedance charts for multiple risks
# Identify some risks
risks = {
"Risk 1": {"costs": (1000, 2000, 5000), "probability": 0.6},
"Risk 2": {"costs": (2000, 4000, 8000), "probability": 0.8},
"Risk 3": {"costs": (2800, 4000, 10000), "probability": 0.5},
}
# Get samples for each risk
for risk, details in risks.items():
a, c, b = details["costs"]
risk_probability = details["probability"]
distribution = get_triangular_distribution(a, b, c)
data = get_samples(distribution=distribution, risk_probability=risk_probability)
risks[risk]["samples"] = data
# Get summed data
data = sum_samples([risk["samples"] for risk in risks.values()])
# Get plotting data
hist_data = get_histogram_data(data)
cdf_data = get_empirical_cdf(data)
ppf_data = get_empirical_ppf(data)
# Make some plots
fig = plot_histogram_and_cdf(hist_data=hist_data, cdf_data=cdf_data)
fig.write_image("..images/multiple-risk-histogram_cdf.png")
fig = plot_ppf_curve(data=ppf_data)
fig.write_image("..images/multiple-risk-ppf.png")

Generate probability of non-exceedance table for multiple risks
| cost | p | |
|---|---|---|
| 0 | 0.00 | 0.00 |
| 1 | 0.00 | 0.01 |
| 2 | 0.00 | 0.02 |
| 3 | 0.00 | 0.03 |
| 4 | 0.00 | 0.04 |
| ... | ... | ... |
| 96 | 15155.18 | 0.96 |
| 97 | 15579.32 | 0.97 |
| 98 | 16108.59 | 0.98 |
| 99 | 16887.59 | 0.99 |
| 100 | 21930.77 | 1.00 |
101 rows × 2 columns