Skip to content

latent.stats.ordinal

Ordinal score handling: binarization, distribution, median CI, cumulative proportions.

Functions

binarize

binarize(scores: np.ndarray, threshold: int) -> np.ndarray

Convert ordinal scores to binary (1 if >= threshold, else 0).

Args: scores: 1D array of ordinal scores. threshold: The minimum passing score.

Returns: Float array of 0.0/1.0 values.

cumulative_proportions

cumulative_proportions(scores: np.ndarray, scale: list[int], n_resamples: int = 10000, confidence_level: float = 0.95, seed: int | None = None) -> dict[int, MetricResult]

Compute cumulative proportions (% >= level) for each level in scale.

Args: scores: 1D array of ordinal scores. scale: List of ordinal levels (e.g. [1, 2, 3, 4, 5]). n_resamples: Number of bootstrap resamples. confidence_level: Confidence level for intervals. seed: Random seed for reproducibility.

Returns: Dict mapping each level to a MetricResult with the cumulative proportion and bootstrap CI.

median_ci

median_ci(scores: np.ndarray, n_resamples: int = 10000, confidence_level: float = 0.95, seed: int | None = None) -> tuple[int, int, int]

Bootstrap CI on the median for ordinal data.

Args: scores: 1D array of ordinal scores. n_resamples: Number of bootstrap resamples. confidence_level: Confidence level for the interval. seed: Random seed for reproducibility.

Returns: Tuple of (median, ci_lower, ci_upper) as ints.

ordinal_distribution

ordinal_distribution(scores: np.ndarray, rubric: MetricRubric | None = None, metric_name: str = '', n_resamples: int = 10000, confidence_level: float = 0.95, seed: int | None = None) -> OrdinalDistribution

Compute full ordinal distribution with per-level proportions and CIs.

Args: scores: 1D array of ordinal scores. rubric: Metric rubric with scale, labels, and pass_threshold. If None, a default rubric is inferred from observed values. metric_name: Name for the metric (used in result objects). n_resamples: Number of bootstrap resamples. confidence_level: Confidence level for intervals. seed: Random seed for reproducibility.

Returns: OrdinalDistribution with pass rate, per-level proportions, median CI, and cumulative proportions.