Data obtained from the TESTFACT (Woods et al., 2003) manual, with 32 response pattern scored items for a grade 12 science assessment test (SAT) measuring topics of chemistry, biology, and physics. The scoring key for these data is [1, 4, 5, 2, 3, 1, 2, 1, 3, 1, 2, 4, 2, 1, 5, 3, 4, 4, 1, 4, 3, 3, 4, 1, 3, 5, 1, 3, 1, 5, 4, 5], respectively. However, careful analysis using the nominal response model suggests that the scoring key for item 32 may be incorrect, and should be changed from 5 to 3.
References
Wood, R., Wilson, D. T., Gibbons, R. D., Schilling, S. G., Muraki, E., & Bock, R. D. (2003). TESTFACT 4 for Windows: Test Scoring, Item Statistics, and Full-information Item Factor Analysis [Computer software]. Lincolnwood, IL: Scientific Software International.
Author
Phil Chalmers rphilip.chalmers@gmail.com
Examples
# \donttest{
itemstats(SAT12, use_ts = FALSE)
#> $overall
#> N
#> 1 600
#>
#> $itemstats
#> N mean sd
#> Item.1 600 2.497 1.188
#> Item.2 600 3.385 1.356
#> Item.3 600 3.212 1.534
#> Item.4 600 2.762 1.370
#> Item.5 600 2.868 0.911
#> Item.6 600 2.358 1.135
#> Item.7 600 2.422 0.908
#> Item.8 600 2.925 1.370
#> Item.9 600 2.907 0.567
#> Item.10 600 2.320 1.490
#> Item.11 600 2.017 0.199
#> Item.12 600 3.642 1.184
#> Item.13 600 2.317 0.956
#> Item.14 600 1.798 1.432
#> Item.15 600 4.535 1.087
#> Item.16 600 3.368 1.135
#> Item.17 600 3.968 0.343
#> Item.18 600 3.020 1.514
#> Item.19 600 1.900 1.053
#> Item.20 600 3.870 0.483
#> Item.21 600 2.937 0.554
#> Item.22 600 2.985 0.442
#> Item.23 600 2.755 1.437
#> Item.24 600 1.502 1.037
#> Item.25 600 2.740 1.380
#> Item.26 600 3.923 1.265
#> Item.27 600 1.240 0.766
#> Item.28 600 3.262 0.937
#> Item.29 600 2.285 1.306
#> Item.30 600 3.703 1.553
#> Item.31 600 3.788 0.899
#> Item.32 600 3.023 1.303
#>
#> $proportions
#> 1 2 3 4 5 8
#> Item.1 0.283 0.203 0.267 0.232 0.013 0.002
#> Item.2 0.212 0.022 0.070 0.568 0.127 0.002
#> Item.3 0.165 0.183 0.260 0.098 0.280 0.013
#> Item.4 0.165 0.378 0.148 0.172 0.128 0.008
#> Item.5 0.093 0.143 0.620 0.093 0.048 0.002
#> Item.6 0.160 0.582 0.107 0.043 0.108 NA
#> Item.7 0.025 0.760 0.007 0.190 0.017 0.002
#> Item.8 0.202 0.205 0.207 0.250 0.133 0.003
#> Item.9 0.065 0.010 0.885 0.033 0.007 NA
#> Item.10 0.422 0.215 0.165 0.028 0.167 0.003
#> Item.11 0.003 0.983 0.008 0.003 0.002 NA
#> Item.12 0.072 0.082 0.218 0.415 0.205 0.008
#> Item.13 0.110 0.662 0.070 0.118 0.040 NA
#> Item.14 0.723 0.027 0.108 0.022 0.117 0.003
#> Item.15 0.035 0.062 0.060 0.025 0.817 0.002
#> Item.16 0.070 0.105 0.413 0.215 0.195 0.002
#> Item.17 0.008 0.005 0.010 0.963 0.013 NA
#> Item.18 0.303 0.033 0.165 0.352 0.142 0.005
#> Item.19 0.548 0.053 0.358 0.030 0.010 NA
#> Item.20 0.012 0.002 0.105 0.873 0.007 0.002
#> Item.21 0.050 0.008 0.915 0.013 0.012 0.002
#> Item.22 0.028 0.005 0.935 0.017 0.015 NA
#> Item.23 0.290 0.177 0.128 0.313 0.087 0.005
#> Item.24 0.728 0.162 0.042 0.022 0.045 0.002
#> Item.25 0.240 0.170 0.375 0.065 0.142 0.008
#> Item.26 0.020 0.227 0.030 0.262 0.460 0.002
#> Item.27 0.862 0.093 0.012 0.020 0.010 0.003
#> Item.28 0.082 0.010 0.530 0.337 0.037 0.005
#> Item.29 0.340 0.295 0.205 0.085 0.067 0.008
#> Item.30 0.150 0.110 0.107 0.183 0.440 0.010
#> Item.31 0.075 0.020 0.012 0.833 0.058 0.002
#> Item.32 0.125 0.183 0.443 0.075 0.162 0.012
#>
# score the data (missing scored as 0)
head(SAT12)
#> Item.1 Item.2 Item.3 Item.4 Item.5 Item.6 Item.7 Item.8 Item.9 Item.10
#> 1 1 4 5 2 3 1 2 1 3 1
#> 2 3 4 2 8 3 3 2 8 3 1
#> 3 1 4 5 4 3 2 2 3 3 2
#> 4 2 4 4 2 3 3 2 4 3 2
#> 5 2 4 5 2 3 2 2 1 1 2
#> 6 1 4 3 1 3 2 2 3 3 1
#> Item.11 Item.12 Item.13 Item.14 Item.15 Item.16 Item.17 Item.18 Item.19
#> 1 2 4 2 1 5 3 4 4 1
#> 2 2 8 2 1 5 2 4 1 1
#> 3 2 1 3 1 5 5 4 1 3
#> 4 2 4 2 1 5 2 4 1 3
#> 5 2 4 2 1 5 4 4 5 1
#> 6 2 3 2 1 5 5 4 4 1
#> Item.20 Item.21 Item.22 Item.23 Item.24 Item.25 Item.26 Item.27 Item.28
#> 1 4 3 3 4 1 3 5 1 3
#> 2 4 3 3 8 1 8 4 1 4
#> 3 4 3 3 1 1 3 4 1 3
#> 4 4 3 1 5 2 5 4 1 3
#> 5 4 3 3 3 1 1 5 1 3
#> 6 4 3 3 4 1 1 4 1 4
#> Item.29 Item.30 Item.31 Item.32
#> 1 1 5 4 5
#> 2 5 8 4 8
#> 3 4 4 4 1
#> 4 4 2 4 2
#> 5 1 2 4 1
#> 6 2 3 4 3
dat <- key2binary(SAT12,
key = c(1,4,5,2,3,1,2,1,3,1,2,4,2,1,5,3,4,4,1,4,3,3,4,1,3,5,1,3,1,5,4,5))
head(dat)
#> Item.1 Item.2 Item.3 Item.4 Item.5 Item.6 Item.7 Item.8 Item.9 Item.10
#> [1,] 1 1 1 1 1 1 1 1 1 1
#> [2,] 0 1 0 0 1 0 1 0 1 1
#> [3,] 1 1 1 0 1 0 1 0 1 0
#> [4,] 0 1 0 1 1 0 1 0 1 0
#> [5,] 0 1 1 1 1 0 1 1 0 0
#> [6,] 1 1 0 0 1 0 1 0 1 1
#> Item.11 Item.12 Item.13 Item.14 Item.15 Item.16 Item.17 Item.18 Item.19
#> [1,] 1 1 1 1 1 1 1 1 1
#> [2,] 1 0 1 1 1 0 1 0 1
#> [3,] 1 0 0 1 1 0 1 0 0
#> [4,] 1 1 1 1 1 0 1 0 0
#> [5,] 1 1 1 1 1 0 1 0 1
#> [6,] 1 0 1 1 1 0 1 1 1
#> Item.20 Item.21 Item.22 Item.23 Item.24 Item.25 Item.26 Item.27 Item.28
#> [1,] 1 1 1 1 1 1 1 1 1
#> [2,] 1 1 1 0 1 0 0 1 0
#> [3,] 1 1 1 0 1 1 0 1 1
#> [4,] 1 1 0 0 0 0 0 1 1
#> [5,] 1 1 1 0 1 0 1 1 1
#> [6,] 1 1 1 1 1 0 0 1 0
#> Item.29 Item.30 Item.31 Item.32
#> [1,] 1 1 1 1
#> [2,] 0 0 1 0
#> [3,] 0 0 1 0
#> [4,] 0 0 1 0
#> [5,] 1 0 1 0
#> [6,] 0 0 1 0
itemstats(dat)
#> $overall
#> N mean_total.score sd_total.score ave.r sd.r alpha SEM.alpha
#> 600 18.202 5.054 0.108 0.075 0.798 2.272
#>
#> $itemstats
#> N mean sd total.r total.r_if_rm alpha_if_rm
#> Item.1 600 0.283 0.451 0.380 0.300 0.793
#> Item.2 600 0.568 0.496 0.539 0.464 0.785
#> Item.3 600 0.280 0.449 0.446 0.371 0.789
#> Item.4 600 0.378 0.485 0.325 0.235 0.796
#> Item.5 600 0.620 0.486 0.424 0.340 0.791
#> Item.6 600 0.160 0.367 0.414 0.351 0.791
#> Item.7 600 0.760 0.427 0.366 0.289 0.793
#> Item.8 600 0.202 0.402 0.307 0.233 0.795
#> Item.9 600 0.885 0.319 0.189 0.127 0.798
#> Item.10 600 0.422 0.494 0.465 0.383 0.789
#> Item.11 600 0.983 0.128 0.181 0.156 0.797
#> Item.12 600 0.415 0.493 0.173 0.076 0.803
#> Item.13 600 0.662 0.474 0.438 0.358 0.790
#> Item.14 600 0.723 0.448 0.411 0.333 0.791
#> Item.15 600 0.817 0.387 0.393 0.325 0.792
#> Item.16 600 0.413 0.493 0.367 0.278 0.794
#> Item.17 600 0.963 0.188 0.238 0.202 0.796
#> Item.18 600 0.352 0.478 0.576 0.508 0.783
#> Item.19 600 0.548 0.498 0.401 0.314 0.792
#> Item.20 600 0.873 0.333 0.376 0.318 0.792
#> Item.21 600 0.915 0.279 0.190 0.136 0.798
#> Item.22 600 0.935 0.247 0.284 0.238 0.795
#> Item.23 600 0.313 0.464 0.338 0.253 0.795
#> Item.24 600 0.728 0.445 0.422 0.346 0.791
#> Item.25 600 0.375 0.485 0.383 0.297 0.793
#> Item.26 600 0.460 0.499 0.562 0.489 0.783
#> Item.27 600 0.862 0.346 0.425 0.367 0.791
#> Item.28 600 0.530 0.500 0.465 0.383 0.789
#> Item.29 600 0.340 0.474 0.407 0.324 0.791
#> Item.30 600 0.440 0.497 0.255 0.159 0.799
#> Item.31 600 0.833 0.373 0.479 0.419 0.788
#> Item.32 600 0.162 0.368 0.110 0.037 0.802
#>
#> $proportions
#> 0 1
#> Item.1 0.717 0.283
#> Item.2 0.432 0.568
#> Item.3 0.720 0.280
#> Item.4 0.622 0.378
#> Item.5 0.380 0.620
#> Item.6 0.840 0.160
#> Item.7 0.240 0.760
#> Item.8 0.798 0.202
#> Item.9 0.115 0.885
#> Item.10 0.578 0.422
#> Item.11 0.017 0.983
#> Item.12 0.585 0.415
#> Item.13 0.338 0.662
#> Item.14 0.277 0.723
#> Item.15 0.183 0.817
#> Item.16 0.587 0.413
#> Item.17 0.037 0.963
#> Item.18 0.648 0.352
#> Item.19 0.452 0.548
#> Item.20 0.127 0.873
#> Item.21 0.085 0.915
#> Item.22 0.065 0.935
#> Item.23 0.687 0.313
#> Item.24 0.272 0.728
#> Item.25 0.625 0.375
#> Item.26 0.540 0.460
#> Item.27 0.138 0.862
#> Item.28 0.470 0.530
#> Item.29 0.660 0.340
#> Item.30 0.560 0.440
#> Item.31 0.167 0.833
#> Item.32 0.838 0.162
#>
# score the data, missing (value of 8) treated as NA
SAT12missing <- SAT12
SAT12missing[SAT12missing == 8] <- NA
dat <- key2binary(SAT12missing,
key = c(1,4,5,2,3,1,2,1,3,1,2,4,2,1,5,3,4,4,1,4,3,3,4,1,3,5,1,3,1,5,4,5))
head(dat)
#> Item.1 Item.2 Item.3 Item.4 Item.5 Item.6 Item.7 Item.8 Item.9 Item.10
#> [1,] 1 1 1 1 1 1 1 1 1 1
#> [2,] 0 1 0 NA 1 0 1 NA 1 1
#> [3,] 1 1 1 0 1 0 1 0 1 0
#> [4,] 0 1 0 1 1 0 1 0 1 0
#> [5,] 0 1 1 1 1 0 1 1 0 0
#> [6,] 1 1 0 0 1 0 1 0 1 1
#> Item.11 Item.12 Item.13 Item.14 Item.15 Item.16 Item.17 Item.18 Item.19
#> [1,] 1 1 1 1 1 1 1 1 1
#> [2,] 1 NA 1 1 1 0 1 0 1
#> [3,] 1 0 0 1 1 0 1 0 0
#> [4,] 1 1 1 1 1 0 1 0 0
#> [5,] 1 1 1 1 1 0 1 0 1
#> [6,] 1 0 1 1 1 0 1 1 1
#> Item.20 Item.21 Item.22 Item.23 Item.24 Item.25 Item.26 Item.27 Item.28
#> [1,] 1 1 1 1 1 1 1 1 1
#> [2,] 1 1 1 NA 1 NA 0 1 0
#> [3,] 1 1 1 0 1 1 0 1 1
#> [4,] 1 1 0 0 0 0 0 1 1
#> [5,] 1 1 1 0 1 0 1 1 1
#> [6,] 1 1 1 1 1 0 0 1 0
#> Item.29 Item.30 Item.31 Item.32
#> [1,] 1 1 1 1
#> [2,] 0 NA 1 NA
#> [3,] 0 0 1 0
#> [4,] 0 0 1 0
#> [5,] 1 0 1 0
#> [6,] 0 0 1 0
# potentially better scoring for item 32 (based on nominal model finding)
dat <- key2binary(SAT12,
key = c(1,4,5,2,3,1,2,1,3,1,2,4,2,1,5,3,4,4,1,4,3,3,4,1,3,5,1,3,1,5,4,3))
# }