# For further details see http://jutze.com/research/2016-schult-sparfeldt-pirls-timss # MC vs CR: a nice study of test information functions (or rather their inverse, i.e., standard error functions) # # compiled by Johannes Schult (jutze@jutze.com) # last updated: 2014-04-07 # In plotIRT, the actual R function adds CR and MC item curves up; you just have to specify a, b, ax, b1, b2 etc. # I modified the original PlotIRT commands in order to obtain the inverse of the test information function # NB: Run PlotIRTI.R before continuing! source("W:/PlotIRTI.R") mylinewidth = 3 # # # # # # IGLU # # # # # # ### half 1 # half 1 items 3pl - MC only iglu2006 <- read.table("W:/IGLU2006/iglu2006half1itemsmc.csv") half1mca <- iglu2006$V1 half1mcb <- iglu2006$V2 half1mcc <- iglu2006$V3 # normalmetric=T - see http://timss.bc.edu/methods/pdf/TP11_Scaling_Methodology.pdf (page 1) # half 1 - CR only # items 3pl (2 categories) iglu2006 <- read.table("W:/IGLU2006/iglu2006half1items3plcr.csv") half1cra <- iglu2006$V1 half1crb <- iglu2006$V2 half1crc <- iglu2006$V3 iglu2006items3cat <- read.table("W:/IGLU2006/iglu2006half1items3catcr.csv") iglu2006items4cat <- read.table("W:/IGLU2006/iglu2006half1items4catcr.csv") half1craj <- c(iglu2006items3cat$V1,iglu2006items4cat$V1) items3cat <- length(iglu2006items3cat[,1]) items4cat <- length(iglu2006items4cat[,1]) b3 <- vector("list", length=items3cat) z <- 0 while(z < items3cat) { z <- z + 1 b3[[z]] <- c(iglu2006items3cat[z,2],iglu2006items3cat[z,3]) print(z) } b4 <- vector("list", length=(items4cat)) z <- 0 while(z < (items4cat)) { z <- z + 1 b4[[z]] <- c(iglu2006items4cat[z,2],iglu2006items4cat[z,3],iglu2006items4cat[z,4]) print(z) } half1crbj <- append(b3,b4) ### half 2 # half 2 items 3pl - MC only iglu2006 <- read.table("W:/IGLU2006/iglu2006half2itemsmc.csv") half2mca <- iglu2006$V1 half2mcb <- iglu2006$V2 half2mcc <- iglu2006$V3 # half 2 - CR only # items 3pl (2 categories) iglu2006 <- read.table("W:/IGLU2006/iglu2006half2items3plcr.csv") half2cra <- iglu2006$V1 half2crb <- iglu2006$V2 half2crc <- iglu2006$V3 iglu2006items3cat <- read.table("W:/IGLU2006/iglu2006half2items3catcr.csv") iglu2006items4cat <- read.table("W:/IGLU2006/iglu2006half2items4catcr.csv") half2craj <- c(iglu2006items3cat$V1,iglu2006items4cat$V1) items3cat <- length(iglu2006items3cat[,1]) items4cat <- length(iglu2006items4cat[,1]) b3 <- vector("list", length=items3cat) z <- 0 while(z < items3cat) { z <- z + 1 b3[[z]] <- c(iglu2006items3cat[z,2],iglu2006items3cat[z,3]) print(z) } b4 <- vector("list", length=(items4cat)) z <- 0 while(z < (items4cat)) { z <- z + 1 b4[[z]] <- c(iglu2006items4cat[z,2],iglu2006items4cat[z,3],iglu2006items4cat[z,4]) print(z) } half2crbj <- append(b3,b4) ### mc + mc # create half1mc+half2mc scale curve half1mcahalf2mca <- c(half1mca,half2mca) half1mcbhalf2mcb <- c(half1mcb,half2mcb) half1mcchalf2mcc <- c(half1mcc,half2mcc) ### cr + cr half1crahalf2cra <- c(half1cra,half2cra) half1crbhalf2crb <- c(half1crb,half2crb) half1crchalf2crc <- c(half1crc,half2crc) half1crajhalf2craj <- c(half1craj,half2craj) half1crbjhalf2crbj <- append(half1crbj,half2crbj) ### mc + cr half1mcahalf2cra <- c(half1mca,half2cra) half1mcbhalf2crb <- c(half1mcb,half2crb) half1mcchalf2crc <- c(half1mcc,half2crc) ### cr + mc half1crahalf2mca <- c(half1cra,half2mca) half1crbhalf2mcb <- c(half1crb,half2mcb) half1crchalf2mcc <- c(half1crc,half2mcc) ### graphs for manuscript IGLUhalf1mcahalf2mca <- half1mcahalf2mca IGLUhalf1mcbhalf2mcb <- half1mcbhalf2mcb IGLUhalf1mcchalf2mcc <- half1mcchalf2mcc IGLUhalf1crahalf2cra <- half1crahalf2cra IGLUhalf1crbhalf2crb <- half1crbhalf2crb IGLUhalf1crchalf2crc <- half1crchalf2crc IGLUhalf1crajhalf2craj <- half1crajhalf2craj IGLUhalf1crbjhalf2crbj <- half1crbjhalf2crbj IGLUhalf1mcahalf2cra <- half1mcahalf2cra IGLUhalf1mcbhalf2crb <- half1mcbhalf2crb IGLUhalf1mcchalf2crc <- half1mcchalf2crc IGLUhalf2craj <- half2craj IGLUhalf2crbj <- half2crbj IGLUhalf1crahalf2mca <- half1crahalf2mca IGLUhalf1crbhalf2mcb <- half1crbhalf2mcb IGLUhalf1crchalf2mcc <- half1crchalf2mcc IGLUhalf1craj <- half1craj IGLUhalf1crbj <- half1crbj # # # # # # TIMSS # # # # # # ### half 1 # half 1 items 3pl - MC only timss2007 <- read.table("W:/TIMSS2007/timss2007half1itemsmc.csv") #head(timss2007) half1mca <- timss2007$V1 half1mcb <- timss2007$V2 half1mcc <- timss2007$V3 mylinetype <- 1 PlotIRTI(a=half1mca,b=half1mcb,c=half1mcc,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="brown") # normalmetric=T - see http://timss.bc.edu/methods/pdf/TP11_Scaling_Methodology.pdf (page 1) # half 1 - CR only # items 3pl (2 categories) timss2007 <- read.table("W:/TIMSS2007/timss2007half1items3plcr.csv") half1cra <- timss2007$V1 half1crb <- timss2007$V2 half1crc <- timss2007$V3 timss2007items3cat <- read.table("W:/TIMSS2007/timss2007half1items3catcr.csv") half1craj <- timss2007items3cat$V1 items3cat <- length(timss2007items3cat[,1]) b3 <- vector("list", length=items3cat) z <- 0 while(z < items3cat) { z <- z + 1 b3[[z]] <- c(timss2007items3cat[z,2],timss2007items3cat[z,3]) print(z) } half1crbj <- b3 mylinetype <- 2 PlotIRTI(a=half1cra,b=half1crb,c=half1crc,aj=half1craj,bj=half1crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="brown",appendlines = TRUE) ### half 2 # half 2 items 3pl - MC only timss2007 <- read.table("W:/TIMSS2007/timss2007half2itemsmc.csv") half2mca <- timss2007$V1 half2mcb <- timss2007$V2 half2mcc <- timss2007$V3 #mylinetype <- 1 #thecol <- "black" #PlotIRTI(a=half2mca,b=half2mcb,c=half2mcc,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T) # half 2 - CR only # items 3pl (2 categories) timss2007 <- read.table("W:/TIMSS2007/timss2007half2items3plcr.csv") half2cra <- timss2007$V1 half2crb <- timss2007$V2 half2crc <- timss2007$V3 timss2007items3cat <- read.table("W:/TIMSS2007/timss2007half2items3catcr.csv") half2craj <- timss2007items3cat$V1 items3cat <- length(timss2007items3cat[,1]) b3 <- vector("list", length=items3cat) z <- 0 while(z < items3cat) { z <- z + 1 b3[[z]] <- c(timss2007items3cat[z,2],timss2007items3cat[z,3]) print(z) } half2crbj <- b3 #mylinetype <- 1 #thecol <- "black" ### mc + mc # create half1mc+half2mc scale curve half1mcahalf2mca <- c(half1mca,half2mca) half1mcbhalf2mcb <- c(half1mcb,half2mcb) half1mcchalf2mcc <- c(half1mcc,half2mcc) mylinetype <- 1 PlotIRTI(a=half1mcahalf2mca,b=half1mcbhalf2mcb,c=half1mcchalf2mcc,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="black",appendlines = TRUE) ### cr + cr half1crahalf2cra <- c(half1cra,half2cra) half1crbhalf2crb <- c(half1crb,half2crb) half1crchalf2crc <- c(half1crc,half2crc) half1crajhalf2craj <- c(half1craj,half2craj) half1crbjhalf2crbj <- append(half1crbj,half2crbj) mylinetype <- 2 PlotIRTI(a=half1crahalf2cra,b=half1crbhalf2crb,c=half1crchalf2crc,aj=half1crajhalf2craj,bj=half1crbjhalf2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="black",appendlines = TRUE) ### mc + cr half1mcahalf2cra <- c(half1mca,half2cra) half1mcbhalf2crb <- c(half1mcb,half2crb) half1mcchalf2crc <- c(half1mcc,half2crc) mylinetype <- 3 PlotIRTI(a=half1mcahalf2cra,b=half1mcbhalf2crb,c=half1mcchalf2crc,aj=half2craj,bj=half2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="red",appendlines = TRUE) ### cr + mc half1crahalf2mca <- c(half1cra,half2mca) half1crbhalf2mcb <- c(half1crb,half2mcb) half1crchalf2mcc <- c(half1crc,half2mcc) mylinetype <- 3 PlotIRTI(a=half1crahalf2mca,b=half1crbhalf2mcb,c=half1crchalf2mcc,aj=half1craj,bj=half1crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=1.01,normalmetric=T,testcol="violet",appendlines = TRUE) graphics.off() ### Figure 1 for manuscript # IGLU ### mc + mc mylinetype <- 1 PlotIRTI(a=IGLUhalf1mcahalf2mca,b=IGLUhalf1mcbhalf2mcb,c=IGLUhalf1mcchalf2mcc,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,xlab = "Reading Proficiency (?)",normalmetric=T,testcol="gray70") ### cr + cr mylinetype <- 3 PlotIRTI(a=IGLUhalf1crahalf2cra,b=IGLUhalf1crbhalf2crb,c=IGLUhalf1crchalf2crc,aj=IGLUhalf1crajhalf2craj,bj=IGLUhalf1crbjhalf2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray25",appendlines = TRUE) ### mc + cr mylinetype <- 2 PlotIRTI(a=IGLUhalf1mcahalf2cra,b=IGLUhalf1mcbhalf2crb,c=IGLUhalf1mcchalf2crc,aj=IGLUhalf2craj,bj=IGLUhalf2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray55",appendlines = TRUE) ### cr + mc mylinetype <- 4 PlotIRTI(a=IGLUhalf1crahalf2mca,b=IGLUhalf1crbhalf2mcb,c=IGLUhalf1crchalf2mcc,aj=IGLUhalf1craj,bj=IGLUhalf1crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray40",appendlines = TRUE) legend('topright', legend = c("MC&MC","MC&CR","CR&MC","CR&CR"), col = c("gray70","gray55","gray40","gray25"), lwd = mylinewidth, lty = c(1,2,4,3)) savePlot(filename = "W:/grmcvscr/igluIall4.emf",type = c("emf")) # TIMSS ### mc + mc mylinetype <- 1 PlotIRTI(a=half1mcahalf2mca,b=half1mcbhalf2mcb,c=half1mcchalf2mcc,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=42,xlab = "Mathematics Performance (?)",normalmetric=T,testcol="gray70") ### cr + cr mylinetype <- 3 PlotIRTI(a=half1crahalf2cra,b=half1crbhalf2crb,c=half1crchalf2crc,aj=half1crajhalf2craj,bj=half1crbjhalf2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray25",appendlines = TRUE) ### mc + cr mylinetype <- 2 PlotIRTI(a=half1mcahalf2cra,b=half1mcbhalf2crb,c=half1mcchalf2crc,aj=half2craj,bj=half2crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray55",appendlines = TRUE) ### cr + mc mylinetype <- 4 PlotIRTI(a=half1crahalf2mca,b=half1crbhalf2mcb,c=half1crchalf2mcc,aj=half1craj,bj=half1crbj,TestI=T,width=6,szaxis=1.1,szlabel=1.1,ymax=40,normalmetric=T,testcol="gray40",appendlines = TRUE) legend('topright', legend = c("MC&MC","MC&CR","CR&MC","CR&CR"), col = c("gray70","gray55","gray40","gray25"), lwd = mylinewidth, lty = c(1,2,4,3)) savePlot(filename = "W:/grmcvscr/timssIall4.emf",type = c("emf")) #savePlot(filename = "W:/grmcvscr/Iall4.emf",type = c("emf")) # SO FAR, SO GOOD