nlsq.diagnostics.IdentifiabilityAnalyzer

class nlsq.diagnostics.IdentifiabilityAnalyzer(config)[source]

Bases: object

Analyzer 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:

DiagnosticsConfig

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:

IdentifiabilityReport

Notes

The analysis includes:

  1. FIM computation: FIM = J.T @ J

  2. SVD of FIM for condition number and rank

  3. Correlation matrix extraction

  4. Issue detection based on thresholds

analyze_from_fim(fim)[source]

Analyze identifiability from a pre-computed FIM.

Parameters:

fim (np.ndarray) – Fisher Information Matrix of shape (n_params, n_params).

Returns:

Report containing analysis results and any detected issues.

Return type:

IdentifiabilityReport