Skip to content

staar: multi-binary, multi-kinship, and random.slope nulls#133

Merged
vineetver merged 1 commit intomasterfrom
staar-multi-kinship-random-slope
Apr 20, 2026
Merged

staar: multi-binary, multi-kinship, and random.slope nulls#133
vineetver merged 1 commit intomasterfrom
staar-multi-kinship-random-slope

Conversation

@vineetver
Copy link
Copy Markdown
Owner

@vineetver vineetver commented Apr 20, 2026

Ports the three remaining null-fit extensions to finish v0.3.0.

MultiNull::fit_binary fits k binary traits jointly (per-trait logistic IRLS + cross-trait residual correlation + shared-W̄ Fisher-information projection). GMMAT rejects multi-binomial at glmmkin.R:43 so this is a lift combining our single-trait logistic with the MultiSTAAR Kronecker pattern, not a 1:1 port. multi_kinship::fit_multi_kinship is the 1:1 port of glmmkin.multi.ai (glmmkin.R:424-536) — expands the kinship list via E_{j,m} ⊗ V blocks, stacks vec(Y) and I_k ⊗ X, runs AI-REML, reshapes theta back to per-group/per-kinship (k × k). kinship::fit_reml_random_slope ports the random.slope expansion (glmmkin.R:174-183) with PSD-box step-halving (:375-376).

k=1 parity is bit-for-bit against the single-trait paths on all three. 221 staar:: tests green, invariance golden unchanged, clippy clean.

Dense-only for multi-kinship; sparse Σ on the stacked nk × nk system is the natural follow-up. R ground-truth fixtures for k>1 multi-kinship and for random.slope are not in this PR — the k=1 reductions give strong confidence but not full numerical parity. Binary + kinship in multi-trait and binary + random.slope are rejected with clear messages (GMMAT doesn't implement either).

Closes #111
Closes #80
Closes #101

Port MultiNull::fit_binary (joint k-binary, lift of single-trait logistic
+ MultiSTAAR Kronecker; GMMAT rejects multi-binomial so no upstream),
multi_kinship::fit_multi_kinship (port of GMMAT glmmkin.multi.ai), and
kinship::fit_reml_random_slope (port of glmmkin random.slope expansion
with PSD-box step-halving). k=1 parity bit-for-bit vs single-trait on
all three paths.

Closes #111, #80, #101.
@vineetver vineetver merged commit 9c9c562 into master Apr 20, 2026
3 checks passed
@vineetver vineetver deleted the staar-multi-kinship-random-slope branch April 20, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant