DIF with Polytomous Items

610 views
Skip to first unread message

Chris Castille

unread,
Aug 4, 2016, 3:48:38 PM8/4/16
to mirt-package
Hi there!

I'm new to MIRT but already enjoying the suite of tools this package provides. Thanks Phil et al!

My question concerns using MIRT to test for DIF in an 11 item personality test with 5-point Likert scaled items (1 = "strongly disagree" to 5 = "strongly agree"). After running my multi group model, I received this error message:

Error: Multiple Group model will not be identified without proper constraints (groups contain missing data patterns where item responses have been completely ommited or, alternatively, the number of categories within each group is not equal to the total number of categories)

Now, I have removed all individuals with missing data, so this isn't the issue. What seems to be the case is that not all response options have been selected for all of my items. For some items, only the third, fourth, and fifth response options were selected. 

If this is the issue, what would you advise me to do to overcome this?

Thanks in advance!

Chris

Phil Chalmers

unread,
Aug 4, 2016, 9:41:24 PM8/4/16
to Chris Castille, mirt-package
Hi Chris, 

The best strategy here is to apply equality constraints across the groups so that the missing categories can 'borrow strength' from the group where there is information; this effectively identifies them as the estimation algorithms essentially treat these parameters as if they were ghosted in. You may find this post helpful because it relates to the problem of vertical scaling (it's a particular kind, because some categories will be unlikely to be answered by some groups if their latent distribution is much higher/lower). https://groups.google.com/forum/#!searchin/mirt-package/vertical$20scaling%7Csort:relevance/mirt-package/OM8Fy6D1HBw/kJl7yvAQBgAJ

The following example shows one quick answer to the problem, by simply applying equality constraints for the problematic item. Using the mirt.model syntax can be more precise, though the philosophy is the same (the important part is to constrain the intercepts to be equal....for graded response models, this is typically best done for all intercepts to avoid 'out of order' estimation problems. Other itemtypes, like gpcm, shouldn't have this issue). Cheers.

Phil

#------------------------------------------------------
library(mirt)

set.seed(12345)
nitems <- 15
N <- 1000

# parameters
a <- matrix(abs(rnorm(nitems,1,.3)), ncol=1)
diffs <- t(apply(matrix(runif(nitems*4, .3, 1), nitems), 1, cumsum))
diffs <- -(diffs - rowMeans(diffs))
d <- diffs + rnorm(nitems)

dat1 <- simdata(a, d, N, itemtype = 'graded')
dat2 <- simdata(a, d, N, itemtype = 'graded', mu = -0.5, sigma = matrix(1.5))
group <- c(rep('D1', N), rep('D2', N))

# remove some categories in one group
table(dat1[,1])
dat1[dat1[,1] == 1, 1] <- 2
dat1[dat1[,1] == 3, 1] <- 4
dat <- rbind(dat1, dat2)

# error
mod <- multipleGroup(dat, 1, group=group)
by(dat[,1], group, table)

# apply constraints (requires the second and fourth intercepts to be equal)
mod <- multipleGroup(dat, 1, group=group, invariance = colnames(dat)[1])

coef(mod, simplify=TRUE) # notice the first items are equal


--
You received this message because you are subscribed to the Google Groups "mirt-package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mirt-package+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Chris Castille

unread,
Aug 5, 2016, 10:55:56 AM8/5/16
to mirt-package, chrisca...@gmail.com
Thanks Phil! That did the trick!
To unsubscribe from this group and stop receiving emails from it, send an email to mirt-package...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages