Computes an IRT version of the "reliable change index" (RCI) proposed by Jacobson and Traux (1991) but modified to use IRT information about scores and measurement error. Main benefit of the IRT approach is the inclusion of response pattern information in the pre/post data score estimates, as well as conditional standard error of measurement information.
RCI(mod, predat, postdat, cutoffs = NULL, ...)
single-group model fitted by mirt
a vector (if one individual) or matrix/data.frame of response data to be scored, where each individuals' responses are included in exactly one row
same as predat
, but with respect to the post/follow-up
measurement
optional vector of length 2 indicating the type of cut-offs to
report (e.g., c(-1.96, 1.96)
reflects the 95 percent z-score type cut-off)
additional arguments passed to fscores
Chalmers, R., P. (2012). mirt: A Multidimensional Item Response Theory Package for the R Environment. Journal of Statistical Software, 48(6), 1-29. doi:10.18637/jss.v048.i06
Jacobson, N. S., & Truax, P. (1991). Clinical significance: A statistical approach to defining meaningful change in psychotherapy research. Journal of Consulting and Clinical Psychology, 59, 12-19.
# \donttest{
mod <- mirt(Science, 1)
# single response pattern change using EAP information
RCI(mod, predat = c(1,2,3,2), postdat = c(1,2,2,1))
#> pre.score post.score diff pooled_SEM z
#> 1 -0.874 -1.691 0.817 0.793 1.03
# WLE estimator
RCI(mod, predat = c(1,2,3,2), postdat = c(1,2,2,1), method = 'WLE')
#> pre.score post.score diff pooled_SEM z
#> 1 -1.236 -2.356 1.12 0.864 1.296
# multiple respondents
RCI(mod, predat = Science[1:5,], postdat = Science[2:6,])
#> pre.score post.score diff pooled_SEM z
#> 1 0.402 0.052 0.350 0.816 0.428
#> 2 0.052 -0.891 0.943 0.776 1.215
#> 3 -0.891 -0.891 0.000 0.767 0.000
#> 4 -0.891 0.765 -1.656 0.838 -1.977
#> 5 0.765 0.670 0.096 0.860 0.111
# include large-sample z-type cutoffs
RCI(mod, predat = Science[1:5,], postdat = Science[2:6,],
cutoffs = c(-1.96, 1.96))
#> pre.score post.score diff pooled_SEM z cut_decision
#> 1 0.402 0.052 0.350 0.816 0.428 unchanged
#> 2 0.052 -0.891 0.943 0.776 1.215 unchanged
#> 3 -0.891 -0.891 0.000 0.767 0.000 unchanged
#> 4 -0.891 0.765 -1.656 0.838 -1.977 decreased
#> 5 0.765 0.670 0.096 0.860 0.111 unchanged
############################
# Example where individuals take completely different item set pre-post
# but prior calibration has been performed to equate the items
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))
mod <- mirt(dat, 1)
# with N=5 individuals under investigation
predat <- postdat <- dat[1:5,]
predat[, 17:32] <- NA
postdat[, 1:16] <- NA
head(predat)
#> 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
#> 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 NA NA NA
#> [2,] 1 0 1 1 1 0 NA NA NA
#> [3,] 1 0 0 1 1 0 NA NA NA
#> [4,] 1 1 1 1 1 0 NA NA NA
#> [5,] 1 1 1 1 1 0 NA NA NA
#> Item.20 Item.21 Item.22 Item.23 Item.24 Item.25 Item.26 Item.27 Item.28
#> [1,] NA NA NA NA NA NA NA NA NA
#> [2,] NA NA NA NA NA NA NA NA NA
#> [3,] NA NA NA NA NA NA NA NA NA
#> [4,] NA NA NA NA NA NA NA NA NA
#> [5,] NA NA NA NA NA NA NA NA NA
#> Item.29 Item.30 Item.31 Item.32
#> [1,] NA NA NA NA
#> [2,] NA NA NA NA
#> [3,] NA NA NA NA
#> [4,] NA NA NA NA
#> [5,] NA NA NA NA
head(postdat)
#> Item.1 Item.2 Item.3 Item.4 Item.5 Item.6 Item.7 Item.8 Item.9 Item.10
#> [1,] NA NA NA NA NA NA NA NA NA NA
#> [2,] NA NA NA NA NA NA NA NA NA NA
#> [3,] NA NA NA NA NA NA NA NA NA NA
#> [4,] NA NA NA NA NA NA NA NA NA NA
#> [5,] NA NA NA NA NA NA NA NA NA NA
#> Item.11 Item.12 Item.13 Item.14 Item.15 Item.16 Item.17 Item.18 Item.19
#> [1,] NA NA NA NA NA NA 1 1 1
#> [2,] NA NA NA NA NA NA 1 0 1
#> [3,] NA NA NA NA NA NA 1 0 0
#> [4,] NA NA NA NA NA NA 1 0 0
#> [5,] NA NA NA NA NA NA 1 0 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
#> 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
RCI(mod, predat, postdat)
#> pre.score post.score diff pooled_SEM z
#> 1 2.206 1.808 0.398 0.951 0.419
#> 2 0.373 -0.344 0.717 0.720 0.995
#> 3 0.303 -0.115 0.419 0.728 0.575
#> 4 0.295 -0.864 1.159 0.699 1.658
#> 5 0.670 0.513 0.157 0.772 0.203
# }