fitting "rating scale model"...

395 views
Skip to first unread message

KwonHyun Kim

unread,
Dec 7, 2015, 5:12:49 AM12/7/15
to mirt-package

  Hello,

  Is mirt able to fit "RSM; rating scale model" which is a constrained model of pcm..?

  I see "rsm" in 02-item_methods.R but it's commented in LoadPars.R

  So I wonder if it's okay to uncomment it to fit "RSM" (using Numerical Derivation) ?

  or is there any other convenient way to fit "RSM"? 

  If it's not possible in mirt, is there any other packages fitting RSM?

  I tried TAM, but the results are quite confusing, I seriously think it's not working because the estimation is not

  accurate even though N is 1e6

  
a = matrix(1, 4, 1)
d = matrix(seq(-2,2,len=4),4, 1)
d = cbind(0,d,d)
d = d+matrix(c(0,-1, 1), byrow=T, nrow=4, ncol=3)
d[,1]=0

dat <- mirt::simdata(a=a, d=d, N=100000, itemtype="gpcm")

mod1a <- TAM::tam.mml( resp=dat, control=list(maxiter=5000, progress=F, nodes=seq(-6,6,len=61),
                                              convD = .0001), irtmodel="RSM" )
summary(mod1a)
mod1a$item

  The result is

Item Parameters Xsi
          xsi se.xsi
Item_1  0.511  0.004
Item_2 -0.181  0.004
Item_3 -0.822  0.005
Item_4 -1.382  0.005
Cat1    1.400  0.006


  Could you tell us what's the problem of derivation in RSM so that we can look into it to see if I can solve it?





  

  

  

robi...@ipn.uni-kiel.de

unread,
Dec 14, 2015, 9:52:41 AM12/14/15
to mirt-package
I am not sure whether you really simulated from a rating scale model. Does not mirt parametrize d as "item intercepts"? Then, your code

d = matrix(seq(-2,2,len=4),4, 1)

would not be appropriate. I guess it should be rather

d <- outer( seq(-2,2,len=4) , 0:2 )


Alexander 

Phil Chalmers

unread,
Dec 14, 2015, 12:11:51 PM12/14/15
to robi...@ipn.uni-kiel.de, mirt-package
I imagine mirt just parametrizes the model differently. They should give the same results after some linear transformation (log-likelihoods should match though). The difference probably is that mirt sets the first item's rating scale coefficient to 0 rather than using the typical sum to 0 constraint for these models. 

So, to obtain the generalized partial credit models, just add the rating intercept to the respective category intercepts.

> mod <- mirt(Science, 1, 'grsm')
Iteration: 20, Log-Lik: -1621.351, Max-Change: 0.00009

> (items <- coef(mod, simplify=TRUE)$items)
                   a1   d1    d2    d3      c
Comfort 0.832 4.53 2.201 -1.23  0.000
Work    1.399 4.53 2.201 -1.23 -1.242
Future  1.672 4.53 2.201 -1.23 -0.364
Benefit 1.499 4.53 2.201 -1.23 -0.895

> (graded_ds <- items[,2:4] + items[,5])
                  d1    d2     d3
Comfort 4.530 2.201 -1.230
Work    3.288 0.959 -2.472
Future  4.166 1.837 -1.594
Benefit 3.635 1.306 -2.125

Of course, this is for the graded rating scale model, but the idea is the same for the rsm (the rsm itemtype is currently offline and commented out due to an unfinished/slow derivative term that is currently being evaluated numerically. I haven't gotten around to fixing yet). Cheers. 


--
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...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages