Add WLE (Weighted Likelihood Estimation) as ability estimator#53
Open
ben-domingue wants to merge 1 commit into
Open
Add WLE (Weighted Likelihood Estimation) as ability estimator#53ben-domingue wants to merge 1 commit into
ben-domingue wants to merge 1 commit into
Conversation
Implements Warm (1989) bias-corrected MLE via the same Powell optimizer used by MLE. The WLE objective maximizes L(θ) + 0.5·ln I(θ), matching the formulation in mirt's fscores(method="WLE"). Validated against mirt on a 50-item Rasch simulation — estimates lie on the diagonal across the full theta range. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
'WLE'(Warm 1989 Weighted Likelihood Estimation) as a third option for themethodparameter alongside'MLE'and'EAP'fscores(method="WLE")formulationChanges
src/cat.ts:estimateAbilityWLE()andnegWLEObjective()methods;'wle'added tovalidateMethod(); JSDoc updatedsrc/__tests__/cat.test.ts: 3 new tests (analytic anchor, bias-correction property, bounds/SE)README.md: WLE usage example added;new CAT(...)→new Cat(...)typo fixedvalidation/: newwle-simulation.jsscript, WLE section injsCAT-validation.Rmd, and validation plot (jsCAT_validation_3.png) showing jsCAT WLE vs mirt WLE on a 50-item Rasch simulationKnown pre-existing issue (not introduced by this PR)
stopping.test.tsfails to run with a syntax error injest-extended/pretty-formatdue to a Node version incompatibility (optional chaining?.requires Node ≥ 14). This failure exists onmainbefore this PR and is unrelated to the WLE changes.Test plan
npm test -- --testPathPattern=cat.test— all 87 tests passnpm run buildRscript /tmp/wle_validation.R— points lie on the diagonal vs mirt🤖 Generated with Claude Code