A quick reference to GDINA R package

What can this package do?

This package provides a framework for conducting a variety of cognitively diagnostic analyses for dichotomous and polytomous responses.

For more details, see here

For an example of how to use the package, see here

How to use this package?

  • To estimate various CDMs, use GDINA() function
  • To extract item and person parameters from GDINA estimates, use coef() and personparm() functions, respectively
  • To extract other estimation components, use extract() function
  • To evaluate absolute model fit, use modelfit() or itemfit() functions
  • To evaluate relative model fit, use AIC(), BIC() or deviance() functions
  • To validate Q-matrix, use Qval() function
  • To detect differential item functioning, use dif() function
  • To run graphical user interface, use startGDINA() function
  • To simulate data from various CDMs, use simGDINA() function

Visit here for an online reference

A quick example

Below is an illustration showing some analyses that you could do using the package. You can copy the code, paste and run it in R console. For a more comprehensive example, see this tutorial.

  1. Load the package and assume we have the following item response matrix and Q-matrix:
library(GDINA)
dat <- sim10GDINA$simdat
Q <- matrix(c(1,0,0,
              0,1,0,
              0,0,1,
              1,0,1,
              0,1,1,
              1,1,0,
              0,0,1,
              1,0,0,
              1,1,1,
              1,0,1),byrow = T,ncol = 3)
  1. Estimate the G-DINA model:
est <- GDINA(dat = dat, Q = Q, model = "GDINA")
  1. Conduct the Q-matrix validation. By default, it implements de la Torre and Chiu’s (2016) algorithm using a fixed cutoff. This is fast but sometimes suggests too many modifications.
Qv <- Qval(est)
Qv

To avoid using fixed cutoffs and also take uncertainty in item parameter estimation into account, you may consider the stepwise method:

Qv2 <- Qval(est,method = "Wald")
Qv2

To further examine the q-vectors that are suggested to be modified, you can draw mesa plots:

plot(Qv, item = 9)
  1. Perform item-level model selection to see if the saturated G-DINA model can be simplified:
mc <- modelcomp(est)
mc
  1. Assess model-data fit at test and item levels:
# test level absolute fit
mft <- modelfit(est)
mft
# item level absolute fit
ift <- itemfit(est)
ift
summary(ift)
plot(ift)
  1. Calculate classification accuracy
CA(est)

More Examples

If you would like to contribute an example to this website, please send me your .Rmd file.