nlsq.diagnostics.IdentifiabilityAnalyzer¶
- class nlsq.diagnostics.IdentifiabilityAnalyzer(config)[source]¶
Bases:
objectAnalyzer for parameter identifiability from Jacobian matrices.
This class analyzes the Fisher Information Matrix (FIM) derived from the Jacobian to assess parameter identifiability. It detects both structural unidentifiability (rank deficiency) and practical unidentifiability (ill-conditioning).
- Parameters:
config (DiagnosticsConfig) – Configuration containing thresholds for identifiability analysis.
- config¶
Configuration for the analyzer.
- Type:
Examples
>>> import numpy as np >>> from nlsq.diagnostics import DiagnosticsConfig >>> from nlsq.diagnostics.identifiability import IdentifiabilityAnalyzer >>> config = DiagnosticsConfig() >>> analyzer = IdentifiabilityAnalyzer(config) >>> J = np.random.randn(100, 3) # 100 data points, 3 parameters >>> report = analyzer.analyze(J) >>> print(report.health_status) HealthStatus.HEALTHY
- __init__(config)[source]¶
Initialize the identifiability analyzer.
- Parameters:
config (DiagnosticsConfig) – Configuration containing analysis thresholds.
- analyze(jacobian)[source]¶
Analyze identifiability from a Jacobian matrix.
Computes the Fisher Information Matrix (FIM) as J.T @ J and analyzes it for identifiability issues.
- Parameters:
jacobian (np.ndarray) – Jacobian matrix of shape (n_data, n_params).
- Returns:
Report containing analysis results and any detected issues.
- Return type:
Notes
The analysis includes:
FIM computation: FIM = J.T @ J
SVD of FIM for condition number and rank
Correlation matrix extraction
Issue detection based on thresholds