binest 0.3-0 (2026-09-21)

Explicit cutpoints_known; optional pooled moments for the reported scale

New required scope argument; one SE/CI instead of four

Estimates are named mean and sd

Parameter-change convergence criteria; a single tol

tol now controls the per-district MLE; new tol_cutpoints for the EM

Huber-White sandwich SE (fourth SE flavor)

Opt-out for the underidentified-district salvage

Two flavors of confidence interval per parameter

Sampling-vs-binning decomposition of standard errors

Salvage of districts with fewer than three populated bins

binest 0.2-2 (unreleased)

Cutpoint-refinement algorithm rewritten

bin_means() renamed to fast_hetop()

New output from fast_hetop()

API changes to fh_hetop()

binest 0.2-1 (resubmission)

Corrections requested by CRAN reviewer Benjamin Altmann:

binest 0.2-0 (2026-05-29)

API changes to bin_means()

The bin_means() function signature has been simplified.

Output structure

Cleaner unidentified-district handling

binest 0.1-0 (2026-05-27)

Renamed from HETOP

This package was previously called HETOP, originally authored and maintained by J.R. Lockwood (last CRAN release: HETOP 0.2-6, June 2019; archived from CRAN in March 2025). It is renamed binest to reflect the broader scope of methods now included for estimating distributional moments from binned (coarsened) count data.

New estimator

Bug fix in mle_hetop() carried over from the HETOP 0.3-0 patch

mle_hetop() previously took two user-facing arguments, fixedcuts and svals. Internal starting values for group means and log SDs are on a standardized scale; when the supplied cutpoints were on a native test-score scale (e.g. STAAR scale scores like 1536 and 1653), the log likelihood was numerically flat near the starting values, nlm() exited with zero iterations, and the function silently returned the starting values disguised as MLE estimates.

mle_hetop() no longer accepts fixedcuts or svals. Cutpoints are derived internally from the pooled bin proportions via

qnorm(cumsum(colSums(ngk)/sum(ngk))[1:2])

so the cutpoints, starting means, and starting log SDs all live on the same standardized scale. The function warns if nlm() reports zero iterations. The cell-probability computation is also vectorized for roughly an 18x speedup per likelihood evaluation.

The bug was first identified by David J. Hunter in January 2022 and independently reproduced by Benjamin R. Shear in July 2024.

History of HETOP

The HETOP package was originally authored by J.R. Lockwood, with substantial methodological contributions from Sean F. Reardon, Benjamin R. Shear, Katherine E. Castellano, and Andrew D. Ho. The implementations of fh_hetop, gendata_hetop, triple_goal, and waic_hetop in this package are unchanged from HETOP 0.2-6 (J.R. Lockwood, June 2019).