pub struct Pareto { /* private fields */ }Expand description
Pareto distribution Pareto(t, α): P(X > x) = (t/x)^α for x ≥ t,
and 1 below t. Also known as Pareto type I or single-parameter
Pareto; matches the R package Pareto (pPareto(x, t, alpha)).
With a truncation T > t it is the Pareto conditioned on X < T:
P(X > x) = ((t/x)^α − (t/T)^α) / (1 − (t/T)^α) for t ≤ x < T.
Layer integrals are in closed form for every α > 0, including the
logarithmic cases α = 1 (limited mean) and α = 2 (limited second
moment), which need no special handling: integrals of x^{k−α} are
evaluated as a^{k+1−α} · L · exprel((k + 1 − α) L) with
L = ln(b/a) and exprel(z) = (e^z − 1)/z.
use prospicio_prob::{Distribution, Pareto, Severity};
let p = Pareto::new(500.0, 2.0).unwrap();
// The R package's vignette example: layer 4000 xs 1000.
assert!((p.layer(4000.0, 1000.0) - 200.0).abs() < 1e-12);
assert!((p.mean() - 1000.0).abs() < 1e-12);Implementations§
Source§impl Pareto
impl Pareto
Sourcepub fn fit(t: f64, data: &LargeLosses, truncation: Option<f64>) -> Result<Self>
pub fn fit(t: f64, data: &LargeLosses, truncation: Option<f64>) -> Result<Self>
Maximum likelihood fit of the alpha of Pareto(t, α), optionally
truncated at truncation, to losses at or above t.
Each loss is conditioned on exceeding its reporting threshold
raised to t, so t itself matters only through that floor.
Untruncated, the estimate is in closed form,
α = Σ_uncensored w / Σ w ln(y / r). Truncated, the score is
solved by bisection and the estimate clamped to [1e-3, 1e3], as
in the R package Pareto (whose upper bound is 10).
Trait Implementations§
impl Copy for Pareto
Source§impl Distribution for Pareto
impl Distribution for Pareto
Source§fn quantile(&self, p: f64) -> Result<f64>
fn quantile(&self, p: f64) -> Result<f64>
t (1 − p)^(−1/α) untruncated; p = 1 gives +∞ (or the
truncation point).
Source§fn survival(&self, x: f64) -> f64
fn survival(&self, x: f64) -> f64
P(X > x). Representations with a direct form override the
default 1 - cdf(x), which loses all precision far in the tail.Source§fn sample(&self, rng: &mut StreamRng, n: usize) -> Vec<f64>
fn sample(&self, rng: &mut StreamRng, n: usize) -> Vec<f64>
n draws from stream rng, by inverse transform unless the family
overrides it (crate::Gamma draws by Marsaglia and Tsang). Read moreSource§fn is_parallel_safe(&self) -> bool
fn is_parallel_safe(&self) -> bool
crate::Custom
whose callbacks must stay on the calling thread (an R function), so
the parallel simulations run single-threaded when they meet one.Source§impl Severity for Pareto
impl Severity for Pareto
Source§fn layer_second_moment(&self, limit: f64, attachment: f64) -> f64
fn layer_second_moment(&self, limit: f64, attachment: f64) -> f64
2 ∫_a^b (x − a) S(x) dx with b = a + limit.
Source§fn stop_loss(&self, retention: f64) -> f64
fn stop_loss(&self, retention: f64) -> f64
E[max(X - retention, 0)].impl StructuralPartialEq for Pareto
Auto Trait Implementations§
impl Freeze for Pareto
impl RefUnwindSafe for Pareto
impl Send for Pareto
impl Sync for Pareto
impl Unpin for Pareto
impl UnsafeUnpin for Pareto
impl UnwindSafe for Pareto
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more