Skip to content

Commit 6fe9a42

Browse files
authored
CHANGELOG.md added (#12)
1 parent 1b3257f commit 6fe9a42

3 files changed

Lines changed: 55 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
5+
## [0.2.0] - 2025-03-01
6+
7+
### Added
8+
- **Missing Data Strategies**
9+
- Introduced a `missing_strategy` parameter for **Rasch**, **TwoParameterModel**, and **ThreeParameterModel** to handle `nil` responses:
10+
- `:ignore` (default) – skip missing responses in log-likelihood and gradients.
11+
- `:treat_as_incorrect` – interpret `nil` as `0`.
12+
- `:treat_as_correct` – interpret `nil` as `1`.
13+
- Updated RSpec tests to cover each strategy and ensure graceful handling of missing responses.
14+
15+
- **Expanded Test Coverage**
16+
- Added tests for repeated fits, deterministic seeding, larger random datasets, and new edge cases (all-correct/all-incorrect).
17+
- Improved specs for parameter clamping (discriminations, guessing in 2PL/3PL).
18+
19+
- **Adaptive Learning Rate Enhancements**
20+
- Enhanced convergence checks combining log-likelihood changes and average parameter updates.
21+
- Clearer revert-and-decay logic if the likelihood decreases on a given step.
22+
23+
### Changed
24+
- **Documentation / README**
25+
- Updated the README to reflect new missing data strategies, advanced usage (adaptive learning rate, parameter clamping), and test instructions.
26+
- Added examples showcasing how to set `missing_strategy` for each model.
27+
28+
### Notes
29+
- This release remains **backward-compatible** with `0.1.x` in terms of existing usage; the default `:ignore` missing-data approach matches prior behavior.
30+
- If upgrading, simply update your gem and enjoy the new features.
31+
- For more details, see the updated [README](./README.md) and expanded test suites.
32+
33+
---
34+
35+
*(If you have older versions below `0.2.0`, you can keep them documented similarly, e.g., `## [0.1.x] ...`, under this new entry.)*

Gemfile

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
source "https://rubygems.org"
44

5-
# Specify your gem's dependencies in irt_ruby.gemspec
65
gemspec
76

87
gem "rake", "~> 13.0"
98

109
gem "rspec", "~> 3.0"
1110

1211
gem "rubocop", "~> 1.21"
13-
14-
gem "matrix", "~> 0.4.2"

irt_ruby.gemspec

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,40 @@
11
# frozen_string_literal: true
22

3+
require_relative "lib/irt_ruby/version"
4+
35
Gem::Specification.new do |spec|
46
spec.name = "irt_ruby"
5-
spec.version = "0.1.0"
7+
spec.version = IrtRuby::VERSION
68
spec.authors = ["Alex Kholodniak"]
79
spec.email = ["alexandrkholodniak@gmail.com"]
810

9-
spec.summary = "A Ruby gem that provides implementations of Rasch, Two-Parameter, and Three-Parameter models for Item Response Theory (IRT)."
10-
spec.description = "IrtRuby is a Ruby gem that provides implementations of the Rasch model, Two-Parameter model, and Three-Parameter model for Item Response Theory (IRT). It allows you to estimate the abilities of individuals and the difficulties, discriminations, and guessing parameters of items based on their responses to a set of items."
11+
spec.summary = "A Ruby gem that provides Rasch, 2PL, and 3PL models for Item Response Theory (IRT), with flexible missing data strategies."
12+
spec.description = <<~DESC
13+
IrtRuby provides implementations of the Rasch model, Two-Parameter model,
14+
and Three-Parameter model for Item Response Theory (IRT).
15+
It allows you to estimate the abilities of individuals and the difficulties,
16+
discriminations, and guessing parameters of items based on their responses
17+
to a set of items. This version adds support for multiple missing data
18+
strategies (:ignore, :treat_as_incorrect, :treat_as_correct), expanded
19+
test coverage, and improved adaptive optimization.
20+
DESC
21+
1122
spec.homepage = "https://github.com/SyntaxSpirits/irt_ruby"
1223
spec.license = "MIT"
1324

14-
spec.metadata["homepage_uri"] = spec.homepage
25+
spec.metadata["homepage_uri"] = spec.homepage
1526
spec.metadata["source_code_uri"] = "https://github.com/SyntaxSpirits/irt_ruby"
16-
spec.metadata["changelog_uri"] = "https://github.com/SyntaxSpirits/irt_ruby/CHANGELOG.md"
27+
spec.metadata["changelog_uri"] = "https://github.com/SyntaxSpirits/irt_ruby/blob/main/CHANGELOG.md"
1728

1829
spec.files = Dir["lib/**/*.rb"]
1930
spec.required_ruby_version = ">= 2.6"
2031

21-
spec.bindir = "exe"
22-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32+
spec.bindir = "exe"
33+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
2334
spec.require_paths = ["lib"]
2435

36+
spec.add_dependency "matrix", "~> 0.4.2"
37+
2538
spec.add_development_dependency "bundler", "~> 2.0"
2639
spec.add_development_dependency "rake", "~> 13.0"
2740
spec.add_development_dependency "rspec", "~> 3.0"

0 commit comments

Comments
 (0)