Learn R Programming

CDM (version 4.8-0)

mcdina: Multiple Choice DINA Model

Description

The function mcdina implements the multiple choice DINA model (de la Torre, 2009) for multiple groups. Note that the dataset must contain integer values $1,\ldots , K_j$ for each item. The multiple choice DINA model assumes that each item category possesses some diagnostic capacity. Using this modeling approach, different distractors of a multiple choice item can be of different diagnostic value. The Q-matrix can also contain integer values which allows the definition of polytomous attributes.

Usage

mcdina(dat, q.matrix, group = NULL, itempars = "gr", weights = NULL, 
    skillclasses = NULL, zeroprob.skillclasses = NULL, 
    reduced.skillspace=TRUE , conv.crit = 1e-04, 
    dev.crit = 0.1, maxit = 1000, progress = TRUE)

## S3 method for class 'mcdina':
summary(object, digits=4 , file = NULL ,  \dots)

## S3 method for class 'mcdina':
print(x, \dots)

Arguments

dat
A required $N \times J$ data matrix containing the binary responses, 0 or 1, of $N$ respondents to $J$ test items, where 1 denotes a correct response and 0 an incorrect one. The nth row of the matrix represents the binary response pattern of r
q.matrix
A required matrix specifying which item category is intended to measure which skill. The Q-matrix has $K+2$ columns for a model with $K$ skills. In the first column should be the item index, in the second column the category integer and the rest of th
group
An optional vector of group identifiers for multiple group estimation.
itempars
A character or a character vector of length $J$ indicating whether item parameters should separately estimated within each group. The default is "gr", for group-invariant item parameters choose "jo".
weights
An optional vector of sample weights.
skillclasses
An optional matrix for determining the skill space. The argument can be used if a user wants less than the prespecified number of $2^K$ skill classes.
zeroprob.skillclasses
An optional vector of integers which indicates which skill classes should have zero probability. Default is NULL (no skill classes with zero probability).
reduced.skillspace
An optional logical indicating whether the skill space should be reduced to cover only bivariate associations among skills (see Xu & von Davier, 2008).
conv.crit
Convergence criterion for change in item parameter values
dev.crit
Convergence criterion for change in deviance values
maxit
Maximum number of iterations.
progress
An optional logical indicating whether the function should print the progress of iteration in the estimation process.
object
Object of class mcdina.
digits
Number of digits to display in summary.mcdina
file
Optional file name for a file in which summary should be sinked.
x
Object of class mcdina
...
Further arguments to be passed.

Value

  • A list with following entries
  • itemData frame with item parameters
  • posteriorIndividual posterior distribution
  • likelihoodIndividual likelihood
  • icList with information criteria
  • q.matrixUsed Q-matrix
  • pikArray of item-category probabilities
  • deltaArray of item parameters
  • se.deltaArray of standard errors of item parameters
  • itemstatData frame containing item definitions
  • n.ikArray of expected counts
  • devianceDeviance
  • attribute.pattProbabilities of latent classes
  • attribute.patt.splittedSplitted attribute pattern
  • skill.pattMarginal skill probabilities
  • MLE.classClassified skills for each student (MLE)
  • MAP.classClassified skills for each student (MAP)
  • EAP.classClassified skills for each student (EAP)
  • datUsed dataset
  • skillclassesUsed skill classes
  • groupUsed group identifiers
  • lcData frame containing definitions of each item category
  • lrData frame containing the relation of each latent class and each item category
  • iterNumber of iterations
  • itemparsUsed specification of item parameter estimation type
  • convergedLogical indicating whether convergence was achieved.

Details

The multiple choice DINA model defines for each item category $jc$ the necessary skills to master this attribute. Therefore, the vector of skills $\bold{\alpha}$ is transformed into item-specific latent responses $\eta_{j}$ which are functions of $\bold{\alpha}$ and Q-matrix entries $q_{jc}$ (just like in the DINA model). If there are $K_j$ item categories for item $j$, then there exist at most $K_j$ values of the latent response $\eta_j$. The multiple choice DINA model estimates the item response function as $$P( X_{nj} = k | \eta_{nj} = l ) = p_{jkl}$$ with the constraint $\sum_k p_{jkl} = 1$.

References

de la Torre, J. (2009). A cognitive diagnosis model for cognitively based multiple-choice options. Applied Psychological Measurement, 33, 163-183. Xu, X., & von Davier, M. (2008). Fitting the structured general diagnostic model to NAEP data. ETS Research Report ETS RR-08-27. Princeton, ETS.

See Also

See din for estimating the DINA/DINO model and gdina for estimating the GDINA model.

Examples

Run this code
#############################################################################
# EXAMPLE 1: Multiple choice DINA model for data.cdm01 dataset
#############################################################################

data(data.cdm01)
dat <- data.cdm01$data
group <- data.cdm01$group
q.matrix <- data.cdm01$q.matrix

#*** Model 1: Single group model
mod1 <- mcdina( dat=dat , q.matrix=q.matrix )
summary(mod1)

#*** Model 2: Multiple group model with group-invariant item parameters
mod2 <- mcdina( dat=dat , q.matrix=q.matrix , group=group , itempars="jo")
summary(mod2)

#*** Model 3: Multiple group model with group-specific item parameters
mod3 <- mcdina( dat=dat , q.matrix=q.matrix , group=group , itempars="gr")
summary(mod3)

#*** Model 4: Multiple group model with some group-specific item parameters
itempars <- rep("jo" , ncol(dat))
itempars[ c( 2, 7, 9) ] <- "gr" # set items 2,7 and 9 group specific
mod4 <- mcdina( dat=dat , q.matrix=q.matrix , group=group , itempars=itempars)
summary(mod4)

#*** Model 5: Reduced skill space

# define skill classes
skillclasses <- scan(nlines=1)  # read only one line
    0 0 0    1 0 0    0 1 0    0 0 1    1 1 0     1 1 1    
skillclasses <- matrix( skillclasses  , ncol=3 , byrow=TRUE )
mod5 <- mcdina( dat , q.matrix , group=group0 ,  skillclasses=skillclasses  )
summary(mod5)

#*** Model 6: Reduced skill space with setting zero probabilities
#             for some latent classes

# set probabilities of classes P101 P011 (6th and 7th class) to zero
zeroprob.skillclasses <- c( 6 , 7 )
mod6 <- mcdina( dat, q.matrix, group=group, zeroprob.skillclasses=zeroprob.skillclasses )
summary(mod6)

#############################################################################
# EXAMPLE 2: Using the mcdina function for estimating the DINA model
#############################################################################

data(sim.dina)
data(sim.qmatrix)

# estimate the DINA model
mod <- mcdina( sim.dina , q.matrix=sim.qmatrix )
summary(mod)

#############################################################################
# EXAMPLE 3: MCDINA model with polytomous attributes
#############################################################################

data(data.cdm02)
dat <- data.cdm02$data
q.matrix <- data.cdm02$q.matrix

# estimate model with polytomous attribute B1
mod1 <- mcdina( dat , q.matrix=q.matrix )
summary(mod1)

Run the code above in your browser using DataLab