nlsq.diagnostics.IdentifiabilityReport¶
- class nlsq.diagnostics.IdentifiabilityReport(available=True, error_message=None, computation_time_ms=0.0, condition_number=inf, numerical_rank=0, n_params=0, correlation_matrix=None, highly_correlated_pairs=<factory>, issues=<factory>, health_status=HealthStatus.HEALTHY)[source]¶
Bases:
AnalysisResultReport from identifiability analysis.
Contains results from analyzing the Fisher Information Matrix (FIM) including condition number, numerical rank, correlation structure, and any detected identifiability issues.
This dataclass extends AnalysisResult to include identifiability-specific information such as condition number, rank, and correlation analysis.
- condition_number¶
Condition number of the FIM. High values (> 1e8) indicate practical unidentifiability.
- Type:
- numerical_rank¶
Numerical rank of the FIM. If less than n_params, indicates structural unidentifiability.
- Type:
- correlation_matrix¶
Parameter correlation matrix derived from FIM. None if computation failed.
- Type:
np.ndarray | None
List of highly correlated parameter pairs as (i, j, correlation). Only includes pairs with absolute correlation greater than correlation_threshold.
- issues¶
List of detected identifiability issues (IDENT-001, IDENT-002, CORR-001).
- Type:
- health_status¶
Overall health status based on detected issues.
- Type:
Examples
>>> report = IdentifiabilityReport( ... condition_number=1e5, ... numerical_rank=3, ... n_params=3, ... correlation_matrix=np.eye(3), ... highly_correlated_pairs=[], ... issues=[], ... health_status=HealthStatus.HEALTHY, ... ) >>> report.available True >>> report.condition_number 100000.0
>>> # Report with issues >>> from nlsq.diagnostics.types import ModelHealthIssue, IssueCategory, IssueSeverity >>> issue = ModelHealthIssue( ... category=IssueCategory.IDENTIFIABILITY, ... severity=IssueSeverity.CRITICAL, ... code="IDENT-001", ... message="Structural unidentifiability detected", ... affected_parameters=(0, 1), ... details={"numerical_rank": 2, "n_params": 3}, ... recommendation="Reparameterize model", ... ) >>> report = IdentifiabilityReport( ... condition_number=float('inf'), ... numerical_rank=2, ... n_params=3, ... correlation_matrix=None, ... highly_correlated_pairs=[], ... issues=[issue], ... health_status=HealthStatus.CRITICAL, ... ) >>> len(report.issues) 1
- issues: list[ModelHealthIssue]¶
- health_status: HealthStatus¶
- summary()[source]¶
Return a summary string of the report.
- Returns:
Human-readable summary of the identifiability analysis.
- Return type:
- __init__(available=True, error_message=None, computation_time_ms=0.0, condition_number=inf, numerical_rank=0, n_params=0, correlation_matrix=None, highly_correlated_pairs=<factory>, issues=<factory>, health_status=HealthStatus.HEALTHY)¶