The final item pool

The SL items were removed, together with ill-fitting items. This resulted in 145 items:

a b
VM_385_Bakgården_1_kaka 5.0 -3.3
VM_386_Bakgården_2_gutten 1.4 -3.6
VM_388_Bakgården_4_Badebassenget 1.6 -3.6
VM_390_Bakgården_6_Verktøykassa 5.6 -2.1
VM_392_Bakgården_8_Løvetannen 1.5 -2.0
VM_394_Bakgården_10_Det.åpne.vinduet 1.0 -3.9
VM_395_Bakgården_11_Statuen 1.5 -3.1
VM_396_Bakgården_12_Den.minste.sykkelen 1.4 -3.2
VM_397_Bakgården_13_Den.største.sykkelen 2.3 -2.9
VM_399_Bakgården_15_Ballen.mellom.barna 1.2 -3.3
VM_400_Bakgården_16_Duken 1.5 -2.1
VM_401_Bakgården_17_Den.røde.buksa 1.0 -3.5
VM_403_Landskap_2_Ekornet 2.2 -2.3
VM_404_Landskap_3_reven 2.4 -2.3
VM_405_Landskap_4_Pinnsvinet 2.0 -2.2
VM_406_Landskap_5_Sola 1.6 -2.6
VM_407_Landskap_6_Bilen 1.9 -2.6
VM_408_Landskap_8_Toget 2.1 -2.6
VM_409_Landskap_7_Flyet 1.2 -3.0
VM_410_Landskap_9_Fuglen.i.treet 1.3 -2.9
VM_411_Landskap_10_Den.korteste.broa 1.0 -3.1
VM_412_Landskap_11_Det.nærmeste.treet 1.1 -3.4
VM_413_Landskap_12_båten.under.broa 1.2 -2.9
VM_417_Bondegård_1_høna 2.3 -1.3
VM_419_Bondegård_3_Lammet 1.7 -0.7
VM_420_Bondegård_4_føllet 1.6 0.0
VM_421_Bondegård_5_Kalven 1.8 -0.9
VM_422_Bondegård_6_Hustaket 1.8 -1.2
VM_423_Bondegård_7_Katten 1.9 -2.2
VM_424_Bondegård_8_Traktoren 2.2 -2.0
VM_425_Bondegård_9_Bonden 2.9 -0.8
VM_426_Bondegård_10_Bilen 1.3 -2.6
VM_427_Bondegård_11_Huset 1.2 -1.5
VM_429_Bondegård_13_Pipa 1.7 -2.3
VM_430_Bondegård_Låven 2.3 -0.9
VM_431_Bondegård_15_Det.øverste.vinduet 2.4 -1.5
VM_432_Bondegård_16_Den.eldste.personen 2.0 -0.8
VM_433_Bondegård_17_Kjolen 1.3 -2.4
VM_434_Bondegård_18_Høyet 3.1 -0.9
VM_435_Butikk_1_Pengene 2.7 -1.9
VM_436_Butikk_2_Tyven 2.5 -2.1
VM_437_Butikk_3_Bananene 4.4 -1.8
VM_438_Butikk_4_Brødene 3.2 -1.9
VM_439_Butikk_5_Brusflaskene 1.5 -1.8
VM_440_Butikk_6_Pærene 3.8 -1.8
VM_441_Butikk_7_Kaka 3.0 -2.0
VM_442_Butikk_8_Politimannen 3.0 -1.8
VM_443_Butikk_9_Melonene 2.9 -1.7
VM_444_Butikk_10_Avisene 2.5 -1.7
VM_445_butikk_11_Barnevogna 1.9 -1.8
VM_446_Butikk_12_Kunden 2.6 -1.4
VM_447_Butikk_13_Selgeren 1.3 -1.3
VM_448_Butikk_14_Hunden 2.4 -2.2
VM_449_Butikk_15_Appelsinene 2.6 -1.9
VM_450_Butikk_16_Smågodtet 1.7 -1.5
VM_451_Butikk_17_Den.yngste.personen 3.3 -1.4
VM_452_Butikk_18_Handlekurva 1.8 -2.0
VM_453_Klasserom_1_Læreren 1.5 -3.4
VM_454_Klasserom_2_Eleven.med.briller 1.9 -3.4
VM_455_Klasserom_3_Blyanten 1.0 -3.6
VM_457_Klasserom_5_Den.minste.pulten 1.7 -2.9
VM_458_Klasserom_Døra 2.1 -2.6
VM_460_Klasserom_7_Stiftemaskinen 1.7 -1.8
VM_461_Klasserom_8_Bøkene 1.2 -3.6
VM_462_Klasserom_9_Skolesekken 1.4 -3.1
VM_463_Klasserom_10_Matboksen 1.1 -4.1
VM_464_Klasserom_11_Bamsen 1.4 -3.6
VM_467_Klasserom_14_Saksa 1.1 -3.6
VM_469_Klasserom_16_Tavla 1.7 -3.4
VM_470_Klasserom_17_Jakka 3.4 -2.3
vok_214 1.0 -1.2
vok_215 1.7 -0.9
vok_216 1.5 -1.0
vok_220 1.0 0.6
vok_221 1.1 0.1
vok_222 1.2 0.1
vok_223 1.4 -0.4
vok_224 1.3 0.4
vok_229 1.4 -1.3
vok_230 0.9 0.7
vok_232 1.2 0.9
vok_233 1.2 -0.7
vok_235 1.3 -0.7
vok_237 2.2 -1.0
vok_238 1.8 -0.9
vok_240 2.1 -0.6
vok_241 3.5 -0.8
vok_242 3.7 -0.9
vok_243 2.6 -0.6
vok_244 1.6 -0.4
vok_245 3.8 -1.0
vok_246 1.6 -0.4
vok_247 1.2 1.6
vok_248 5.2 -1.0
vok_249 2.8 -1.2
vok_250 2.5 -0.4
vok_251 3.7 -0.9
vok_252 1.7 -1.6
vok_253 1.4 -2.8
vok_254 2.3 -1.8
vok_255 1.5 -1.5
vok_256 2.3 -1.3
vok_260 1.3 -0.5
vok_261 1.9 -1.2
vok_262 3.1 -1.5
vok_267 2.9 -1.3
vok_269 2.5 -1.1
vok_270 1.2 -0.2
vok_271 3.1 -1.2
vok_272 2.2 -1.3
vok_273 1.8 -0.8
vok_274 2.2 -1.0
vok_275 2.4 -1.4
vok_277 2.7 -0.8
vok_278 2.0 -0.7
vok_280 2.3 -1.3
vok_281 2.1 -0.7
vok_282 1.9 -0.1
vok_283 2.4 -0.7
vok_284 2.6 -0.2
vok_285 2.2 -1.3
vok_286 2.5 -0.9
vok_287 2.8 -0.7
vok_288 2.0 -1.0
vok_289 1.7 -0.2
vok_291 2.6 -0.6
vok_292 1.0 -1.0
vok_293 2.2 -2.0
vok_295 1.7 -1.5
vok_296 1.4 -1.0
vok_297 1.7 -1.3
vok_299 2.7 -1.0
vok_301 1.1 0.0
vok_303 1.4 -0.4
vok_304 3.0 -1.0
vok_305 2.4 -0.8
vok_307 2.8 -0.8
vok_308 1.9 -0.4
vok_309 1.4 0.0
vok_311 3.7 -0.8
vok_312 1.6 0.1
vok_313 1.0 1.0
vok_314 2.1 -0.7
vok_315 2.1 -1.0
vok_316 1.1 0.9

Scatterplot of discrimination vs difficulty

Simulations with fixed test length 25 and \(n=10^4\) students

n <- 10^4
truethetas <- seq(-2.2,2.2, length.out=n)
est.df <- data.frame(truetheta=truethetas)

NMAX <- 25
SEMTHR <- .01 # UNATTAINABLE SO LENGTH WILL BE 25 FOR ALL STUDENTS
est.df$NMAX <- NMAX; est.df$SE <- SEMTHR;

stop <- list(rule = c("precision","length"), thr = c(SEMTHR, NMAX))
res <- simulateRespondents(thetas = truethetas,
                           itemBank = bank,
                           start=start,
                           test = list(method = "WL", itemSelect = "MFI"), 
                           stop = stop)
## Simulation process:  0 %
## Simulation process:  10 %
## Simulation process:  20 %
## Simulation process:  30 %
## Simulation process:  40 %
## Simulation process:  50 %
## Simulation process:  60 %
## Simulation process:  70 %
## Simulation process:  80 %
## Simulation process:  90 %
## Simulation process:  100 %
cat(paste("WL, NMAX=", NMAX, "SE=", SEMTHR, "\n"))
## WL, NMAX= 25 SE= 0.01
plot(res)

## The plot was not captured!
cond.df <- data.frame(condTheta=res$condTheta, 
                      condBias=res$condBias,
                      condRMSE=res$condRMSE,
                      condnItems=res$condnItems,
                      condSE=res$condSE,
                      condMethod = "WL")

res <- simulateRespondents(thetas = truethetas,
                           itemBank = bank,
                           start=start,
                           test = list(method = "BM", itemSelect = "MFI"), 
                           stop = stop)
## Simulation process:  0 %
## Simulation process:  10 %
## Simulation process:  20 %
## Simulation process:  30 %
## Simulation process:  40 %
## Simulation process:  50 %
## Simulation process:  60 %
## Simulation process:  70 %
## Simulation process:  80 %
## Simulation process:  90 %
## Simulation process:  100 %
cat(paste("BM, NMAX=", NMAX, "SE=", SEMTHR, "\n"))
## BM, NMAX= 25 SE= 0.01
plot(res)

## The plot was not captured!
cond.df <- rbind(cond.df,data.frame(condTheta=res$condTheta, 
                      condBias=res$condBias,
                      condRMSE=res$condRMSE,
                      condnItems=res$condnItems,
                      condSE=res$condSE,
                      condMethod = "BM"))

Conditional Test length

ggplot(cond.df, aes(condTheta, condnItems, color=condMethod))+geom_line()+xlab("True ability")+ylab("Test length")+ggtitle("Test length")

Conditional Bias

ggplot(cond.df, aes(condTheta, condBias, color=condMethod))+geom_line()+xlab("True ability")+ylab("Bias")+
  ggtitle("BIAS")

Conditional RMSE

ggplot(cond.df, aes(condTheta, condRMSE, color=condMethod))+geom_line()+xlab("True ability")+ylab("RMSE")+
  ggtitle("RMSE
          ")

Conditional SE

ggplot(cond.df, aes(condTheta, condSE, color=condMethod))+geom_line()+xlab("True ability")+ylab("SE")+
  ggtitle("SE")

library("knitcitations")

Conclusion

Using the Bayes modal or the Warm ability estimator does not make any difference. Performance with fixed test length 25 yields a RMSE consistently below \(0.3\) up to the 70th ability percentile, which is deemed adequate for our purposes. We therefore end up with the following design