identification
IdentificationReport
Outcome of the identification checks.
``necessary_condition_met`` is the gate. ``sufficient`` is deliberately absent: no general sufficient condition for an arbitrary SEM is checked here, and claiming one would be false.
check_identification
Run every identification check and return a report.
Parameters ---------- blocks Mapping from latent variable name to its indicator names. paths Mapping from endogenous latent name to its direct predictors. sample_covariance Observed covariance (or correlation) matrix of the indicators, used only for the empirical checks.
count_free_parameters
Count free parameters under this package's parameterization.
With every latent variance fixed to 1:
Disturbance variances of the endogenous latents are *not* free: with the latent standardized, the disturbance variance is ``1 - R^2``, determined by the paths.
- one free loading per indicator: ``sum(indicator_counts)``;
- one free error variance per indicator: ``sum(indicator_counts)``;
- free covariances among the exogenous latents: ``n_exo * (n_exo - 1) / 2``;
- one coefficient per structural path: ``n_paths``.
is_recursive
True if the directed graph implied by ``paths`` is acyclic.
``paths`` maps each endogenous latent to the list of latents pointing into it. Depth-first search with a colour marking.
t_rule
Necessary condition: free parameters must not exceed observed moments.