Skip to content

Index Catalog

Registry-backed indices can be selected in screen() / composite(). Response-time helpers use a different input domain and are listed separately.

Inspect the same registry metadata programmatically or from the command line:

from ier import index_catalog

catalog = index_catalog()
print(catalog["evenodd"]["required_options"])
ier indices
ier indices --format json --output indices.json

The catalog reports flag direction and mode, screen/composite availability and defaults, and options that must be configured before an index can run.

Matrix indices

Name Construct Flag when Screen default Composite Extra config
irv Intra-individual response variability low yes yes
longstring Max consecutive identical responses high yes yes
longstring_pattern Repeating response patterns high yes yes longstring_max_pattern_length
mahad Mahalanobis distance (multivariate outlier) high yes yes
psychsyn Psychometric synonym consistency low yes yes psychsyn_critval
psychant Psychometric antonym consistency low no yes psychant_critval
person_total Agreement with the sample item profile low* yes yes
markov Transition entropy low yes yes
missing_rate Missing-response proportion high no yes optional item subset / applicability mask
u3_poly Polytomous person-fit / Guttman-like high yes no scale_min / scale_max
midpoint Midpoint responding high yes no scale_min / scale_max, midpoint_tolerance
acquiescence Agreeing / yea-saying high yes no scale bounds; optional item lists
guttman Guttman errors high yes yes guttman_normalize
individual_reliability Split-half individual reliability low no yes reliability_n_splits, seed
onset Carelessness onset item index present no no onset_window_size, onset_min_items
evenodd Even-odd consistency low no yes evenodd_factors
mad Mean absolute paired difference high no yes MAD item lists / optional scale bounds
lz lz person-fit low no yes optional IRT params via direct API; overflow-safe logistic kernel
semantic_syn Predefined synonym consistency low no yes semantic_item_pairs
semantic_ant Predefined antonym consistency low no yes semantic_item_pairs, optional scale bounds
infrequency Failed attention / bogus items high no yes item indices, expected responses, missing policy

* person_total flags unusually low correlations with the sample-wide item profile under the default low-direction percentile rule.

individual_reliability(..., random_seed=...) uses an isolated reproducible random stream. It does not reset or advance NumPy's process-wide random state.

The registry's longstring index uses longstring_scores() for numeric response matrices. The standalone longstring() helper analyzes text strings only and rejects numeric or multidimensional arrays.

semantic_ant reverse-scores the second item in each configured pair before computing consistency. Pass scale_min and scale_max through IndexOptions when the matrix does not contain both response-scale endpoints; otherwise the bounds are inferred from the observed data.

mad also reverse-scores the second item in each pair. Provide mad_scale_min and mad_scale_max when observed responses may omit a scale endpoint or use fractional endpoints. Higher MAD values mean greater paired inconsistency. The standalone semantic_syn_flag() and semantic_ant_flag() helpers flag unusually low consistency scores.

missing_rate is opt-in because planned skip logic and matrix preprocessing can create legitimate omissions. Use IndexOptions.missing_item_indices to restrict registry scoring to a fixed required-item subset, or pass the same subset as item_indices to the standalone helper. For respondent-specific skip logic, provide a Boolean missing_applicable_mask through IndexOptions or applicable_mask directly. False cells are excluded from both the numerator and denominator; rows without applicable selected items return NaN and are not flagged. The CLI exposes fixed subsets through --missing-item-indices.

infrequency preserves its historical missing-response behavior with missing="pass": unanswered checks do not count as failures and remain in a proportion denominator. Choose "fail" for conservative scoring, "omit" for available-case proportions, or "propagate" to require complete attention-check data. Configure registry scoring with IndexOptions.infrequency_missing and the CLI with --infrequency-missing. The standalone infrequency_flag() can flag either counts or proportions.

Response-time indices (standalone — not in the registry)

These helpers take timing matrices (durations), not item-response matrices. They are intentionally excluded from screen() / composite() so item scores and timestamps are never mixed by accident. Compute them separately and merge flags in your analysis code if needed.

Function Signal Typical flag
response_time Central tendency of RT low (too fast)
response_time_consistency RT coefficient of variation low (too uniform)
response_time_flag Percentile / threshold flagging low
response_time_mixture Stable mixture P(fast component) high
response_time_score_flags Reflag retained direct or mixture scores low or high

Plot helpers

Requires insufficient-effort[plot]:

  • plot_distributions(screen_result)
  • plot_flag_counts(screen_result)
  • plot_flagged_heatmap(screen_result)
  • mahad_qqplot(...)