Learn R Programming

mixRasch (version 1.1)

mixRasch: Function for estimating and evaluating mixture Rasch models using JMLE

Description

This function will estimate a mixture Rasch model using joint maximum likelihood estimation (JMLE). The estimation is based on a mixture partial credit model. Step parameters can be constrained to estimate a mixture rating scale model.

Usage

mixRasch(data, steps, max.iter = 50, conv.crit = 0.001, model = "RSM", n.c = 1, class, metric, info.fit = TRUE, treat.extreme = 0.3, maxchange = 1.5, maxrange = c(-4, 4), as.LCA = FALSE)

Arguments

data
A rectangular data set (matrix or data frame) to be analyzed.
steps
The maximum number of item thresholds to be estimated. Some items may have less than the maximum.
max.iter
Maximum number EM iterations
conv.crit
Estimation stops when the largest model parameter change is smaller than this criterion.
model
"RSM" (the default) constrains all step parameters to be equal (i.e., estimates a rating scale model). Assumes all items have the same number of steps. "PCM" allows step parameters to differ across items (i.e., estimates a partial credit model). The number of steps can differ across items.
n.c
Number of latent classes.
class
Optional matrix of starting values for latent class membership.
metric
Not implemented. Will be an optional argument for setting the final scale of the Rasch results.
info.fit
If "True" the information based criteria of fit (AIC, BIC) are estimated.
treat.extreme
Adjustment to perfect response vectors to allow estimation of person parameters. Perfect vectors are not used during item parameter estimation.
maxchange
Limits the change to model parameters in a single iteration. Helps keep estimates reasonable in the first few iterations.
maxrange
Admissible range of item difficulties.
as.LCA
If TRUE, all person parameters are constrained to equal zero. That analysis accomplishes a latent class analysis rather than a mixture Rasch model.

Value

LatentClass
One element for each latent class. Each LatentClass element is itself a list containing within class results: item statistics (i.stat), person parameters and measures of person fit (person.par), item parameters and measures of item fit (item.par).
max.change
The largest model parameter change in each class in the last iteration of the estimation.
class
A rectangular matrix of the order number of people by number of classes. Values represent the probability that a person (row) belongs to a particular class (column).
iter
The number of completed iterations.
converge.flag
Indicates if convergence was reached.
info.fit
Provides (if requested) AIC, BIC, CAIC, log likelihood, number of estimated parameters, and number of persons used in the estimation.
model
Reports which model was estimated.
removed.items
Provides a vector indicating which, if any, items had to be removed from estimation for having perfect vectors.
run.time
Reports time elapsed during estimation.

Details

The analyzed data should be a rectangular data file. Missing data are permitted and handled in the usual JMLE manner. Large amounts of missing data will slow down estimation. Basic results on item parameters are returned to the screen. When more than one class is specified (n.c greater than 1) Rasch model parameters and measures of fit are returned in a list, with each class's results returned in a separate element of that list. When n.c = 1 a standard Rasch model analysis is performed.

References

Willse, J. T. (2009). Mixture Rasch models with joint maximum likelihood estimation. Presented at the National Council on Measurement in Education annual meeting. San Diego.

Examples

Run this code

# Example data included with mixRasch
data(SimMix)

test1 <- mixRasch(SimMix,1,50, conv.crit=.0001, n.c=1)
test2 <- mixRasch(SimMix,1,500, conv.crit=.0001, n.c=2)

# Notice that the AIC and BIC are lowest for the 2 class solution
rbind(test1$info.fit,test2$info.fit)

# Notice that the two "difficulty" columns are ordered differently
# The results reflect that the two groups in the data set have a reversed
# scale from one another.
test2

Run the code above in your browser using DataLab