Learn R Programming

CDM (version 2.7-7)

din.validate.qmatrix: Q-Matrix Validation (Q-Matrix Modification) for Mixed DINA/DINO Model

Description

Q-matrix entries can be modified by the Q-matrix validation method of de la Torre (2008). After estimating a mixed DINA/DINO model using the din function, item parameters and the item discrimination parameters $IDI_j$ are recalculated. Q-matrix rows are determined by maximizing the estimated item discrimination index $IDI_j = 1-s_j -g_j$.

Usage

din.validate.qmatrix(object, digits = 3, print = TRUE)

Arguments

object
Object of class din
digits
Number of digits for rounding the output matrix
print
An optional logical indicating whether the function should print the progress of iteration in the estimation process.

Value

  • A list with following entries:
  • coef.modifiedEstimated parameters by applying Q-matrix modifications
  • coef.modified.shortA shorted matrix of coef.modified. Only Q-matrix rows which increase the $IDI$ are displayed.
  • q.matrix.propThe proposed Q-matrix by Q-matrix validation.

References

de la Torre, J. (2008). An empirically based method of Q-matrix validation for the DINA model: Development and applications. Journal of Educational Measurement, 45, 343-362.

See Also

The mixed DINA/DINO model can be estimated with din. See also the Qrefine function in the NPCD package.

Examples

Run this code
#############################################################################
# SIMULATED EXAMPLE 1: Detection of a mis-specified Q-matrix
#############################################################################

set.seed(679)
# specify true Q-matrix
q.matrix <- matrix( 0 , 12 , 3 )
q.matrix[1:3,1] <- 1
q.matrix[4:6,2] <- 1
q.matrix[7:9,3] <- 1
q.matrix[10,] <- c(1,1,0)
q.matrix[11,] <- c(1,0,1)
q.matrix[12,] <- c(0,1,1)
# simulate data
dat <- sim.din( N=4000 , q.matrix)$dat
# incorrectly modify Q-matrix rows 1 and 10
Q1 <- q.matrix
Q1[1,] <- c(1,1,0)
Q1[10,] <- c(1,0,0)
# estimate DINA model
mod <- din( dat , q.matr = Q1, rule = "DINA")
# apply Q-matrix validation
res <- din.validate.qmatrix( mod )  
## item itemindex Skill1 Skill2 Skill3 guess  slip   IDI qmatrix.orig IDI.orig delta.IDI max.IDI
## I001         1      1      0      0 0.309 0.251 0.440            0    0.431     0.009   0.440
## I010        10      1      1      0 0.235 0.329 0.437            0    0.320     0.117   0.437
## I010        10      1      1      1 0.296 0.301 0.403            0    0.320     0.083   0.437
##   
##   Proposed Q-matrix:
##   
##          Skill1 Skill2 Skill3
##   Item1       1      0      0
##   Item2       1      0      0
##   Item3       1      0      0
##   Item4       0      1      0
##   Item5       0      1      0
##   Item6       0      1      0
##   Item7       0      0      1
##   Item8       0      0      1
##   Item9       0      0      1
##   Item10      1      1      0
##   Item11      1      0      1
##   Item12      0      1      1

#*****************
# Q-matrix estimation ('Qrefine') in the NPCD package
#*****************

library(NPCD)
Qrefine.out <- Qrefine( dat, Q1, gate="AND", max.ite=50)
print(Qrefine.out)
##   The modified Q-matrix
##           Attribute 1 Attribute 2 Attribute 3
##   Item 1            1           0           0
##   Item 2            1           0           0
##   Item 3            1           0           0
##   Item 4            0           1           0
##   Item 5            0           1           0
##   Item 6            0           1           0
##   Item 7            0           0           1
##   Item 8            0           0           1
##   Item 9            0           0           1
##   Item 10           1           1           0
##   Item 11           1           0           1
##   Item 12           0           1           1
##   
##   The modified entries
##        Item Attribute
##   [1,]    1         2
##   [2,]   10         2

plot(Qrefine.out)

Run the code above in your browser using DataLab