risk.simulate()
Simulates marginals joined by a copula.
Usage
risk.simulate(
copula,
marginals,
n_sims,
seed,
keys=None,
dims=None,
)In simulation i, draws uniforms from copula with stream i of seed and applies each marginal’s quantile function.
Parameters
copula: (GaussianCopula, StudentTCopula or ArchimedeanCopula)marginals: list of Lognormal, Grid or Pareto-family severities-
One per copula dimension.
n_sims: intseed: intkeys: list of tuple = None-
One component key per marginal; defaults to
(0,), (1,), .... dims: list of str = ["component"]
Returns
PredictiveDistribution
Examples
>>> from prospicio.distributions import Lognormal
>>> from prospicio.risk import GaussianCopula, simulate
>>> c = GaussianCopula([[1.0, 0.4], [0.4, 1.0]])
>>> pd = simulate(c, [Lognormal.from_mean_cv(100.0, 0.2), Lognormal.from_mean_cv(50.0, 1.0)],
... 10_000, 42, keys=[("motor",), ("property",)], dims=["lob"])
>>> abs(pd.mean() - 150.0) < 3.0True