1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// SPDX-FileCopyrightText: 2025-2026 Carlson Büth <code@cbueth.de>
//
// SPDX-License-Identifier: MIT OR Apache-2.0
// SPDX-License-Identifier: MIT OR Apache-2.0
//! # Estimator Approaches
//!
//! This module provides various algorithmic approaches for estimating
//! information-theoretic measures. These approaches are categorized based on the
//! type of data they handle and the underlying mathematical techniques.
//!
//! ## Taxonomy of Approaches
//!
//! ### 1. Discrete Estimators
//! Used for categorical, integer, or symbolic data. These estimators analyze
//! frequency counts (histograms) and often include bias-correction terms.
//! - **MLE**: Simple plug-in estimator.
//! - **NSB / Bayes**: Bayesian approaches for undersampled data.
//! - **Shrinkage**: Regularization toward a uniform distribution.
//! - [More details in Discrete Module](discrete)
//!
//! ### 2. Exponential Family (kNN-based)
//! Used for continuous, real-valued data. These non-parametric estimators use
//! k-nearest neighbor (kNN) distances to estimate local density.
//! - **KSG**: Specifically optimized for Mutual Information and Transfer Entropy.
//! - **Kozachenko-Leonenko (KL)**: Asymptotically unbiased differential entropy.
//! - **Rényi / Tsallis**: Generalized entropies.
//! - [More details in ExpFam Module](expfam)
//!
//! ### 3. Kernel Density Estimation (KDE)
//! Used for continuous data. KDE approximates the probability density function
//! by placing a "kernel" (e.g. Gaussian) on each data point.
//! - [More details in Kernel Module](kernel)
//!
//! ### 4. Ordinal (Permutation)
//! Used for time series. Analyzes the relative order of values in sliding
//! windows (permutation patterns) rather than their absolute values.
//! - [More details in Ordinal Module](ordinal)
//!
//! ## Which approach to use?
//!
//! See the [Estimator Selection Guide](crate::guide::estimator_selection) for
//! detailed recommendations based on your data size and characteristics.
//!
//! ## Implementation Note
//!
//! Approaches in this module are implemented as structs that provide the
//! mathematical core. They are often used by the high-level facade types in the
//! parent [`estimators`](crate::estimators) module.
// Unified re-exports for common estimators so tests and users can import
// infomeasure::estimators::approaches::* ergonomically.
// Discrete estimators
pub use AnsbEntropy;
pub use BayesEntropy;
pub use BonachelaEntropy;
pub use ChaoShenEntropy;
pub use ChaoWangJostEntropy;
pub use GrassbergerEntropy;
pub use MillerMadowEntropy;
pub use DiscreteEntropy;
pub use NsbEntropy;
pub use ShrinkEntropy;
pub use ZhangEntropy;
// Exponential family estimators
pub use KozachenkoLeonenkoEntropy;
pub use ;
pub use RenyiEntropy;
pub use TsallisEntropy;
pub use KsgType;
// Kernel and Ordinal
pub use KernelEntropy;
pub use OrdinalEntropy;