name: op-overlay-pairwise-probit-t
kind: operator
category: OVERLAY
operator: OVERLAY_PAIRWISE_PROBIT_T
description: Intra-matrix axis-pairwise probit t-test (Φ⁻¹ transform of each leg's proportion, Student-t tail).
type: reference
applies_to: process, compose
examples_tags: [overlay, cross-tabulation, hypothesis-test, pairwise]
Intra-matrix pairwise along one axis of the SAME crosstab: row scope pairs row indices per column, column pairs column indices per row. Sibling of the pairwise proportion z — same proportion + n inputs, probit transform instead. Overlays decorate the host; no Response.Components (this family READS them).
Use when
Pairwise t-tests on probit-transformed shares between rows (or columns) of one crosstab, matching a convention some survey tools use.
Questions it answers:
- Which segments differ in share when tested the way our survey tool does?
- Do the probit-scale shares of each region differ from each other?
Use something else:
OVERLAY_PAIRWISE_PROP_Zwhen you want the standard test of two shares.
Params
Scope (enum, required) — row or column. Ref (object, empty) — intra-matrix — leave empty. params.pair_along_dim (int, unset) — restrict pairs to same-bucket comparisons on the pair axis. params.n_source, params.n_within_depth and params.p_source are the family-wide vocabulary, identical to op-overlay-pairwise-prop-z: pairwise-n-sources.
multiplicity— optional{method, family, alpha}; addsp_adjustedfigures, raw p untouched (multiplicity-correction).
Host shape
MATRIX crosstab + Response.Components.Crosstab. Components-disabled host → PULSE_OVERLAY_COMPONENTS_REQUIRED.
Output
MATRIX — pair × opposite-axis grid of two-sided p-values, layout identical to op-overlay-pairwise-prop-z. Per pair: t = (Φ⁻¹(p_i) - Φ⁻¹(p_j)) / sqrt(1/n_i + 1/n_j) against Student-t with df = n_i + n_j - 2, two-sided; proportions clipped to [1e-10, 1-1e-10] before Φ⁻¹. Reuses the Student-t survival helper the t-tests use.
Reading the output
cells.value: a p-value. Below alpha (0.05 unless the request sets another) the result is called significant; that is not the same as important, so read the effect size for how big it is.- Caveat: Each cell holds the two-sided p-value for one pair, from a t curve on n_i + n_j - 2 degrees of freedom after a probit transform of each share; it is absent when a leg is unreadable or the test is degenerate.
- Caveat: The probit simplification differs from the textbook two-proportion test (OVERLAY_PAIRWISE_PROP_Z), so the two give different p-values for the same cells.
Gotchas
- Never weighted (no reference weighted form): a row weight reaching the overlay slot (request, its own
weight, orOptions.DefaultWeight) isPULSE_WEIGHT_UNSUPPORTEDwithdetails.reason; set"weight": nullon the overlay to run it unweighted. df <= 0(n_i + n_j <= 2) or a non-finite t skips the pair (aggregatedPULSE_OVERLAY_REF_ZERO).- RAW p-values only — direction / thresholds / min-n are the embedder’s job.
p_sourcemismatch fails silently:cell_valueover a 0..100 percentage pushes proportions outside[0,1]and every pair skips.- Distinct-KEY n modes carry the same admission and the same slab partition refusal as on prop-Z — distinct-key cell aggregators only,
PULSE_OVERLAY_DISTINCT_SLAB_NOT_PARTITIONEDfor a fan-out grouper at a summed-across depth, margin modes never gated. Full rules:pairwise-n-sources. - Flagged buffered in
OverlayStreamability; the HOST crosstab still FUSES on a mergeable cell aggregator.