Estimation Toolkit for Item Response Models (ETIRM)

Bradley A. Hanson

Release: 0.001118 (November 18, 2000)

ETIRM is a set of C++ classes and functions that can be used in programs for estimating parameters of item response theory (IRT) models. Currently, the components of ETIRM can be used to compute parameter estimates for the three-parameter logistic model with multiple groups (multiple-group estimation). There are plans to add estimation of other IRT models to ETIRM, including models for polytomous items. ETIRM is distributed under the BSD License.

ETIRM is a C++ toolkit for building IRT estimation programs, it is not itself a program for computing IRT parameter estimates. A stand-alone program has been created using ETIRM for multiple group estimation of the three-parameter logistic model - Estimation Program for Dichotomous Item Response Models (EPDIRM). In addition, the source code for two simple programs created using ETIRM are included in the ETIRM distribution. The two examples, as well as the source code for EPDIRM, show how to create a program using ETIRM.

Currently, the documentation for ETIRM consists of this page and fairly extensive comments in the source code. Brief descriptions of each source file in the ETIRM distribution are given below. Comments in each source file explain how to use the classes and functions defined in that file. The latest version of this page will contain information about the most recent documentation.

Development of ETIRM is managed through the SourceForge website as part of the Social Science Measurement project. Participation in the development of ETIRM is welcomed. Two Social Science Measurement project mailing lists are used to communicate information about ETIRM. The ssm-announce mailing list is used to make announcements about new releases of Social Science Measurement projects, including ETIRM. The ssm-devel mailing list is for discussion of ETIRM development, and the development of other Social Science Measurement projects. Anyone is welcome to subscribe to either mailing list. The source code comprising ETIRM can be downloaded from the SourceForge website, or from the link below. The latest development copies of the ETIRM source files can be obtained from the Social Science Measurement CVS repository at the SourceForge website.

Download ETIRM - Zip archive containing ETIRM. There are three directories in this archive: 1) etirm - contains ETIRM source files, 2) scppnt - contains source files for Simple C++ Numerical Toolkit (SCPPNT) containing vector and matrix classes used by ETIRM, and 3) opt - contains source file for Uncmin++ unconstrained minimization class used by ETIRM. The source files in this archive are stored with DOS line breaks (the files are DOS text files).

Some knowledge of C++ and a C++ compiler are necessary to create a program using ETIRM. Free C++ compilers are available for Windows 95/NT including the Borland 5.5 compiler and those based on gcc. Linux includes the gcc compiler.

Programs using ETIRM have been successfully compiled with the CodeWarrior 5.3 compiler on Mac OS and Windows NT, the gcc 2.95.2 compiler on Linux, and the Borland 5.5 compiler on Windows 95/NT. There may be some problems in using ETIRM with compilers that are less compliant with the C++ standard.

Some documentation of the numerical algorithms used in ETIRM is provided in Woodruff and Hanson (1997) and Hanson (1998). These documents describe the algorithms used in ETIRM for single group estimation. These documents do not provide a complete description of the algorithms used in ETIRM since they do not cover multiple group estimation.

ETIRM consists of a number of C++ classes and functions. The goal was to make the individual components of ETIRM as independent as possible, so that the components could be used individually, with minimum dependence on other components of ETIRM. Templates are heavily used in ETIRM to facilitate this independence.

The source provided in the examples directory of the ETIRM distribution illustrate how to use ETIRM to create programs to compute item parameter estimates for the three-parameter logistic model. One program (etirmone.cpp) provides an example of estimating item parameters in the case in which all examinees are assumed to come from a single population. The second program (etirmtwo.cpp) provides an example of estimating item parameters and latent variable distributions in a case in which the examinees are assumed to come from a two populations (multiple-group estimation). Included with the programs are makefiles for compiling the programs on Linux (Makefile) and on Windows 95/NT using the Borland 5.5 compiler (

External classes for minimization and classes implementing vectors and matrices are required by ETIRM. These classes are used in ETIRM as typedefs or template arguments, so any classes that meet certain interface requirements can be used. Two other C++ packages that can be used with ETIRM to fulfill this requirement are:

SCPPNT, or another vector and matrix package with the same interface, must be available to compile programs that use ETIRM. Uncmin++, or another minimization package with the same interface, is required for some components of ETIRM. These packages are included with the ETIRM distribution.

ETIRM Source Files

The following are brief descriptions of the source files in ETIRM. Some source files in the list are nested within other source files. A nested source file declares or defines a class derived from the class declared or defined in the file it is nested under.

Software by Brad Hanson

Brad Hanson's Home Page

URL of this page:

Last updated: November 19, 2014