mcdina function

Multiple Choice DINA Model

Multiple Choice DINA Model

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,,Kj1,\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.

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, ...) ## S3 method for class 'mcdina' print(x, ...)

Arguments

  • dat: A required N×JN \times J data matrix containing integer responses (1, 2, \ldots, KK) of NN respondents to JJ test items.

  • q.matrix: A required matrix specifying which item category is intended to measure which skill. The Q-matrix has K+2K+2 columns for a model with KK 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 JJ 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 2K2^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.

Details

The multiple choice DINA model defines for each item category jcjc the necessary skills to master this attribute. Therefore, the vector of skills α\bold{\alpha} is transformed into item-specific latent responses ηj\eta_{j} which are functions of α\bold{\alpha} and Q-matrix entries qjcq_{jc}

(just like in the DINA model). If there are KjK_j item categories for item jj, then there exist at most KjK_j values of the latent response ηj\eta_j.

The multiple choice DINA model estimates the item response function as

P(Xnj=kηnj=l)=pjkl P( X_{nj}=k | \eta_{nj}=l )=p_{jkl}

with the constraint kpjkl=1\sum_k p_{jkl}=1 .

Returns

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.

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.

Note

If dat and q.matrix correspond to the 'ordinary format' which is used in gdina, then the function mcdina will detect it and convert it into the necessary format (see Example 2).

See Also

See din for estimating the DINA/DINO model and gdina

for estimating the GDINA model.

Examples

############################################################################# # 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) ## End(Not run)