Learn R Programming

CDM (version 7.4-19)

mcdina: Multiple Choice DINA Model

Description

The function mcdina implements the multiple choice DINA model (de la Torre, 2009; see also Ozaki, 2015; Chen & Zhou, 2017) 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 different 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 mcdina summary(object, digits=4, file=NULL, …)

# S3 method for mcdina print(x, …)

Arguments

dat

A required \(N \times J\) data matrix containing integer responses (1, 2, \(\ldots\), \(K\)) of \(N\) respondents to \(J\) test items.

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 the columns contains the 'ordinary' Q-matrix specification. See data.cdm01$q.matrix for the layout of such a Q-matrix.

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

item

Data frame with item parameters

posterior

Individual posterior distribution

likelihood

Individual likelihood

ic

List with information criteria

q.matrix

Used Q-matrix

pik

Array of item-category probabilities

delta

Array of item parameters

se.delta

Array of standard errors of item parameters

itemstat

Data frame containing item definitions

n.ik

Array of expected counts

deviance

Deviance

attribute.patt

Probabilities of latent classes

attribute.patt.splitted

Splitted attribute pattern

skill.patt

Marginal skill probabilities

MLE.class

Classified skills for each student (MLE)

MAP.class

Classified skills for each student (MAP)

EAP.class

Classified skills for each student (EAP)

dat

Used dataset

skillclasses

Used skill classes

group

Used group identifiers

lc

Data frame containing definitions of each item category

lr

Data frame containing the relation of each latent class and each item category

iter

Number of iterations

itempars

Used specification of item parameter estimation type

converged

Logical 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

Chen, J., & Zhou, H. (2017) Test designs and modeling under the general nominal diagnosis model framework. PLoS ONE 12(6), e0180016.

de la Torre, J. (2009). A cognitive diagnosis model for cognitively based multiple-choice options. Applied Psychological Measurement, 33, 163-183.

Ozaki, K. (2015). DINA models for multiple-choice items with few parameters: Considering incorrect answers. Applied Psychological Measurement, 39(6), 431-447.

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
# NOT RUN {
#############################################################################
# EXAMPLE 1: Multiple choice DINA model for data.cdm01 dataset
#############################################################################

data(data.cdm01, package="CDM")

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

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

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

# }
# NOT RUN {
#*** Model 3: Multiple group model with group-specific item parameters
mod3 <- CDM::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 <- CDM::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 <- CDM::mcdina( dat, q.matrix=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 <- CDM::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, package="CDM")
data(sim.qmatrix, package="CDM")

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

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

data(data.cdm02, package="CDM")
dat <- data.cdm02$data
q.matrix <- data.cdm02$q.matrix

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

Run the code above in your browser using DataLab