Dear R-List, 


I tried to fit a partial credit model using the "pcmdat" from eRm-package comparing the results of mirt, eRm, ltm and winsteps. 

The results where quite different, though. I cannot figure out what went wrong and I do not know which result I can rely on.

This is what I did in R

library(mirt)
#load(file="u3.RData")
mirt<-mirt(as.data.frame(pcmdat),1,itemtype="graded",constrain=list(1,5,9,13,17,21,25)) # I was assuming that a GRM with constrained discrimination parameter would equal a PCM
cf<-as.data.frame(unlist(coef(mirt)))
md1<-cf[c(2,6,10,14,18,22,26),]
md2<-cf[c(3,7,11,15,19,23,27),]
md3<-cf[c(4,8,12,16,20,24,NA),]
mirt<-as.data.frame(cbind(md1,md2,md3))
mirt[7,3]<-0.5*rowSums(mirt[7,1:2])#to get the mean of md1+md2 when dividing by 3 to equal eRm results
mirt$loc<-rowSums(mirt)/3
rownames(mirt)<-c("x1","x2","x3","x4","x5","x6","x7")
mirt<-round(mirt[order(mirt$loc,decreasing=TRUE),],2)
mirt #I get the following order of item parameters: x6,x5,x1,x4,x7,x3,x2

library(eRm)
res<-PCM(pcmdat)
pres<-person.parameter(res)
thres<-thresholds(res)
erm<-thres$threshtable
erm<-as.data.frame(erm)
names(erm)<-c("loc","thres1","thres2","thres3")
rownames(erm)<-c("x1","x2","x3","x4","x5","x6","x7")
erm<-round(erm[order(erm$loc,decreasing=TRUE),],2)
erm<-erm[c(2:4,1)]
erm #I get the following order of item parameters: x2,x3,x7,x1,x4,x5,x6

library(ltm)
grm<-grm(as.data.frame(pcmdat),constrained=TRUE,IRT.param=TRUE)
ltm<-as.data.frame(unlist(coef.grm(grm)))
ld1<-ltm[c(1,5,9,13,17,21,25),]
ld2<-ltm[c(2,6,10,14,18,22,26),]
ld3<-ltm[c(3,7,11,15,19,23,NA),]
ltm<-as.data.frame(cbind(ld1,ld2,ld3))
ltm[7,3]<-0.5*rowSums(ltm[7,1:2])#to get the mean of ld1+ld2 when dividing by 3
names(ltm)<-c("thres1","thres2","thres3")
rownames(ltm)<-c("x1","x2","x3","x4","x5","x6","x7")
ltm$loc<-rowSums(ltm)/3
ltm<-round(ltm[order(ltm$loc,decreasing=TRUE),],2)
ltm #I get the following order of item parameters:x2,x3,x4,x7,x1,x5,x6

And this is what I got using winsteps.
         |           |   INFIT  |  OUTFIT  |
 item|   loc   |MNSQ  ZSTD|MNSQ  ZSTD|
------|---------+----------+----------+
 x7   |   .49   |     .62  -1.4|1.05    .3|
 x2   |   .30       |1.02    .2|1.27    .9|
 x3   |   .24   |    1.14    .6|1.05    .3|
 x4   |   .00   |    .88   -.4| .80   -.6|
 x1   |  -.11       | .91   -.3| .88   -.3|
 x5   |  -.28   |    1.16    .7|1.08    .4|
 x6   |  -.63   |    1.17    .7|1.08    .4|

Sorry if this is a silly question, but I would have thought that I could validate my results by comparing them to winsteps. How can I reproduce the  results using any R-package?

Thank you for any advice.

All the best.

Alain
	[[alternative HTML version deleted]]

