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,…, 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, ...)
dat |
A required N \times J data matrix containing integer responses (1, 2, …, 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 |
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 |
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 |
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 |
digits |
Number of digits to display in |
file |
Optional file name for a file in which |
x |
Object of class |
... |
Further arguments to be passed. |
The multiple choice DINA model defines for each item category jc the necessary skills to master this attribute. Therefore, the vector of skills \bold{α} is transformed into item-specific latent responses η_{j} which are functions of \bold{α} 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 η_j.
The multiple choice DINA model estimates the item response function as
P( X_{nj}=k | η_{nj}=l )=p_{jkl}
with the constraint ∑_k p_{jkl}=1 .
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. |
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).
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.
############################################################################# # 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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.