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
//! Regression diagnostics (leverage, Cook's distance, VIF, etc.).
//!
//! This module provides tools for diagnosing regression models:
//!
//! - **Leverage**: Identifies observations with unusual predictor values
//! - **Residuals**: Standardized and studentized residuals for outlier detection
//! - **GLM Residuals**: Pearson, deviance, and working residuals for GLMs
//! - **Influence**: Cook's distance and DFFITS for influential point detection
//! - **VIF**: Variance Inflation Factor for multicollinearity detection
//! - **Quasi-separation**: Detection of separation issues in GLMs
//! - **Condition Number**: Matrix condition and collinearity diagnostics
//!
//! # Pre-fitting Diagnostics
//!
//! These diagnostics help identify potential issues before fitting a model:
//!
//! ```rust,ignore
//! use anofox_regression::diagnostics::{
//! condition_diagnostic, check_binary_separation, variance_inflation_factor
//! };
//!
//! // Check matrix conditioning
//! let cond = condition_diagnostic(&x, true);
//! if let Some(warning) = &cond.warning {
//! eprintln!("Warning: {}", warning);
//! }
//!
//! // Check for separation in logistic regression
//! let sep = check_binary_separation(&x, &y);
//! if sep.has_separation {
//! eprintln!("Warning: {}", sep.warning_message.unwrap());
//! }
//!
//! // Check for multicollinearity
//! let vif = variance_inflation_factor(&x);
//! ```
//!
//! # Post-fitting Diagnostics
//!
//! These diagnostics help assess model fit and identify problematic observations:
//!
//! ```rust,ignore
//! use anofox_regression::diagnostics::{compute_leverage, cooks_distance, pearson_residuals};
//!
//! // After fitting a model
//! let leverage = compute_leverage(&x, true);
//! let cooks = cooks_distance(&residuals, &leverage, mse, n_params);
//!
//! // Identify problematic observations
//! let high_leverage = high_leverage_points(&leverage, n_params, None);
//! let influential = influential_cooks(&cooks, None);
//! ```
// Re-export main functions
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;