Struct DensitySurvival
pub struct DensitySurvival {
reference_date: NaiveDate,
dates: Vec<NaiveDate>,
taus: Vec<f64>,
densities: Vec<f64>,
flat_first: bool,
day_count: DayCountFraction,
}Expand description
A survival curve stated by its default density, f(t) = −dS/dt.
The density is linear between nodes, the first node at the reference
date, and flat past the last; S(t) = 1 − ∫₀ᵗ f is integrated exactly
(the trapezoid of a linear segment), and the hazard is f/S. The
densities are the free parameters, and S is affine in them, so the
adjoint is exact. A density flat past the last node keeps S falling
linearly; a query where it would reach zero is refused.
Fields§
§reference_date: NaiveDate§dates: Vec<NaiveDate>§taus: Vec<f64>§densities: Vec<f64>The free parameters: the default density at each node — or, for a flat-first curve, at each node after the reference date.
flat_first: boolWhether the reference node reads the first pillar’s density rather than holding its own, so that a calibrated curve carries one free parameter per rung.
day_count: DayCountFractionImplementations§
§impl DensitySurvival
impl DensitySurvival
pub fn new(
reference_date: NaiveDate,
nodes: &[(NaiveDate, f64)],
day_count: DayCountFraction,
) -> Result<Self, CurveError>
pub fn new( reference_date: NaiveDate, nodes: &[(NaiveDate, f64)], day_count: DayCountFraction, ) -> Result<Self, CurveError>
A curve from (date, density) nodes, the first on the reference
date.
§Errors
CurveError::Malformed if there are fewer than two nodes, the first
is not on the reference date, the dates do not strictly increase, a
density is negative or not finite, or the densities exhaust survival
by the last node.
pub(crate) fn flat_first(
reference_date: NaiveDate,
pillars: &[(NaiveDate, f64)],
day_count: DayCountFraction,
) -> Result<Self, CurveError>
pub(crate) fn flat_first( reference_date: NaiveDate, pillars: &[(NaiveDate, f64)], day_count: DayCountFraction, ) -> Result<Self, CurveError>
fn check_survival(self) -> Result<Self, CurveError>
fn check_survival(self) -> Result<Self, CurveError>
The curve, or the refusal of densities that exhaust survival by the last node.
pub fn parameter_dates(&self) -> &[NaiveDate]
pub fn parameter_dates(&self) -> &[NaiveDate]
The date each free parameter is the density of — every node’s, or, for a flat-first curve, every node’s after the reference date, the first of them also carrying the reference date’s.
pub(crate) fn parameter_taus(&self) -> &[f64]
pub(crate) fn parameter_taus(&self) -> &[f64]
The year fraction of each parameter’s date, as
parameter_dates.
pub fn pillar_dates(&self) -> &[NaiveDate]
pub fn pillar_dates(&self) -> &[NaiveDate]
The node dates, the reference date first.
pub fn parameters(&self) -> &[f64]
pub fn parameters(&self) -> &[f64]
The free parameters — the density at each node, or at each node after the reference date for a flat-first curve.
pub fn day_count(&self) -> DayCountFraction
pub fn day_count(&self) -> DayCountFraction
The convention the nodes are dated under.
pub fn view<R: Scalar>(&self) -> DensitySurvivalView<'_, R>
pub fn view<R: Scalar>(&self) -> DensitySurvivalView<'_, R>
This curve lifted into mode R.
pub(crate) fn view_with_slice<'a, R: Scalar>(
&'a self,
rest: &mut &'a [R],
) -> DensitySurvivalView<'a, R>
pub(crate) fn view_with_slice<'a, R: Scalar>( &'a self, rest: &mut &'a [R], ) -> DensitySurvivalView<'a, R>
One step of a substituted walk. See
take_params.
pub(crate) fn view_seeding<R: Scalar + Seedable>(
&self,
seed: &mut Option<usize>,
) -> DensitySurvivalView<'_, R>
pub(crate) fn view_seeding<R: Scalar + Seedable>( &self, seed: &mut Option<usize>, ) -> DensitySurvivalView<'_, R>
One step of the seeded walk. See
take_seed.
Trait Implementations§
§impl Clone for DensitySurvival
impl Clone for DensitySurvival
§fn clone(&self) -> DensitySurvival
fn clone(&self) -> DensitySurvival
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more