mod anova;
mod mean;
mod regression;
mod space;
mod spaces;
pub use anova::{frechet_anova, frechet_anova_space};
pub use mean::{frechet_mean, frechet_variance};
pub use regression::{
frechet_global_reg, frechet_global_reg_space, frechet_local_reg, frechet_local_reg_space,
};
pub use space::{wasserstein2_distance, MetricSpace, WassersteinDensitySpace};
pub use spaces::{
CorrelationMatrixSpace, NetworkSpace, PointProcessSpace, SpdMatrixSpace, SpdMetric,
SphericalSpace,
};
use crate::matrix::FdMatrix;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FrechetGlobalRegResult {
pub predicted: FdMatrix,
pub xout: FdMatrix,
pub x_bar: Vec<f64>,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FrechetLocalRegResult {
pub predicted: FdMatrix,
pub xout: FdMatrix,
pub bandwidth: f64,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct FrechetAnovaResult {
pub statistic: f64,
pub p_value_asymptotic: f64,
pub p_value_permutation: f64,
pub n_perm: usize,
pub group_frechet_variances: Vec<f64>,
pub pooled_frechet_variance: f64,
pub fn_statistic: f64,
pub un_statistic: f64,
pub group_labels: Vec<usize>,
}