Learn R Programming

sirt (version 1.5-0)

truescore.irt: Conversion of Trait Scores $\theta$ into True Scores $\tau ( \theta )$

Description

This function computes the true score $\tau=\tau(\theta) = \sum_{i=1}^I P_i(\theta)$ in a unidimensional item response model with $I$ items. In addition, it also transforms conditional standard errors if they are provided.

Usage

truescore.irt(A, B, c = NULL, d = NULL, theta = seq(-3, 3, len = 21), 
    error = NULL, pid = NULL, h = 0.001)

Arguments

A
Matrix or vector of item slopes. See Examples for polytomous responses.
B
Matrix or vector of item intercepts. Note that the entries in B refer to item intercepts and not to item difficulties.
c
Optional vector of guessing parameters
d
Optional vector of slipping parameters
theta
Vector of trait values
error
Optional vector of standard errors of trait
pid
Optional vector of person identifiers
h
Numerical differentiation parameter

Value

  • A data frame with following columns:
  • truescoreTrue scores $\tau = \tau ( \theta )$
  • truescore.errorStandard errors of true scores
  • percscoreExpected correct scores which is $\tau$ divided by the maximum true score
  • percscore.errorStandard errors of expected correct scores
  • lowerThe $l$ parameter
  • upperThe $u$ parameter
  • aThe $a$ parameter
  • bThe $b$ parameter

Details

In addition, the function $\pi(\theta)= \frac{1}{I} \cdot \tau( \theta)$ of the expected percent score is approximated by a logistic function $$\pi ( \theta ) \approx l + ( u - l ) \cdot invlogit ( a \theta + b )$$

Examples

Run this code
#############################################################################
# EXAMPLE 1: Dataset with mixed dichotomous and polytomous responses
#############################################################################

data(data.mixed1)
dat <- data.mixed1

#****
# Model 1: Partial credit model
# estimate model with TAM package
library(TAM)
mod1 <- TAM::tam.mml( dat )
# estimate person parameter estimates
wmod1 <- TAM::tam.wle( mod1 )
wmod1 <- wmod1[ order(wmod1$theta) , ]
# extract item parameters
A <- mod1$B[,-1,1]
B <- mod1$AXsi[,-1]
# person parameters and standard errors
theta <- wmod1$theta
error <- wmod1$error

# estimate true score transformation
dfr <- truescore.irt( A=A , B=B , theta=theta , error=error )

# plot different person parameter estimates and standard errors
par(mfrow=c(2,2))
plot( theta , dfr$truescore , pch=16 , cex=.6 , xlab=expression(theta) , type="l",
    ylab=expression(paste( tau , "(",theta , ")" ))  , main="True Score Transformation" )
plot( theta , dfr$percscore , pch=16 , cex=.6 , xlab=expression(theta) , type="l",
    ylab=expression(paste( pi , "(",theta , ")" ))  , main="Percent Score Transformation" )
points( theta , dfr$lower + (dfr$upper-dfr$lower)*plogis(dfr$a*theta+dfr$b) , col=2 , lty=2)
plot( theta , error , pch=16 , cex=.6 , xlab=expression(theta) , type="l",
    ylab=expression(paste("SE(",theta , ")" ))  , main="Standard Error Theta" )
plot( dfr$truescore , dfr$truescore.error , pch=16 , cex=.6 , xlab=expression(tau) ,
    ylab=expression(paste("SE(",tau , ")" ) ) , main="Standard Error True Score Tau" ,
    type="l")
par(mfrow=c(1,1))

#****
# Model 2: Generalized partial credit model
mod2 <- TAM::tam.mml.2pl( dat , irtmodel="GPCM")
# estimate person parameter estimates
wmod2 <- TAM::tam.wle( mod2 )
# extract item parameters
A <- mod2$B[,-1,1]
B <- mod2$AXsi[,-1]
# person parameters and standard errors
theta <- wmod2$theta
error <- wmod2$error
# estimate true score transformation
dfr <- truescore.irt( A=A , B=B , theta=theta , error=error )

#############################################################################
# EXAMPLE 2: Dataset Reading data.read
#############################################################################
data(data.read)

#****
# Model 1: estimate difficulty + guessing model
mod1 <- rasch.mml2( data.read , fixed.c = rep(.25,12) )
mod1$person <- mod1$person[ order( mod1$person$EAP) , ]
# person parameters and standard errors
theta <- mod1$person$EAP
error <- mod1$person$SE.EAP
A <- rep(1,12)
B <- - mod1$item$b
c <- rep(.25,12)
# estimate true score transformation
dfr <- truescore.irt( A=A , B=B , theta=theta , error=error ,c=c)

plot( theta , dfr$percscore , pch=16 , cex=.6 , xlab=expression(theta) , type="l",
    ylab=expression(paste( pi , "(",theta , ")" ))  , main="Percent Score Transformation" )
points( theta , dfr$lower + (dfr$upper-dfr$lower)*plogis(dfr$a*theta+dfr$b) , col=2 , lty=2)

#****
# Model 2: Rasch model
mod2 <- rasch.mml2( data.read  )
# person parameters and standard errors
theta <- mod2$person$EAP
error <- mod2$person$SE.EAP
A <- rep(1,12)
B <- - mod2$item$b
# estimate true score transformation
dfr <- truescore.irt( A=A , B=B , theta=theta , error=error )

Run the code above in your browser using DataLab