tests/testthat/text-GDINAextract.R

test_that("checking GDINA extract calculation", {

  Q <- matrix(c(1,0,
                0,1,
                1,1),ncol = 2,byrow = TRUE)

  itempar <- list(c(0.1,0.9),
                  c(0.2,0.8),
                  c(0.1,0.2,0.3,0.8))

  Q <- Q[rep(1:3,3),]
  itempar <- itempar[rep(1:3,3)]

  set.seed(123)
  dat <- matrix(c(1,	0,	0,	0,	0,	0,	1,	0,	0,	10,
                  1,	0,	1,	1,	1,	1,	1,	1,	1,	20,
                  1,	0,	0,	0,	0,	0,	1,	1,	0,	10,
                  0,	1,	1,	1,	1,	1,	1,	1,	1,	20,
                  1,	1,	1,	1,	1,	1,	1,	1,	1,	60,
                  0,	0,	0,	0,	1,	0,	0,	0,	0,	30,
                  0,	1,	1,	0,	1,	1,	0,	1,	0,	20,
                  1,	1,	1,	1,	1,	0,	1,	1,	0,	10,
                  0,	1,	0,	0,	0,	0,	0,	1,	0,	10,
                  1,	1,	0,	1,	0,	0,	1,	0,	1,	10,
                  1,	0,	0,	1,	1,	1,	1,	0,	1,	10,
                  1,	1,	0,	0,	0,	1,	0,	1,	0,	10,
                  0,	1,	1,	0,	1,	0,	0,	0,	0,	10,
                  0,	1,	0,	0,	0,	0,	0,	0,	0,	50,
                  1,	1,	0,	1,	1,	1,	1,	1,	0,	10,
                  0,	0,	0,	0,	0,	0,	1,	0,	0,	20,
                  0,	0,	0,	0,	0,	0,	1,	1,	0,	10,
                  1,	0,	0,	1,	1,	0,	0,	0,	0,	10,
                  1,	0,	0,	1,	0,	1,	1,	1,	1,	10,
                  1,	1,	0,	1,	1,	0,	1,	1,	0,	10,
                  0,	0,	1,	0,	1,	0,	0,	1,	1,	10,
                  0,	1,	1,	0,	1,	0,	0,	1,	0,	20,
                  1,	1,	1,	1,	1,	1,	1,	0,	0,	20,
                  0,	1,	0,	0,	0,	1,	0,	1,	0,	10,
                  1,	1,	1,	0,	1,	0,	0,	1,	0,	10,
                  1,	0,	0,	1,	0,	0,	1,	0,	1,	40,
                  1,	1,	1,	0,	0,	1,	1,	1,	0,	10,
                  1,	1,	1,	1,	1,	0,	1,	1,	1,	40,
                  0,	1,	0,	0,	1,	0,	0,	1,	0,	20,
                  1,	1,	0,	0,	0,	1,	0,	1,	1,	10,
                  0,	0,	0,	0,	0,	0,	0,	0,	0,	90,
                  0,	1,	0,	1,	0,	0,	1,	0,	0,	20,
                  0,	0,	0,	0,	0,	0,	1,	1,	1,	10,
                  1,	0,	1,	1,	1,	0,	1,	0,	0,	10,
                  1,	1,	0,	1,	0,	0,	1,	0,	0,	20,
                  1,	0,	0,	1,	0,	0,	1,	1,	0,	20,
                  0,	0,	0,	0,	0,	1,	0,	0,	1,	20,
                  1,	0,	0,	1,	0,	1,	1,	1,	0,	10,
                  1,	0,	0,	1,	0,	0,	1,	0,	0,	30,
                  1,	1,	1,	1,	1,	1,	0,	1,	1,	10,
                  0,	0,	0,	1,	0,	0,	1,	0,	1,	10,
                  1,	0,	0,	1,	1,	0,	1,	0,	0,	20,
                  0,	0,	1,	0,	1,	0,	0,	1,	0,	10,
                  0,	0,	0,	0,	0,	0,	0,	1,	0,	20,
                  1,	0,	0,	1,	0,	1,	1,	0,	0,	30,
                  1,	1,	1,	1,	1,	1,	1,	1,	0,	10,
                  1,	1,	1,	1,	0,	1,	1,	1,	1,	10,
                  1,	0,	1,	1,	1,	1,	0,	1,	1,	10,
                  0,	1,	0,	0,	0,	0,	0,	1,	1,	10,
                  0,	1,	0,	0,	1,	1,	0,	1,	0,	10,
                  0,	1,	1,	1,	1,	1,	0,	1,	1,	10,
                  0,	1,	1,	1,	0,	1,	1,	1,	1,	10,
                  0,	1,	1,	1,	1,	0,	0,	1,	1,	10,
                  0,	0,	0,	0,	1,	1,	0,	1,	0,	10,
                  0,	0,	1,	1,	1,	0,	1,	0,	0,	10,
                  0,	1,	0,	1,	0,	1,	0,	0,	0,	10,
                  1,	1,	1,	1,	0,	0,	1,	1,	0,	10,
                  0,	1,	0,	0,	1,	0,	0,	1,	1,	10),ncol = 10,byrow = TRUE)

  dat <- dat[rep(1:nrow(dat),dat[,10]),1:9]
  est <- GDINA(dat,Q,catprob.parm = itempar,model = "GDINA",control=list(conv.crit = 0.0001))


  expect_equal(est$testfit$Deviance,9449.704, tolerance = .02)
  expect_equal(extract(est,"AIC"),9503.704, tolerance = .02)
  expect_equal(extract(est,"att.dist"),"saturated")
  expect_equal(extract(est,"att.prior"),c(0.2708239,0.2998923,0.1588651,0.2704186), tolerance = .02)
  expect_equal(extract(est,"att.str"),NULL)
  expect_equal(extract(est,"BIC"),9636.213, tolerance = .02)
  expect_equal(extract(est,"dif.p"),9.103323e-05, tolerance = .02)
  expect_equal(extract(est,"dif.prior"),3.174468e-05, tolerance = .02)
  expect_equal(extract(est,"dif.LL"),0.007430699, tolerance = .02)
  dis <- matrix(c(0.7405349,	0.13438509,
                  0.599942,	0.08818324,
                  0.9566728,	0.16014025,
                  0.9459908,	0.21929755,
                  0.6548613,	0.10506696,
                  0.6205445,	0.05781747,
                  0.794119,	0.15453654,
                  0.7051567,	0.12182567,
                  0.6143112,	0.06041622),ncol = 2,byrow = T)
  expect_equal(max(abs(as.matrix(extract(est,"discrim"))-dis))<0.001,TRUE)


})
Wenchao-Ma/GDINA documentation built on Nov. 13, 2022, 5:35 a.m.