**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 (Makefile.win).

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:

- Uncmin++ - A unconstrained minimization class (used in the M-step computation).
- Simple C++ Numerical Toolkit (SCPPNT) - Provides vector and matrix classes, and operations on vectors and matrices.

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.

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.

- DiscreteLatentDist.h - Definition of class DiscreteLatentDist representing a discrete latent variable distribution for one or more groups of examinees.
- DiscreteNormalDist.h - Definition of function DiscreteNormalDist for computing points and probabilities for a discrete distribution that approximates a normal distribution.
- EStepDiscrete.h - Definition of class EStepDiscrete which can be used in performing the E-step calculation of the EM algorithm for item response models.
- etirmtypes.h - Defines some basic types used in ETIRM.
- Examinee.h - Definition of class Examinee which holds item responses for an examinee.
- ExamineeGrpCov.h - Definition of class ExamineeGrpCov that includes information about the group the examinee belongs to.

- ICCLogistic.h - Definition of specializations of template class ICCLogistic for computing item characteristic curves for 1, 2, and 3 parameter logistic models for dichotomous items.
- ICCLogistic.cpp - Definitions of non-template member functions declared in ICCLogistic.h.
- Item.h - Definition of abstract class Item which stores information about a test item.
- ItemNR.h - Definition of class ItemNR which includes information calculated for the item in the E-step which is used in the M-step.
- ItemDichotomous.h - Definition of class ItemDichotomous representing a dichotomously scored item.

- ItemNR.h - Definition of class ItemNR which includes information calculated for the item in the E-step which is used in the M-step.
- ItemParamPrior.h - Definition of abstract class ItemParamPrior which represents a prior distribution for item parameters.
- ItemParamPriorBeta4.h - Definition of class ItemParamPriorBeta4 representing a four-parameter beta prior distribution.
- ItemParamPriorLogNormal.h - Definition of class ItemParamPriorLogNormal representing a lognormal prior distribution.
- ItemParamPriorNormal.h - Definition of class ItemParamPriorNormal representing a normal prior distribution.

- ItemParamPrior.cpp - Definitions of member functions of class ItemParamPrior.
- ItemParamPriorBeta4.cpp - Definitions of ItemParamPriorBeta4 member functions.
- ItemParamPriorLogNormal.cpp - Definitions of ItemParamPriorLogNormal member functions.
- ItemParamPriorNormal.cpp - Definitions of ItemParamPriorNormal member functions.

- MStepIRT.h - Definitions of template functions used to compute the M-step for item parameter estimates and estimates of the probabilities of discrete latent variable distributions.
- MStepIRT.cpp - Definition of function MaxRelParamDiff used in M-step calculations.
- Start3PL.h - Definitions of functions used to compute starting values for the one, two, or three-parameter logistic models.
- swig_etirm.cpp - Definitions of functions and classes to be wrapped by SWIG to create scripting language interfaces for ETIRM.
- swig_etirm.h - Declarations of functions and classes to be wrapped by SWIG to create scripting language interfaces for ETIRM. This file would be included in a SWIG interface file to create the wrappers for the functions defined in swig_etirm.cpp.
- swig_etirm_types.h - Definition of item, examinee, and latent distribution types used in swig_etirm.h and swig_etirm.cpp.
- UnivThetaLogLikelihood.h - Definition of function object UnivThetaLogLikelihood for computing loglikelihood for an examinee theta parameter in a univariate item response model.

URL of this page: http://www.openirt.com/b-a-h/software/cpp/etirm.html

Last updated: November 19, 2014