Parked on feature/gmm-estimator while the architecture settles. Reinstate with git revert 1113795.
Why it was parked
This one is parked because it looks wrong, not only because it is unused.
Every GMM family — binomial, poisson, negbin, zip — warns:
The covariance matrix of the coefficients is singular
on well-conditioned simulated data with real signal and no collinearity. The estimator still returns coefficients, so a test that only checks the shape passes. A singular covariance matrix means the standard errors are not what they claim to be, and the t-statistics built from them feed straight into the permutation comparison.
It cost 68 lines in fit_qap_model() plus all 111 lines of R/qap_gmm.R, and the estimator control existed only to select it.
What it needs before coming back
Order
Fourth. Independent of the engine merge, so it can wait, but it is a correctness question rather than a dependency one, so it should not be reinstated as-is.
Parked on
feature/gmm-estimatorwhile the architecture settles. Reinstate withgit revert 1113795.Why it was parked
This one is parked because it looks wrong, not only because it is unused.
Every GMM family — binomial, poisson, negbin, zip — warns:
on well-conditioned simulated data with real signal and no collinearity. The estimator still returns coefficients, so a test that only checks the shape passes. A singular covariance matrix means the standard errors are not what they claim to be, and the t-statistics built from them feed straight into the permutation comparison.
It cost 68 lines in
fit_qap_model()plus all 111 lines ofR/qap_gmm.R, and theestimatorcontrol existed only to select it.What it needs before coming back
R/qap_gmm.Rare over-identified, orgmm::gmm()needs a different weighting matrix, or the extra dispersion parameter for negbin and zip is not being handled.Order
Fourth. Independent of the engine merge, so it can wait, but it is a correctness question rather than a dependency one, so it should not be reinstated as-is.