Skip to main content

IRT Parameter Estimation routines

This package implements parameter estimation for logistic Item Characteristic Curves (ICC) from Item Response Theory (IRT).

Maximum likelihood estimation (MLE) fitting routines for the following logistic models are implemented:

  • 1PL - 1 parameter logistic (Rausch) model
    • b (difficulty)
  • 2PL - 2 parameter logistic model
    • a (discrimination) and b (difficulty)
  • 3PL - 3 parameter logistic (Birnbaum) model
    • a (discrimination), b (difficulty) and c (pseudo-guessing)

In addition, fitting using the zeta/lamdba/c formulation is also implemented. The difference here boils down to the logistic exponent. The conversion is:

a (θj - b) = ζ + λ θj

a * (theta_j - b) = zeta + lambda * theta_j

This seemingly insignificant change has drastic effects on the convergence properties (especially in the 2PL case, but also the 3PL case).

Many of the methods in this package are derived from work by Frank B. Baker and Seock-Ho Kim:

Item Response Theory: Parameter Estimation Techniques

http://www.crcpress.com/product/isbn/9780824758257

The exception is the 3 parameter zeta/lambda/c implementation which to our knowledge has not been derived or documented before. For this reason, we include the mathematical derivations here:

irt-zlc-formuation.pdf

The original BASIC code that work was derived from can be downloaded here:

http://www.crcpress.com/downloads/DK2939/IRTPET.zip

The original python port of these hand-coded iterative schemes can be found in the file baker_mle.py (imported as "baker"). These are mainly useful for comparative purposes (for instance, the 2PL version matches 1-1 with the original routine's published values).

The main routines in this package (zlc_mle.py and abc_mle.py) use scipy.optimize.root instead for greater efficiency and accuracy. zlc uses a hybrid (zeta, lambda, c) formulation which makes the 2PL and 3PL systems converge much more much stably. This version is the one imported at the top level. This version also includes an "abc emulation" mode where zlc is still used internally, but automatic conversion is used so that the function takes a/b/c as arguments.

abc (in abc_mle.py) uses the (a,b,c) formulation, which may also be useful (try both for 3PL!). If you want to really dig into this code, it is very informative to use a side-by-side difference tool (like Vimdiff, KDiff3, WinMerge, FileMerge, or Meld) to compare abc_mle.py with zlc.mle.py.

All common utilities are found in util.py.

Tutorial

Updated 2021

To see a sample usage, check out the QuickTutorial notebook

Metadata

Release files for irt-parameter-estimation 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for irt-parameter-estimation 0.4.1
File Size Uploaded
irt_parameter_estimation-0.4.1.tar.gz 16.0 kB Details

Release files / irt_parameter_estimation-0.4.1.tar.gz

Download URL irt_parameter_estimation-0.4.1.tar.gz
Size 16.0 kB
Tags Source
SHA-256 checksum
How to use checksums
27ddd498425164c59ee14ca8792fc4f7e6427ca95cf1520e3819e2d2991ed9e8
BLAKE2b-256 checksum
How to use checksums
19bec35c3f323c2f5fa26d4551cb1f421c9157a89fcad0f9486557c015d0d8d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.5.0.1 requests/2.28.1 setuptools/51.3.3 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.4.1 This release

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page