All notable changes to this project are documented in this file.
- Added executable specs for README usage examples to keep the documented Rasch, 2PL, 3PL, and missing-data flows aligned with the public API.
- Added CI RuboCop and gem package build/install verification, and documented the local quality and packaging commands for contributors.
- Clarified that response data must be a
Matrixor array of arrays containing only integer0, integer1, ornil; floats, strings, booleans, and other values are rejected.
- Code Quality
- Updated RuboCop configuration to handle new cops and resolve style warnings
- Fixed operator precedence ambiguity in Three-Parameter Model calculations
- Added MFA requirement to gemspec metadata (RuboCop requirement)
- This release maintains full backward compatibility with previous versions
- All 46 existing tests continue to pass
- Comprehensive performance benchmarking suite remains available via
bundle exec rake benchmark:all
-
Missing Data Strategies
- Introduced a
missing_strategyparameter for Rasch, TwoParameterModel, and ThreeParameterModel to handlenilresponses::ignore(default) – skip missing responses in log-likelihood and gradients.:treat_as_incorrect– interpretnilas0.:treat_as_correct– interpretnilas1.
- Updated RSpec tests to cover each strategy and ensure graceful handling of missing responses.
- Introduced a
-
Expanded Test Coverage
- Added tests for repeated fits, deterministic seeding, larger random datasets, and new edge cases (all-correct/all-incorrect).
- Improved specs for parameter clamping (discriminations, guessing in 2PL/3PL).
-
Adaptive Learning Rate Enhancements
- Enhanced convergence checks combining log-likelihood changes and average parameter updates.
- Clearer revert-and-decay logic if the likelihood decreases on a given step.
- Documentation / README
- Updated the README to reflect new missing data strategies, advanced usage (adaptive learning rate, parameter clamping), and test instructions.
- Added examples showcasing how to set
missing_strategyfor each model.
- This release remains backward-compatible with
0.1.xin terms of existing usage; the default:ignoremissing-data approach matches prior behavior. - If upgrading, simply update your gem and enjoy the new features.
- For more details, see the updated README and expanded test suites.