# ForceChoice 1.0.0 (2026-07-12)

## New Features

### Eight Model Families
- `fit.MIRT()` - Multidimensional Item Response Theory (1PL--4PL) for binary
  dominance data, with optional Q-matrix structure.
- `fit.MGPCM()` - Multidimensional Generalized Partial Credit Model for
  polytomous ordered-category responses.
- `fit.MGGUM()` - Multidimensional Generalized Graded Unfolding Model for
  ideal-point polytomous responses with signed Q-matrix.
- `fit.FCMIRT()` - Forced-Choice MIRT with item-level dominance endorsement
  and Luce--Plackett block-level ranking (RANK, MOLE, PICK).
- `fit.FCGGUM()` - Forced-Choice GGUM with item-level ideal-point endorsement
  and block-level ranking.
- `fit.TIRT()` - Thurstonian IRT for forced-choice with pairwise probit
  comparisons and latent utility differences.
- `fit.FCDCM()` - Forced-Choice Diagnostic Classification Model with
  higher-order latent trait, DINA/DINO condensation rules, and exact
  attribute-profile marginalization.
- `fit.FCGDINA()` - Forced-Choice GDINA model with DINA, DINO, ACDM, and
  GDINA item-level structures for ranking, most-least, and pick responses.

### Estimation Backends
- **Stan** (`method = "stan"`): Full Bayesian inference via Hamiltonian Monte
  Carlo (NUTS/HMC) with `rstan`.
- **iStEM** (`method = "iStEM"`): Fast iterative Stochastic EM with
  Metropolis-within-Gibbs person sampling and L-BFGS-B item optimization.
- **EM** (`method = "EM"`): Deterministic posterior-weight EM for FCGDINA.

### Comprehensive Goodness-of-Fit
- Limited-information M2 statistic (Maydeu-Olivares & Joe, 2005, 2006)
- RMSEA with confidence intervals, SRMSR, RMSR
- Comparative fit: CFI, TLI, IFI
- Information criteria: AIC, AICc, BIC, CAIC, SABIC, HQIC
- Pseudo-R2 measures: McFadden, Cox--Snell, Nagelkerke, and more
- Local dependence: Yen's Q3 (raw and adjusted)
- Posterior diagnostics: entropy, classification accuracy

### Data Simulation
- `sim.data.MIRT()`, `sim.data.MGPCM()`, `sim.data.MGGUM()` for traditional
  item response data.
- `sim.data.FCMIRT()`, `sim.data.FCGGUM()`, `sim.data.TIRT()`,
  `sim.data.FCDCM()`, `sim.data.FCGDINA()` for forced-choice data.
- All simulators support controlled parameter generation, factor correlation,
  and rotation.

### Solution Rotation
- `rotate.MIRT()` and `rotate.matrix()` for post-hoc rotation of MIRT
  solutions using promax or any GPArotation method.

### S3 Methods
- Consistent generics across all model classes: `coef()`,
  `confint()`, `deviance()`, `fitted()`, `logLik()`, `nobs()`, `plot()`,
  `predict()`, `print()`, `residuals()`, `summary()`, `update()`, `vcov()`.

## Bug Fixes

- This is the initial CRAN release.

## Notes

- The package was previously developed under the name **fcirt** and has been
  substantially rewritten and expanded to support eight model families and the
  iStEM estimation backend.
