fdars_core/explain/mod.rs
1//! Explainability toolkit for FPC-based scalar-on-function models.
2//!
3//! - [`functional_pdp`] / [`functional_pdp_logistic`] — PDP/ICE
4//! - [`beta_decomposition`] / [`beta_decomposition_logistic`] — per-FPC β(t) decomposition
5//! - [`significant_regions`] / [`significant_regions_from_se`] — CI-based significant intervals
6//! - [`fpc_permutation_importance`] / [`fpc_permutation_importance_logistic`] — permutation importance
7//! - [`influence_diagnostics`] — Cook's distance and leverage
8//! - [`friedman_h_statistic`] / [`friedman_h_statistic_logistic`] — FPC interaction detection
9//! - [`pointwise_importance`] / [`pointwise_importance_logistic`] — pointwise variable importance
10//! - [`fpc_vif`] / [`fpc_vif_logistic`] — variance inflation factors
11//! - [`fpc_shap_values`] / [`fpc_shap_values_logistic`] — SHAP values
12//! - [`dfbetas_dffits`] — DFBETAS and DFFITS influence diagnostics
13//! - [`prediction_intervals`] — prediction intervals for new observations
14//! - [`fpc_ale`] / [`fpc_ale_logistic`] — accumulated local effects
15//! - [`loo_cv_press`] — LOO-CV / PRESS diagnostics
16//! - [`sobol_indices`] / [`sobol_indices_logistic`] — Sobol sensitivity indices
17//! - [`calibration_diagnostics`] — calibration diagnostics (logistic)
18//! - [`functional_saliency`] / [`functional_saliency_logistic`] — functional saliency maps
19//! - [`domain_selection`] / [`domain_selection_logistic`] — domain/interval importance
20//! - [`conditional_permutation_importance`] / [`conditional_permutation_importance_logistic`]
21//! - [`counterfactual_regression`] / [`counterfactual_logistic`] — counterfactual explanations
22//! - [`prototype_criticism`] — MMD-based prototype/criticism selection
23//! - [`lime_explanation`] / [`lime_explanation_logistic`] — LIME local surrogates
24//! - [`expected_calibration_error`] — ECE, MCE, ACE calibration metrics
25//! - [`conformal_prediction_residuals`] — split-conformal prediction intervals
26//! - [`regression_depth`] / [`regression_depth_logistic`] — depth-based regression diagnostics
27//! - [`explanation_stability`] / [`explanation_stability_logistic`] — bootstrap stability analysis
28//! - [`anchor_explanation`] / [`anchor_explanation_logistic`] — beam-search anchor rules
29
30// Submodules
31pub(crate) mod helpers;
32
33mod advanced;
34mod ale_lime;
35mod counterfactual;
36mod diagnostics;
37mod importance;
38mod pdp;
39mod sensitivity;
40mod shap;
41
42// ===========================================================================
43// Public re-exports (backward compatible)
44// ===========================================================================
45
46// --- pdp.rs ---
47pub use pdp::{
48 beta_decomposition, beta_decomposition_logistic, functional_pdp, functional_pdp_logistic,
49 significant_regions, significant_regions_from_se, BetaDecomposition, FunctionalPdpResult,
50 SignificanceDirection, SignificantRegion,
51};
52
53// --- importance.rs ---
54pub use importance::{
55 conditional_permutation_importance, conditional_permutation_importance_logistic,
56 fpc_permutation_importance, fpc_permutation_importance_logistic, pointwise_importance,
57 pointwise_importance_logistic, ConditionalPermutationImportanceResult,
58 FpcPermutationImportance, PointwiseImportanceResult,
59};
60
61// --- diagnostics.rs ---
62pub use diagnostics::{
63 dfbetas_dffits, fpc_vif, fpc_vif_logistic, influence_diagnostics, loo_cv_press,
64 prediction_intervals, DfbetasDffitsResult, InfluenceDiagnostics, LooCvResult,
65 PredictionIntervalResult, VifResult,
66};
67
68// --- shap.rs ---
69pub use shap::{
70 fpc_shap_values, fpc_shap_values_logistic, friedman_h_statistic, friedman_h_statistic_logistic,
71 FpcShapValues, FriedmanHResult,
72};
73
74// --- ale_lime.rs ---
75pub use ale_lime::{
76 fpc_ale, fpc_ale_logistic, lime_explanation, lime_explanation_logistic, AleResult, LimeResult,
77};
78
79// --- sensitivity.rs ---
80pub use sensitivity::{
81 domain_selection, domain_selection_logistic, functional_saliency, functional_saliency_logistic,
82 sobol_indices, sobol_indices_logistic, DomainSelectionResult, FunctionalSaliencyResult,
83 ImportantInterval, SobolIndicesResult,
84};
85
86// --- counterfactual.rs ---
87pub use counterfactual::{
88 counterfactual_logistic, counterfactual_regression, prototype_criticism, CounterfactualResult,
89 PrototypeCriticismResult,
90};
91
92// --- advanced.rs ---
93pub use advanced::{
94 anchor_explanation, anchor_explanation_logistic, calibration_diagnostics,
95 conformal_prediction_residuals, expected_calibration_error, explanation_stability,
96 explanation_stability_logistic, regression_depth, regression_depth_logistic, AnchorCondition,
97 AnchorResult, AnchorRule, CalibrationDiagnosticsResult, ConformalPredictionResult, DepthType,
98 EceResult, RegressionDepthResult, StabilityAnalysisResult,
99};
100
101// ===========================================================================
102// pub(crate) re-exports from helpers (for explain_generic.rs, conformal.rs)
103// ===========================================================================
104
105pub(crate) use helpers::{
106 accumulate_kernel_shap_sample, anchor_beam_search, build_stability_result, clone_scores_matrix,
107 compute_ale, compute_column_means, compute_conditioning_bins, compute_domain_selection,
108 compute_h_squared, compute_kernel_mean, compute_lime, compute_mean_scalar,
109 compute_saliency_map, compute_sobol_component, compute_witness, gaussian_kernel_matrix,
110 generate_sobol_matrices, get_obs_scalar, greedy_prototype_selection, ice_to_pdp, make_grid,
111 mean_absolute_column, median_bandwidth, permute_component, project_scores,
112 reconstruct_delta_function, sample_random_coalition, shapley_kernel_weight,
113 solve_kernel_shap_obs, subsample_rows,
114};
115
116// pub(crate) re-export from diagnostics (used by explain_generic.rs)
117pub(crate) use diagnostics::compute_vif_from_scores;
118
119#[cfg(test)]
120mod tests;