use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatisticalTestResult {
pub test_statistic: f64,
pub p_value: f64,
pub degrees_of_freedom: Option<usize>,
pub test_type: String,
pub is_significant: bool,
pub alpha: f64,
pub effect_size: Option<f64>,
pub confidence_interval: Option<(f64, f64)>,
pub interpretation: String,
pub confidence_level: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DescriptiveStats {
pub mean: f64,
pub variance: f64,
pub std_dev: f64,
pub min: f64,
pub max: f64,
pub n: usize,
pub median: f64,
pub q1: f64,
pub q3: f64,
pub skewness: f64,
pub kurtosis: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DistributionParams {
pub distribution_type: DistributionType,
pub parameters: Vec<f64>,
pub goodness_of_fit: Option<GoodnessOfFit>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DistributionType {
Normal,
StudentT,
ChiSquared,
F,
Beta,
Gamma,
Uniform,
Exponential,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GoodnessOfFit {
pub ks_statistic: f64,
pub ks_p_value: f64,
pub ad_statistic: f64,
pub log_likelihood: f64,
pub aic: f64,
pub bic: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HypothesisTestConfig {
pub alpha: f64,
pub test_type: TestType,
pub alternative: Alternative,
pub continuity_correction: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TestType {
OneSampleT,
TwoSampleT,
PairedT,
WelchT,
ChiSquared,
FisherExact,
MannWhitneyU,
WilcoxonSignedRank,
KruskalWallis,
Anova,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Alternative {
TwoSided,
Less,
Greater,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum MultipleComparisonCorrection {
None,
Bonferroni,
BenjaminiHochberg,
HolmBonferroni,
Sidak,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BootstrapConfig {
pub n_bootstrap: usize,
pub confidence_level: f64,
pub method: BootstrapMethod,
pub seed: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BootstrapMethod {
Percentile,
BCA,
Student,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegressionResult {
pub coefficients: Vec<f64>,
pub r_squared: f64,
pub adjusted_r_squared: f64,
pub standard_errors: Vec<f64>,
pub t_statistics: Vec<f64>,
pub p_values: Vec<f64>,
pub residual_standard_error: f64,
pub f_statistic: f64,
pub f_p_value: f64,
pub degrees_of_freedom: (usize, usize),
pub slope: f64,
pub intercept: f64,
pub p_value: f64,
pub standard_error: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ABTestConfig {
pub sample_size_a: usize,
pub sample_size_b: usize,
pub effect_size: f64,
pub alpha: f64,
pub power: f64,
pub two_tailed: bool,
pub expected_effect_size: f64,
pub minimum_detectable_difference: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PowerAnalysisResult {
pub achieved_power: f64,
pub effect_size: f64,
pub sample_size: usize,
pub alpha: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MultipleComparisonResult {
pub adjusted_p_values: Vec<f32>,
pub original_p_values: Vec<f32>,
pub method: MultipleComparisonCorrection,
}