rasch.jml: Joint Maximum Likelihood (JML) Estimation of the Rasch Model

View source: R/rasch.jml.R

rasch.jmlR Documentation

Joint Maximum Likelihood (JML) Estimation of the Rasch Model

Description

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 class '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 is MLE.

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 is TRUE.

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 is NULL.

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
## Not run: 
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

## End(Not run)

alexanderrobitzsch/sirt documentation built on March 18, 2024, 1:29 p.m.