Skip to main content

greeners/
lib.rs

1pub mod arima;
2pub mod autoreg;
3pub mod beta_model;
4pub mod bootstrap;
5pub mod column;
6pub mod conditional;
7pub mod dataframe;
8pub mod datasets;
9pub mod decomposition;
10pub mod descrstatsw;
11pub mod diagnostics;
12pub mod did;
13pub mod discrete;
14pub mod dynamic_factor;
15pub mod dynamic_panel;
16pub mod error;
17pub mod ets;
18pub mod export;
19pub mod formula;
20pub mod garch;
21pub mod gee;
22pub mod glm;
23pub mod glmgam;
24pub mod gls;
25pub mod glsar;
26pub mod gmm;
27pub mod hausman;
28pub mod imputation;
29pub mod influence;
30pub mod iv;
31pub mod markov;
32pub mod markov_autoreg;
33pub mod mixed;
34pub mod mnlogit;
35pub mod model_selection;
36pub mod mstl;
37pub mod multipletests;
38pub mod multivariate;
39pub mod negbin;
40pub mod nonparametric;
41pub mod ols;
42pub mod ordered;
43pub mod panel;
44pub mod poisson;
45pub mod proportion;
46pub mod quantile;
47pub mod rlm;
48pub mod rolling;
49pub mod specification_tests;
50pub mod statespace;
51pub mod stats;
52pub mod summary_col;
53pub mod sur;
54pub mod survival;
55pub mod svar;
56pub mod three_sls;
57pub mod threshold;
58pub mod timeseries;
59pub mod unobserved_components;
60pub mod var;
61pub mod varma;
62pub mod vecm;
63pub mod wls;
64pub mod zero_inflated;
65
66pub use arima::{ArimaOrder, ArimaResult, SeasonalOrder, ARIMA};
67pub use autoreg::{ARDLResult, AutoReg, AutoRegResult, ARDL};
68pub use beta_model::{BetaLink, BetaModel, BetaResult};
69pub use bootstrap::{Bootstrap, HypothesisTest};
70pub use column::{CategoricalColumn, Column, DataType};
71pub use conditional::{
72    ConditionalLogit, ConditionalMNLogit, ConditionalPoisson, ConditionalResult,
73};
74pub use dataframe::DataFrame;
75pub use datasets::Datasets;
76pub use decomposition::{Decomposition, DecompositionResult};
77pub use descrstatsw::DescrStatsW;
78pub use diagnostics::{AndersonDarlingResult, Diagnostics};
79pub use did::DiffInDiff;
80pub use discrete::{Logit, Probit};
81pub use dynamic_factor::{DynamicFactor, DynamicFactorResult};
82pub use dynamic_panel::ArellanoBond;
83pub use error::GreenersError;
84pub use ets::{ETSResult, ExponentialSmoothing};
85pub use export::{ExportData, ExportableResult};
86pub use formula::Formula;
87pub use garch::{GarchDist, GarchModelType, GarchResult, EGARCH, GARCH, GJRGARCH};
88pub use gee::{CorrStructure, GeeResult, NominalGEE, OrdinalGEE, GEE};
89pub use glm::{Family, GlmResult, Link, GLM};
90pub use glmgam::{BSplineBasis, GLMGam, GamResult};
91pub use gls::FGLS;
92pub use glsar::{GlsarResult, GLSAR};
93pub use gmm::GMM;
94pub use hausman::HausmanTest;
95pub use imputation::{BayesGaussMI, BayesGaussMIResult, MICEResult, MICE};
96pub use influence::{CUSUMResult, CUSUMTest, Influence, InfluenceResult};
97pub use iv::IV;
98pub use markov::{MarkovSwitching, MarkovSwitchingResult};
99pub use markov_autoreg::{MarkovAutoregResult, MarkovAutoregression};
100pub use mixed::{BayesMixedGLM, BayesMixedGLMResult, MixedLM, MixedResult};
101pub use mnlogit::{MNLogit, MNLogitResult};
102pub use model_selection::{ModelSelection, PanelDiagnostics, SummaryStats};
103pub use mstl::{MSTLResult, MSTL};
104pub use multipletests::{MultiTestMethod, MultipleTests};
105pub use multivariate::{
106    CanCorr, CanCorrResult, FactorAnalysis, FactorResult, ManovaResult, PCAResult, Rotation,
107    MANOVA, PCA,
108};
109pub use negbin::{GenPoisson, GenPoissonResult, NegBin, NegBinP, NegBinPResult, NegBinResult};
110pub use nonparametric::{
111    KDEMultivariate, KDEMultivariateResult, KDEResult, KDEUnivariate, Kernel, KernelReg,
112    KernelRegResult, Lowess, LowessResult,
113};
114pub use ols::{OlsResult, PredictionResult, OLS};
115pub use ordered::{OrderedLogit, OrderedProbit, OrderedResult};
116pub use panel::BetweenEstimator;
117pub use panel::FixedEffects;
118pub use panel::RandomEffects;
119pub use poisson::{Poisson, PoissonResult};
120pub use proportion::ProportionTests;
121pub use quantile::QuantileReg;
122pub use rlm::{RlmResult, RobustNorm, RLM};
123pub use rolling::{RecursiveLS, RecursiveLSResult, RollingOLS, RollingResult, RollingWLS};
124pub use specification_tests::SpecificationTests;
125pub use statespace::{
126    state_space_estimate, KalmanFilter, KalmanResult, KalmanSmoother, SmoothedResult,
127    StateSpaceModel, StateSpaceResult,
128};
129pub use stats::{AnovaRegressionResult, AnovaResult, CompareMeansResult, Stats};
130pub use summary_col::{ModelSummary, SummaryCol, SummaryColResult};
131pub use sur::{SurEquation, SUR};
132pub use survival::{CoxPH, CoxResult, KMResult, KaplanMeier};
133pub use svar::{SVarIdentification, SVarResult, SVAR};
134pub use three_sls::{Equation, ThreeSLS};
135pub use threshold::PanelThreshold;
136pub use timeseries::{PhillipsPerronResult, TimeSeries, ZivotAndrewsResult};
137pub use unobserved_components::{UCLevel, UCResult, UCSeasonal, UnobservedComponents};
138pub use var::VAR;
139pub use varma::VARMA;
140pub use vecm::VECM;
141pub use wls::WLS;
142pub use zero_inflated::{ZeroInflatedResult, ZINB, ZIP};
143
144#[derive(Debug, Clone, PartialEq)]
145pub enum CovarianceType {
146    /// Standard OLS (Homoscedastic)
147    NonRobust,
148    /// White's Robust Errors (HC1) - Only Heteroscedasticity
149    /// Uses small-sample correction: n/(n-k)
150    HC1,
151    /// HC2 - Leverage-adjusted heteroscedasticity-robust SE
152    /// Adjusts for leverage: σ²_i / (1 - h_i)
153    /// More efficient than HC1 with small samples
154    HC2,
155    /// HC3 - Jackknife heteroscedasticity-robust SE
156    /// Uses squared leverage adjustment: σ²_i / (1 - h_i)²
157    /// Most robust for small samples (MacKinnon & White, 1985)
158    /// Recommended default robust SE estimator
159    HC3,
160    /// HC4 - Refined jackknife (Cribari-Neto, 2004)
161    /// Uses power adjustment: σ²_i / (1 - h_i)^δᵢ where δᵢ = min(4, n·h_i/k)
162    /// Best small-sample performance, especially with influential observations
163    /// More refined than HC3 for datasets with high-leverage points
164    HC4,
165    /// Newey-West (HAC) - Heteroscedasticity + Autocorrelation
166    /// The 'usize' parameter is the number of lags (L).
167    /// Common rule of thumb: L = n^0.25
168    NeweyWest(usize),
169    /// Clustered Standard Errors (One-Way)
170    /// Critical for panel data, experiments, and grouped observations
171    /// The Vec<usize> contains cluster IDs for each observation
172    Clustered(Vec<usize>),
173    /// Two-Way Clustered Standard Errors (Cameron-Gelbach-Miller, 2011)
174    /// For panel data with clustering along two dimensions (e.g., firm + time)
175    /// First Vec: cluster IDs for dimension 1 (e.g., firm IDs)
176    /// Second Vec: cluster IDs for dimension 2 (e.g., time periods)
177    /// Formula: V = V₁ + V₂ - V₁₂ where V₁₂ is intersection clustering
178    /// Essential for panel data with both cross-sectional and time correlation
179    ClusteredTwoWay(Vec<usize>, Vec<usize>),
180}
181
182/// Inference distribution type for hypothesis testing and confidence intervals
183///
184/// Determines which statistical distribution to use when computing p-values
185/// and confidence intervals for coefficient estimates.
186#[derive(Debug, Clone, PartialEq, Default)]
187pub enum InferenceType {
188    /// Student's t-distribution (default for finite samples)
189    ///
190    /// Uses t(df) distribution for hypothesis testing and confidence intervals.
191    /// This is the exact finite-sample distribution under normality assumptions.
192    ///
193    /// **Recommended for:**
194    /// - Small to medium samples (n < 100)
195    /// - When exact finite-sample inference is desired
196    /// - Conservative hypothesis testing
197    ///
198    /// **Used by:** OLS, IV/2SLS, Panel models (default)
199    #[default]
200    StudentT,
201
202    /// Standard Normal distribution (z-distribution)
203    ///
204    /// Uses N(0,1) distribution for hypothesis testing and confidence intervals.
205    /// This is the asymptotic distribution (as n → ∞).
206    ///
207    /// **Recommended for:**
208    /// - Large samples (n > 1000)
209    /// - Asymptotic theory contexts (MLE, GMM)
210    /// - Compatibility with statsmodels/Python
211    ///
212    /// **Used by:** Logit, Probit, GMM, Quantile Regression (always)
213    ///
214    /// **Note:** For large samples (df > 30), t and z distributions are nearly identical.
215    Normal,
216}