Joint Maximum Likelihood (JML) Estimation of the Rasch Model
rasch.jml.Rd
This function estimates the Rasch model using joint maximum likelihood estimation (Lincare, 1994). The PROX algorithm (Lincare, 1994) is used for the generation of starting values of item parameters.
Usage
rasch.jml(dat, method="MLE", b.init=NULL, constraints=NULL, weights=NULL,
center="persons", glob.conv=10^(-6), conv1=1e-05, conv2=0.001, progress=TRUE,
bsteps=4, thetasteps=2, wle.adj=0, jmliter=100, prox=TRUE,
proxiter=30, proxconv=0.01, dp=NULL, theta.init=NULL, calc.fit=TRUE,
prior_sd=NULL)
# S3 method for rasch.jml
summary(object, digits=3, ...)
Arguments
- dat
An \(N \times I\) data frame of dichotomous item responses where \(N\) indicates the number of persons and \(I\) the number of items
- method
Method for estimating person parameters during JML iterations.
MLE
is maximum likelihood estimation (where person with perfect scores are deleted from analysis).WLE
uses weighted likelihood estimation (Warm, 1989) for person parameter estimation. Default isMLE
.- b.init
Initial values of item difficulties
- constraints
Optional matrix or data.frame with two columns. First column is an integer of item indexes or item names (
colnames(dat)
) which shall be fixed during estimation. The second column is the corresponding item difficulty.- weights
Person sample weights. Default is
NULL
, i.e. all persons in the sample are equally weighted.- center
Character indicator whether persons (
"persons"
), items ("items"
) should be centered or ("none"
) should be conducted.- glob.conv
Global convergence criterion with respect to the log-likelihood function
- conv1
Convergence criterion for estimation of item parameters
- conv2
Convergence criterion for estimation of person parameters
- progress
Display progress? Default is
TRUE
- bsteps
Number of steps for b parameter estimation
- thetasteps
Number of steps for theta parameter estimation
- wle.adj
Score adjustment for WLE estimation
- jmliter
Number of maximal iterations during JML estimation
- prox
Should the PROX algorithm (see
rasch.prox
) be used as initial estimations? Default isTRUE
.- proxiter
Number of maximal PROX iterations
- proxconv
Convergence criterion for PROX iterations
- dp
Object created from data preparation function (
.data.prep
) which could be created in earlier JML runs. Default isNULL
.- theta.init
Initial person parameter estimate
- calc.fit
Should itemfit being calculated?
- prior_sd
Optional value for standard deviation of prior distribution for ability values if penalized JML should be utilized
- object
Object of class
rasch.jml
- digits
Number of digits used for rounding
- ...
Further arguments to be passed
Details
The estimation is known to have a bias in item parameters for
a fixed (finite) number of items. In literature (Lincare, 1994), a simple
bias correction formula is proposed and included in the value
item$itemdiff.correction
in this function. If \(I\) denotes the number
of items, then the correction factor is \(\frac{I-1}{I}\).
Value
A list with following entries
- item
Estimated item parameters
- person
Estimated person parameters
- method
Person parameter estimation method
- dat
Original data frame
- deviance
Deviance
- data.proc
Processed data frames excluding persons with extreme scores
- dp
Value of data preparation (it is used in the function
rasch.jml.jackknife1
)
References
Linacre, J. M. (1994). Many-Facet Rasch Measurement. Chicago: MESA Press.
Warm, T. A. (1989). Weighted likelihood estimation of ability in the item response theory. Psychometrika, 54, 427-450.
See also
Get a summary with summary.rasch.jml
.
See rasch.prox
for the PROX algorithm as initial iterations.
For a bias correction of the JML method try rasch.jml.jackknife1
.
JML estimation can also be conducted with the TAM
(TAM::tam.jml
)
and immer (immer::immer_jml
)
packages.
See also marginal maximum likelihood estimation with rasch.mml2
or the R package ltm.
Examples
#############################################################################
# EXAMPLE 1: Simulated data from the Rasch model
#############################################################################
set.seed(789)
N <- 500 # number of persons
I <- 11 # number of items
b <- seq( -2, 2, length=I )
dat <- sirt::sim.raschtype( stats::rnorm( N, mean=.5 ), b )
colnames(dat) <- paste( "I", 1:I, sep="")
# JML estimation of the Rasch model (centering persons)
mod1 <- sirt::rasch.jml( dat )
summary(mod1)
# JML estimation of the Rasch model (centering items)
mod1b <- sirt::rasch.jml( dat, center="items" )
summary(mod1b)
# MML estimation with rasch.mml2 function
mod2 <- sirt::rasch.mml2( dat )
summary(mod2)
# Pairwise method of Fischer
mod3 <- sirt::rasch.pairwise( dat )
summary(mod3)
# JML estimation in TAM
if (FALSE) {
library(TAM)
mod4 <- TAM::tam.jml( resp=dat )
#******
# item parameter constraints in JML estimation
# fix item difficulties: b[4]=-.76 and b[6]=.10
constraints <- matrix( cbind( 4, -.76,
6, .10 ),
ncol=2, byrow=TRUE )
mod6 <- sirt::rasch.jml( dat, constraints=constraints )
summary(mod6)
# For constrained item parameters, it this not obvious
# how to calculate a 'right correction' of item parameter bias
}