din.validate.qmatrix function

Q-Matrix Validation (Q-Matrix Modification) for Mixed DINA/DINO Model

Q-Matrix Validation (Q-Matrix Modification) for Mixed DINA/DINO Model

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 IDIjIDI_j are recalculated. Q-matrix rows are determined by maximizing the estimated item discrimination index IDIj=1sjgjIDI_j=1-s_j -g_j.

din.validate.qmatrix(object, IDI_diff=.02, print=TRUE)

Arguments

  • object: Object of class din
  • IDI_diff: Minimum difference in IDI values for choosing a new Q-matrix vector
  • print: An optional logical indicating whether the function should print the progress of iteration in the estimation process.

Returns

A list with following entries: - coef.modified: Estimated parameters by applying Q-matrix modifications

  • coef.modified.short: A shortened matrix of coef.modified. Only Q-matrix rows which increase the IDIIDI are displayed.

  • q.matrix.prop: The proposed Q-matrix by Q-matrix validation.

References

Chiu, C. Y. (2013). Statistical refinement of the Q-matrix in cognitive diagnosis. Applied Psychological Measurement, 37, 598-618.

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 Chiu (2013) for an alternative estimation approach based on residual sum of squares which is implemented NPCD::Qrefine function in the NPCD package.

See the GDINA::Qval function in the GDINA package for extended functionality.

Examples

############################################################################# # 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 <- CDM::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 <- CDM::din( dat, q.matr=Q1, rule="DINA") # apply Q-matrix validation res <- CDM::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 ## Not run: #***************** # Q-matrix estimation ('Qrefine') in the NPCD package # See Chiu (2013, APM). #***************** library(NPCD) Qrefine.out <- NPCD::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) ## End(Not run)