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",
  ...
)

Arguments

dat

a matrix of dichotomous (0/1) data or a list of the function tmt_designsim

mstdesign

Model for the multistage design, if CML estimation without multistage designs is required, than leave the default value

weights

is optional for the weights of cases

start

Vector of start values. If no vector is provided, the start values will be automatic generated

sum0

logical: If the item parameters should be normed to 'sum = 0' as recommended by Glas (2016, p. 208). Otherwise sum0=FALSE

se

logical: should the standard error should be estimated?

optimization

character: Per default 'nlminb' is used but 'optim' is also supported.

...

optional further arguments for optim and nlminb use control = list() with arguments.

Value

List with following entries

betapar

Estimated item difficulty parameters (if sum0=FALSE, than the first item is set to 0)

se.beta

Standard errors of the estimated item parameters

loglik

Conditional log-likelihood of the model

df

Number of estimated parameters

N

Number of Persons

I

Number of items

data_orig

Submitted data frame with item responses

data

Used data frame with item responses

desmat

Design matrix

convergence

Convergence criterion

iterations

Number of iterations

hessian

Hessian-Matrix

model

Used model ((mst) for Rasch model with multistage design)

call

Submitted arguments for the function (matched call)

designelements

If the multistage version is requested, the preprocessed design is returned, otherwise NULL

mstdesign

If the multistage version is requested, the submitted design is returned, otherwise NULL

Details

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.

References

  • 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. (2021). Conditional maximum likelihood estimation in probability-branched multistage designs. PsyArXiv. 20 March 2021. https://doi.org/10.31234/osf.io/ew27f

  • 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.

See also

Author

Jan Steinfeld

Examples

# example for tmt_rm
#############################################################################
# Example-1 simple Rasch model 
#############################################################################
dat <- tmt:::sim.rm(theta = 100, b = 10, seed = 1111)
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.3070150 0.6987753 -0.04851815 0.8137248 -0.4112514 -3.5726247
#> Std. Error  0.2221456 0.2310228  0.22140204 0.2341395  0.2230498  0.4729512
#>            est.b_i07 est.b_i08 est.b_i09 est.b_i10
#> Estimate   0.3697220 0.9931353 0.5317773 0.9322748
#> Std. Error 0.2245924 0.2399650 0.2273104 0.2378541
#> 
#> CLL: -337.1962 
#> Number of iterations: 24 
#> 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.9876212 -0.8839179 -0.8409213 -0.6694602 -0.5836650 -0.38887946
#> Std. Error  0.1016660  0.1014098  0.1013521  0.1014020  0.1015947  0.07324378
#>               est.b_i7    est.b_i8   est.b_i9  est.b_i10 est.b_i11 est.b_i12
#> Estimate   -0.07545899 -0.05100239 0.10115385 0.22498465 0.5798730 0.7802315
#> Std. Error  0.07296257  0.07297338 0.07314292 0.07341529 0.1062888 0.1063294
#>            est.b_i13 est.b_i14 est.b_i15
#> Estimate   0.8957341 0.8763980 1.0225514
#> Std. Error 0.1066579 0.1065873 0.1072782
#> 
#> CLL: -4051.894 
#> Number of iterations: 54 
#> 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)

}