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]]