pub trait FittableCopula: Copula {
type Parameters: Clone + Debug;
// Required methods
fn fit(&mut self, pseudo_obs: &DMatrix<f64>) -> Result<Self::Parameters>;
fn log_likelihood(&self, pseudo_obs: &DMatrix<f64>) -> Result<f64>;
fn parameters(&self) -> Self::Parameters;
fn set_parameters(&mut self, params: Self::Parameters) -> Result<()>;
// Provided methods
fn fit_moments(
&mut self,
pseudo_obs: &DMatrix<f64>,
) -> Result<Self::Parameters> { ... }
fn standard_errors(
&self,
_pseudo_obs: &DMatrix<f64>,
) -> Result<Self::Parameters> { ... }
fn confidence_intervals(
&self,
_pseudo_obs: &DMatrix<f64>,
_confidence_level: f64,
) -> Result<(Self::Parameters, Self::Parameters)> { ... }
}estimation only.Expand description
Trait for copulas that can be fitted to data.
This trait extends the basic Copula trait with parameter estimation
capabilities. Copulas implementing this trait can learn their parameters
from observed data.
§Examples
use copula_core::{ClaytonCopula, Copula, FittableCopula, GaussianCopula, to_pseudo_observations};
use rand::{rngs::StdRng, SeedableRng};
// Simulate dependent data, then fit a Gaussian copula to it.
let mut rng = StdRng::seed_from_u64(7);
let data = ClaytonCopula::new(2.0)?.sample(500, &mut rng)?;
let pseudo_obs = to_pseudo_observations(&data)?;
let mut copula = GaussianCopula::new_identity(2)?;
let params = copula.fit(&pseudo_obs)?;
println!("Fitted parameters: {:?}", params);Required Associated Types§
Sourcetype Parameters: Clone + Debug
type Parameters: Clone + Debug
Type representing the copula’s parameters.
This could be a single value (for one-parameter families like Clayton), a matrix (for Gaussian copulas), or a more complex structure.
Required Methods§
Sourcefn fit(&mut self, pseudo_obs: &DMatrix<f64>) -> Result<Self::Parameters>
fn fit(&mut self, pseudo_obs: &DMatrix<f64>) -> Result<Self::Parameters>
Fit copula parameters to pseudo-observations using maximum likelihood estimation.
The input data should be transformed to pseudo-observations (uniform margins)
before fitting. Use crate::to_pseudo_observations for this transformation.
§Arguments
pseudo_obs- Matrix of pseudo-observations where each row is an observation and each column is a variable. All values should be in (0,1).
§Returns
The estimated parameters.
§Errors
Returns CopulaError::OptimizationError if the optimization fails to converge.
Returns CopulaError::DataError if the data is invalid.
Sourcefn parameters(&self) -> Self::Parameters
fn parameters(&self) -> Self::Parameters
Get current parameters of the copula.
Sourcefn set_parameters(&mut self, params: Self::Parameters) -> Result<()>
fn set_parameters(&mut self, params: Self::Parameters) -> Result<()>
Set parameters of the copula.
§Arguments
params- New parameters to set
§Errors
Returns CopulaError::InvalidParameter if parameters are invalid.
Provided Methods§
Sourcefn fit_moments(&mut self, pseudo_obs: &DMatrix<f64>) -> Result<Self::Parameters>
fn fit_moments(&mut self, pseudo_obs: &DMatrix<f64>) -> Result<Self::Parameters>
Sourcefn standard_errors(
&self,
_pseudo_obs: &DMatrix<f64>,
) -> Result<Self::Parameters>
fn standard_errors( &self, _pseudo_obs: &DMatrix<f64>, ) -> Result<Self::Parameters>
Sourcefn confidence_intervals(
&self,
_pseudo_obs: &DMatrix<f64>,
_confidence_level: f64,
) -> Result<(Self::Parameters, Self::Parameters)>
fn confidence_intervals( &self, _pseudo_obs: &DMatrix<f64>, _confidence_level: f64, ) -> Result<(Self::Parameters, Self::Parameters)>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".