R/tmt_rm.R
tmt_rm.Rd
The tmt_rm
function estimates the Rasch model. If the data are collected based on a multistage design (see Zwitser and Maris, 2015) the specific multistage design mstdesign
has to be submitted.
tmt_rm(
dat,
mstdesign = NULL,
weights = NULL,
start = NULL,
sum0 = TRUE,
se = TRUE,
optimization = "nlminb",
...
)
a matrix of dichotomous (0/1) data or a list of the function tmt_designsim
Model for the multistage design, if CML estimation without multistage designs is required, than leave the default value
is optional for the weights of cases
Vector of start values. If no vector is provided, the start values will be automatic generated
logical: If the item parameters should be normed to 'sum = 0' as recommended by Glas (2016, p. 208). Otherwise sum0=FALSE
logical: should the standard error should be estimated?
character: Per default 'nlminb' is used but 'optim' is also supported.
optional further arguments for optim and nlminb use control = list() with arguments.
List with following entries
Estimated item difficulty parameters (if sum0=FALSE, than the first item is set to 0)
Standard errors of the estimated item parameters
Conditional log-likelihood of the model
Number of estimated parameters
Number of Persons
Number of items
Submitted data frame with item responses
Used data frame with item responses
Design matrix
Convergence criterion
Number of iterations
Hessian-Matrix
Used model ((mst) for Rasch model with multistage design)
Submitted arguments for the function (matched call)
If the multistage version is requested, the preprocessed design is returned, otherwise NULL
If the multistage version is requested, the submitted design is returned, otherwise NULL
According to Glas (1988) <doi:10.3102/10769986013001045> CML estimation of item parameters is biased if the data is collected in multistage designs and this design is not considered. Zwitser and Maris (2015) <doi:10.1007/s11336-013-9369-6> propose to use an additional design matrix to fragment the elementary symmetric function. Their approach is implemented in this package. MST designs with a probabilistic instead of a deterministic routing rule (see, e.g. Chen, Yamamoto, & von Davier, 2014 <doi:10.1201/b16858>) are not estimated with this method, therefore the proposed solouting is again modified by Steinfeld and Robitzsch (2021) <doi:10.31234/osf.io/ew27f> which is also integrated into this package.
Baker, F. B., & Harwell, M. R. (1996). Computing elementary symmetric functions and their derivatives: A didactic. Applied Psychological Measurement, 20(2), 169-192.
Baker, F. B., & Kim, S. H. (2004). Item response theory: Parameter estimation techniques. CRC Press.
Chen, H., Yamamoto, K., & von Davier, M. (2014). Controlling multistage testing exposure rates in international large-scale assessments. In A. Yan, A. A. von Davier, & C. Lewis (Eds.), Computerized Multistage Testing: Theory and Applications (pp. 391-409). New York: CRC Press. https://doi.org/10.1201/b16858
Fischer, G. H., & Molenaar, I. W. (Eds.). (2012). Rasch models: Foundations, recent developments, and applications. Springer Science & Business Media.
Formann, A. K. (1986). A note on the computation of the second-order derivatives of the elementary symmetric functions in the Rasch model. Psychometrika, 51(2), 335-339.
Glas, C.A.W. (1988). The Rasch model and multistage testing. Journal of Educational Statistics, 13(1), 45-52.
Glas, C.A.W. (2016). Maximum-Likelihood Estimation. In van der Linden, W.J. (Ed.), Handbook of Item Response Theory: Volume two: Statistical tools. (pp. 197 - 236). New York: CRC Press.
Rasch, G. (1960). Probabalistic models for some intelligence and attainment tests. Danmarks paedagogiske institut.
Steinfeld, J., & Robitzsch, A. (accepted). Conditional maximum likelihood estimation in probability-based multistage designs. Behaviormetrika, xx(x), xxx-xxx.
Steinfeld, J., Robitzsch, A. (2023). Estimating item parameters in multistage designs with the tmt package in R. Quantitative and Computational Methods in Behavioral Science, 3, e10087. https://doi.org/10.5964/qcmb.10087
Steinfeld, J., & Robitzsch, A. (2021). Item parameter estimation in multistage designs: A comparison of different estimation approaches for the Rasch model. Psych, 3(3), 279-307. https://doi.org/10.3390/psych3030022
Verhelst, N.D., Glas, C.A.W., & van der Sluis, A. (1984). Estimation Problems in the Rasch-Model: The Basic Symmetric Functions. Computational Statistics Quarterly, 1(3), 245-262.
Zwitser, R. J., & Maris, G. (2015). Conditional statistical inference with multistage testing designs. Psychometrika, 80(1), 65-84.
# example for tmt_rm
#############################################################################
# Example-1 simple Rasch model
#############################################################################
dat <- tmt:::sim.rm(theta = 100, b = 10, seed = 1111)
#> Warning: It is necessary to set a seed for both theta and beta if no vector is passed. The specified seed was used for the theta parameters, the following is used for beta: 1112
dat.rm <- tmt_rm(dat = dat)
summary(dat.rm)
#>
#> Call:
#> tmt_rm(dat = dat)
#>
#>
#> Results of Rasch model (nmst) estimation:
#>
#> Difficulty parameters:
#> est.b_i01 est.b_i02 est.b_i03 est.b_i04 est.b_i05 est.b_i06
#> Estimate 0.7735480 -0.6151267 -0.1775697 0.7193372 -1.6738524 0.7193372
#> Std. Error 0.2236931 0.2274267 0.2201498 0.2228198 0.2734564 0.2228198
#> est.b_i07 est.b_i08 est.b_i09 est.b_i10
#> Estimate 1.343753 -0.3927710 0.03344106 -0.7300963
#> Std. Error 0.237952 0.2229742 0.21873168 0.2303701
#>
#> CLL: -357.4132
#> Number of iterations: 20
#> Number of parameters: 10
#>
#############################################################################
# Example-1 for multistage-design
#############################################################################
mstdesign <- "
M1 =~ c(i1, i2, i3, i4, i5)
M2 =~ c(i6, i7, i8, i9, i10)
M3 =~ c(i11, i12, i13, i14, i15)
# define path
p1 := M2(0,2) + M1
p2 := M2(3,5) + M3
"
items <- seq(-1,1,length.out = 15)
names(items) <- paste0("i",1:15)
persons = 1000
dat <- tmt_sim(mstdesign = mstdesign,
items = items, persons = persons)
dat.rm <- tmt_rm(dat = dat, mstdesign = mstdesign)
summary(dat.rm)
#>
#> Call:
#> tmt_rm(dat = dat, mstdesign = mstdesign)
#>
#>
#> Results of Rasch model (mst) estimation:
#>
#> Difficulty parameters:
#> est.b_i1 est.b_i2 est.b_i3 est.b_i4 est.b_i5 est.b_i6
#> Estimate -0.9513753 -0.8603276 -0.6527510 -0.5446152 -0.6167246 -0.28438316
#> Std. Error 0.1042129 0.1039413 0.1038015 0.1039933 0.1038452 0.07349849
#> est.b_i7 est.b_i8 est.b_i9 est.b_i10 est.b_i11 est.b_i12
#> Estimate -0.24488521 0.06313600 0.22909742 0.33232509 0.5711154 0.5068559
#> Std. Error 0.07340641 0.07312262 0.07328196 0.07350078 0.1050823 0.1051560
#> est.b_i13 est.b_i14 est.b_i15
#> Estimate 0.7276292 0.8671331 0.8577699
#> Std. Error 0.1051779 0.1055913 0.1055538
#>
#> CLL: -4028.058
#> Number of iterations: 51
#> Number of parameters: 15
#>
if (FALSE) {
############################################################################
# Example-2 simple Rasch model
############################################################################
dat <- tmt:::sim.rm(theta = 100, b = 10, seed = 1111)
dat.rm <- tmt_rm(dat = dat)
summary(dat.rm)
############################################################################
# Example-2 for multistage-design
############################################################################
# also using 'paste' is possible
mstdesign <- "
M1 =~ paste0('i',1:5)
M2 =~ paste0('i',6:10)
M3 =~ paste0('i',11:15)
M4 =~ paste0('i',16:20)
M5 =~ paste0('i',21:25)
M6 =~ paste0('i',26:30)
# define path
p1 := M4(0,2) + M2(0,2) + M1
p2 := M4(0,2) + M2(3,5) + M3
p3 := M4(3,5) + M5(0,2) + M3
p4 := M4(3,5) + M5(3,5) + M6
"
items <- seq(-1,1,length.out = 30)
names(items) <- paste0("i",1:30)
persons = 1000
dat <- tmt_sim(mstdesign = mstdesign,
items = items, persons = persons)
dat.rm <- tmt_rm(dat = dat, mstdesign = mstdesign)
summary(dat.rm)
############################################################################
# Example-3 for cumulative multistage-design
############################################################################
# also using 'paste' is possible
mstdesign <- "
M1 =~ paste0('i',21:30)
M2 =~ paste0('i',11:20)
M3 =~ paste0('i', 1:10)
M4 =~ paste0('i',31:40)
M5 =~ paste0('i',41:50)
M6 =~ paste0('i',51:60)
# define path
p1 := M1(0, 5) += M2( 0,10) += M3
p2 := M1(0, 5) += M2(11,15) += M4
p3 := M1(6,10) += M5( 6,15) += M4
p4 := M1(6,10) += M5(16,20) += M6
"
items <- seq(-1,1,length.out = 60)
names(items) <- paste0("i",1:60)
persons = 1000
dat <- tmt_sim(mstdesign = mstdesign,
items = items, persons = persons)
dat.rm <- tmt_rm(dat = dat, mstdesign = mstdesign)
summary(dat.rm)
}