Learn R Programming

sirt (version 1.5-0)

rm.facets: Rater Facets Models with Item/Rater Intercepts and Slopes

Description

This function estimates the unidimensional rater facets model (Lincare, 1994) and an extension to slopes (see Details). The estimation is conducted by an EM algorithm employing marginal maximum likelihood.

Usage

rm.facets(dat, pid=NULL, rater=NULL, Qmatrix=NULL, theta.k=seq(-9, 9, len=30), 
    est.b.rater=TRUE, est.a.item=FALSE, est.a.rater=FALSE, est.mean=FALSE ,
    tau.item.fixed=NULL , a.item.fixed=NULL , b.rater.fixed=NULL , a.rater.fixed=NULL ,
    max.b.increment=1, numdiff.parm=0.00001, maxdevchange=0.1, globconv=0.001, 
    maxiter=1000, msteps=4, mstepconv=0.001)

## S3 method for class 'rm.facets':
summary(object,...)	  

## S3 method for class 'rm.facets':
anova(object,...)

## S3 method for class 'rm.facets':
logLik(object,...)

## S3 method for class 'rm.facets':
IRT.irfprob(object,...)

## S3 method for class 'rm.facets':
IRT.factor.scores(object, type="EAP", ...)

## S3 method for class 'rm.facets':
IRT.likelihood(object,...)

## S3 method for class 'rm.facets':
IRT.posterior(object,...)

## S3 method for class 'rm.facets':
IRT.modelfit(object,...)

## S3 method for class 'IRT.modelfit.rm.facets':
summary(object,...)

Arguments

dat
Original data frame. Ratings on variables must be in rows, i.e. every row corresponds to a person-rater combination.
pid
Person identifier.
rater
Rater identifier
Qmatrix
An optional Q-matrix. If this matrix is not provided, then by default the ordinary scoring of categories (from 0 to the maximum score of $K$) is used.
theta.k
A grid of theta values for the ability distribution.
est.b.rater
Should the rater severities $b_r$ be estimated?
est.a.item
Should the item slopes $a_i$ be estimated?
est.a.rater
Should the rater slopes $a_r$ be estimated?
est.mean
Optional logical indicating whether the mean of the trait distribution should be estimated.
tau.item.fixed
Matrix with fixed $\tau$ parameters. Non-fixed parameters must be declared by NA values.
a.item.fixed
Vector with fixed item discriminations
b.rater.fixed
Vector with fixed rater intercept parameters
a.rater.fixed
Vector with fixed rater discrmination parameters
max.b.increment
Maximum increment of item parameters during estimation
numdiff.parm
Numerical differentiation step width
maxdevchange
Maximum relative deviance change as a convergence criterion
globconv
Maximum parameter change
maxiter
Maximum number of iterations
msteps
Maximum number of iterations during an M step
mstepconv
Convergence criterion in an M step
object
Object of class rm.facets
type
Factor score estimation method. Factor score types "EAP", "MLE" and "WLE" are supported.
...
Further arguments to be passed

Value

  • A list with following entries:
  • devianceDeviance
  • icInformation criteria and number of parameters
  • itemData frame with item parameters
  • raterData frame with rater parameters
  • personData frame with person parameters: EAP and corresponding standard errors
  • EAP.relEAP reliability
  • muMean of the trait distribution
  • sigmaStandard deviation of the trait distribution
  • theta.kGrid of theta values
  • pi.kFitted distribution at theta.k values
  • tau.itemItem parameters $\tau_{ik}$
  • se.tau.itemStandard error of item parameters $\tau_{ik}$
  • a.itemItem slopes $a_i$
  • se.a.itemStandard error of item slopes $a_i$
  • delta.itemDelta item parameter. See pcm.conversion.
  • b.raterRater severity parameter $b_r$
  • se.b.raterStandard error of rater severity parameter $b_r$
  • a.raterRater slope parameter $a_r$
  • se.a.raterStandard error of rater slope parameter $a_r$
  • f.yi.qkIndividual likelihood
  • f.qk.yiIndividual posterior distribution
  • probsItem probabilities at grid theta.k
  • n.ikExpected counts
  • maxKMaximum number of categories
  • procdataProcessed data
  • iterNumber of iterations
  • ipars.dat2Item parameters for expanded dataset dat2
  • ...Further values

Details

This function models ratings $X_{pri}$ for person $p$, rater $r$ and item $i$ and category $k$ $$P( X_{pri} = k | \theta_p ) \propto exp( a_i a_r q_{ik} \theta_p - q_{ik} b_r - \tau_{ik} ) \quad , \quad \theta_p \sim N( 0 , \sigma^2 )$$ By default, the scores in the $Q$ matrix are $q_{ik}=k$. Item slopes $a_i$ and rater slopes $a_r$ are standardized such that their product equals one, i.e. $\prod_i a_i = \prod_r a_r = 1$.

References

Linacre, J. M. (1994). Many-Facet Rasch Measurement. Chicago: MESA Press.

See Also

See also the TAM package for the estimation of more complicated facet models. See rm.sdt for estimating a hierarchical rater model.

Examples

Run this code
#############################################################################
# EXAMPLE 1: Partial Credit Model and Generalized partial credit model 
#                   5 items and 1 rater
#############################################################################
data(data.ratings1)
dat <- data.ratings1

# select rater db01
dat <- dat[ paste(dat$rater) == "db01" , ]

# Model 1: Partial Credit Model
mod1 <- rm.facets( dat[ , paste0( "k",1:5) ] , pid=dat$idstud , maxiter=15)

# Model 2: Generalized Partial Credit Model
mod2 <- rm.facets( dat[ , paste0( "k",1:5) ] ,  pid=dat$idstud  , 
           est.a.item=TRUE , maxiter=15)

summary(mod1)
summary(mod2)

#############################################################################
# EXAMPLE 2: Facets Model: 5 items, 7 raters
#############################################################################

data(data.ratings1)
dat <- data.ratings1
maxit <- 15    # maximum number of iterations, increase it in applications!

# Model 1: Partial Credit Model: no rater effects
mod1 <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater , 
             pid=dat$idstud  , est.b.rater=FALSE  , maxiter=maxit)

# Model 2: Partial Credit Model: intercept rater effects
mod2 <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater  , 
             pid=dat$idstud  , maxiter=maxit)

# extract individual likelihood
lmod1 <- IRT.likelihood(mod1)   
str(lmod1)
# likelihood value
logLik(mod1)
# extract item response functions
pmod1 <- IRT.irfprob(mod1)
str(pmod1)
# model comparison
anova(mod1,mod2)             
# absolute and relative model fit
smod1 <- IRT.modelfit(mod1)
summary(smod1)
smod2 <- IRT.modelfit(mod2)
summary(smod2)
IRT.compareModels( smod1 , smod2 )
# extract factor scores (EAP is the default)
IRT.factor.scores(mod2)
# extract WLEs
IRT.factor.scores(mod2 , type="WLE")

# Model 2a: compare results with TAM package
#   Results should be similar to Model 2
library(TAM)
mod2a <- TAM::tam.mml.mfr( resp= dat[ , paste0( "k",1:5) ] , 
             facets= dat[ , "rater" , drop=FALSE] ,
             pid= dat$pid , formulaA = ~ item*step + rater )

# Model 2b: Partial Credit Model: some fixed parameters
# fix rater parameters for raters 1, 4 and 5
b.rater.fixed <- rep(NA,7)
b.rater.fixed[ c(1,4,5) ] <- c(1,-.8,0)  # fixed parameters
# fix item parameters of first and second item
tau.item.fixed <- round( mod2$tau.item , 1 )    # use parameters from mod2
tau.item.fixed[ 3:5 , ] <- NA    # free item parameters of items 3, 4 and 5
mod2b <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater  , 
             b.rater.fixed=b.rater.fixed , tau.item.fixed=tau.item.fixed , 
             est.mean = TRUE , pid=dat$idstud  , maxiter=maxit)
summary(mod2b)             
             
# Model 3: estimated rater slopes
mod3 <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater , 
            est.a.rater=TRUE  , maxiter=maxit)

# Model 4: estimated item slopes
mod4 <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater , 
             pid=dat$idstud  ,  est.a.item=TRUE , maxiter=maxit)

# Model 5: estimated rater and item slopes
mod5 <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater , 
             pid=dat$idstud  , est.a.rater=TRUE , est.a.item=TRUE , maxiter=maxit)
summary(mod1)
summary(mod2)
summary(mod2a)
summary(mod3)
summary(mod4)
summary(mod5)

# Model 5a: Some fixed parameters in Model 5
# fix rater b parameters for raters 1, 4 and 5
b.rater.fixed <- rep(NA,7)
b.rater.fixed[ c(1,4,5) ] <- c(1,-.8,0)
# fix rater a parameters for first four raters
a.rater.fixed <- rep(NA,7)
a.rater.fixed[ c(1,2,3,4) ] <- c(1.1,0.9,.85,1)
# fix item b parameters of first item
tau.item.fixed <- matrix( NA , nrow=5 , ncol=3 )
tau.item.fixed[ 1 , ] <- c(-2,-1.5 , 1 )   
# fix item a parameters
a.item.fixed <- rep(NA,5)
a.item.fixed[ 1:4 ] <- 1
# estimate model
mod5a <- rm.facets( dat[ , paste0( "k",1:5) ] , rater=dat$rater , 
             pid=dat$idstud  , est.a.rater=TRUE , est.a.item=TRUE , 
             tau.item.fixed=tau.item.fixed , b.rater.fixed=b.rater.fixed , 
             a.rater.fixed=a.rater.fixed , a.item.fixed=a.item.fixed , 
             est.mean=TRUE , maxiter=maxit)
summary(mod5a)

Run the code above in your browser using DataLab