The equateIRT package computes:
Load the package equateIRT and the data
library("equateIRT") data("data2pl", package = "equateIRT")
Estimate a two parameter logistic model for 5 data sets with the R package mirt
library("mirt") m1 <- mirt(data2pl[[1]], SE = TRUE) m2 <- mirt(data2pl[[2]], SE = TRUE) m3 <- mirt(data2pl[[3]], SE = TRUE) m4 <- mirt(data2pl[[4]], SE = TRUE) m5 <- mirt(data2pl[[5]], SE = TRUE)
Create an object of class modIRT
(since package versione 2.5.0 it is possible to skip the import.mirt function)
mlist<- list(m1, m2, m3, m4, m5) test <- paste("test", 1:5, sep = "") mod2pl <- modIRT(est.mods = mlist, names = test, display = FALSE) coef(mod2pl$test1)[1:5]
The linkage plan
lplan<-linkp(mods = mod2pl) lplan
A graphic of the linkage plan with package sna
library(sna) par(mar=c(0, 0, 0, 0)) set.seed(6) gplot(lplan, displaylabels = TRUE, vertex.sides = 4, vertex.cex = 5, vertex.rot =45, usearrows = FALSE, label.pos = 5, label.cex = 1, vertex.col = 0)
Estimation of direct equating coefficients between Forms 1 and 2 using the mean-mean method.
NOTE: Item parameters are converted to the scale of Form 2.
l12 <- direc(mods = mod2pl, which = c(1,2), method = "mean-mean") l12 summary(l12)
Estimation of all direct equating coefficients between forms with common items using the mean-mean method
direclist2pl <- alldirec(mods = mod2pl, method = "mean-mean") direclist2pl
Direct equating coefficients for Forms 1 and 2
summary(direclist2pl, link="test1.test2")
Estimation of all chain equating coefficients of length 4
cec4 <- chainec(r = 4, direclist = direclist2pl) cec4
Chain equating coefficients for path {1, 2, 3, 4}
summary(cec4, path="test1.test2.test3.test4")
Estimation of all chain equating coefficients of length 4 from Form 1 to Form 4
cec14 <- chainec(r = 4, direclist = direclist2pl, f1 = "test1", f2 = "test4") cec14 summary(cec14)
Estimation of chain equating coefficient for path {1, 5, 4}
pth <- paste("test", c(1,5,4), sep = "") chainec154 <- chainec(direclist = direclist2pl, pths = pth) summary(chainec154)
NOTE: Item parameters are converted to the scale of Form 4.
When two forms are linked through more than one path, the equating coefficients can be averaged using the bisector method. Estimation of bisector equating coefficients:
ecall <- c(cec14, chainec154) fec <- bisectorec(ecall = ecall, weighted = TRUE, unweighted = TRUE) fec summary(fec)
Extract the equating coefficients
eqc(fec)
Extract item parameters of two forms being equated in the original scale and item parameters of the first form converted to the scale of the second form.
itm(fec, bistype = "weighted")
Equated scores with the true score equating method
score(fec, bistype = "weighted")
Equated scores with the observed score equating method
score(fec, method = "OSE", bistype = "weighted")
A comparison of equated scores obtained with 2 different chains, bisector and weighted bisector methods.
score(chainec154, scores = 17) score(cec4, path = "test1.test2.test3.test4", scores = 17) score(fec, bistype = "unweighted", scores = 17) score(fec, bistype = "weighted", scores = 17)
Load the data
data(dataDIF)
Create a dataset for each group and estimate a 2PL model for each group using the R package mirt
library(mirt) data1 <- dataDIF[dataDIF$group == 1, 1:20] data2 <- dataDIF[dataDIF$group == 2, 1:20] data3 <- dataDIF[dataDIF$group == 3, 1:20] mod1 <- mirt(data1, SE = TRUE) mod2 <- mirt(data2, SE = TRUE) mod3 <- mirt(data3, SE = TRUE)
Perform the test for DIF on two groups
res_diftest2 <- dif.test(est.mods = list(mod1, mod2)) res_diftest2
Perform the test for DIF on three groups
res_diftest3 <- dif.test(est.mods = list(mod1, mod2, mod3)) res_diftest3
It is possible to change the reference group, the equating method used, and to apply purification.
res_diftest3 <- dif.test(est.mods = list(mod1, mod2, mod3), reference = 2, method = "Haebara", purification = TRUE) res_diftest3
The identity test performs a statistical test to verify if the chain equating coefficients from one form to itself are A=1 and B=0.
data(est3pl) test <- paste("test", 1:5, sep = "") mod3pl <- modIRT(coef = est3pl$coef, var = est3pl$var, names = test, display = FALSE) direclist3pl <- alldirec(mods = mod3pl, method = "Haebara") pth3 <- paste("test", c(1:5,1), sep = "") chainec_circle <- chainec(direclist = direclist3pl, pths = pth3) summary(chainec_circle) id.test(chainec_circle)
The null hypothesis A=1 and B=0 is not rejected.
It is also possible to performs a statistical test to verify if the chain equating coefficients that link the same two forms are equal.
In the following example test 1 and 5 are linked through two different paths giving two different pairs of equating coefficients. The example uses the 3PL models and the Haebara method, though other options are possible.
pth3 <- paste("test", 1:5, sep = "") chainec3 <- chainec(direclist = direclist3pl, pths = pth3) ecall <- c(chainec3, direclist3pl["test1.test5"]) summary(chainec3) summary(direclist3pl$test1.test5) sd.test(ecall)
The null hypothesis of equality of the equating coefficients is not rejected.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.