| immer_hrm | R Documentation | 
Estimates the hierarchical rater model (HRM; Patz et al., 2002; see Details) with Markov Chain Monte Carlo using a Metropolis-Hastings algorithm.
immer_hrm(dat, pid, rater, iter, burnin, N.save=3000, prior=NULL,  est.a=FALSE,
           est.sigma=TRUE,  est.mu=FALSE, est.phi="a", est.psi="a",
           MHprop=NULL, theta_like=seq(-10,10,len=30), sigma_init=1, print_iter=20 )
## S3 method for class 'immer_hrm'
summary(object, digits=3, file=NULL, ...)
## S3 method for class 'immer_hrm'
plot(x,...)
## S3 method for class 'immer_hrm'
logLik(object,...)
## S3 method for class 'immer_hrm'
anova(object,...)
## S3 method for class 'immer_hrm'
IRT.likelihood(object,...)
## S3 method for class 'immer_hrm'
IRT.posterior(object,...)
| dat | Data frame with item responses | 
| pid | Person identifiers | 
| rater | Rater identifiers | 
| iter | Number of iterations | 
| burnin | Number of burnin iterations | 
| N.save | Maximum number of samples to be saved. | 
| prior | Parameters for prior distributions | 
| est.a | Logical indicating whether  | 
| est.sigma | Logical indicating whether  | 
| est.mu | Optional logical indicating whether the mean  | 
| est.phi | Type of  | 
| est.psi | Type of  | 
| MHprop | Parameters for Metropolis Hastings sampling. The standard deviation of the proposal distribution is adaptively computed (Browne & Draper, 2000). | 
| theta_like | Grid of  | 
| sigma_init | Initial value for  | 
| print_iter | Integer indicating that after each  | 
| object | Object of class  | 
| digits | Number of digits after decimal to print | 
| file | Name of a file in which the output should be sunk | 
| x | Object of class  | 
| ... | Further arguments to be passed. See
 | 
The hierarchical rater model is defined at the level of persons
P( \xi _{pi}=\xi  | \theta_p ) \propto \exp ( \xi
    \cdot a_i \cdot \theta_p - b_{ik}  ) 
 where \theta_p
is normally distributed with mean \mu and standard deviation \sigma.
At the level of ratings, the model is defined as
P( X_{pir}=x | \theta_p, \xi_{pi} ) \propto \exp(
- ( x - \xi_{pi} - \phi_{ir} )^2 / ( 2 \cdot \psi_{ir} ) ) 
A list with following entries
| person | Data frame with estimated person parameters | 
| item | Data frame with estimated item parameters | 
| rater_pars | Data frame with estimated rater parameters | 
| est_pars | Estimated item and trait distribution parameters arranged in vectors and matrices. | 
| sigma | Estimated standard deviation  | 
| mu | Estimated mean  | 
| mcmcobj | Object of class  | 
| summary.mcmcobj | Summary of all parameters | 
| EAP.rel | EAP reliability | 
| ic | Parameters for information criteria | 
| f.yi.qk | Individual likelihood evaluated at  | 
| f.qk.yi | Individual posterior evaluated at  | 
| theta_like | Grid of  | 
| pi.k | Discretized  | 
| like | Log-likelihood value | 
| MHprop | Updated parameters in Metropolis-Hastings sampling | 
Browne, W. J., & Draper, D. (2000). Implementation and performance issues in the Bayesian and likelihood fitting of multilevel models. Computational Statistics, 15, 391-420.
Patz, R. J., Junker, B. W., Johnson, M. S., & Mariano, L. T. (2002). The hierarchical rater model for rated test items and its application to large-scale educational assessment data. Journal of Educational and Behavioral Statistics, 27(4), 341-384.
Simulate the HRM with immer_hrm_simulate.
## Not run: 
library(sirt)
library(TAM)
#############################################################################
# EXAMPLE 1: Simulated data using the immer::immer_hrm_simulate() function
#############################################################################
# define data generating parameters
set.seed(1997)
N <- 500  # number of persons
I <- 4    # number of items
R <- 3    # number of raters
K <- 3    # maximum score
sigma <- 2  # standard deviation
theta <- stats::rnorm( N, sd=sigma )  # abilities
# item intercepts
b <- outer( seq( -1.5, 1.5, len=I), seq( -2, 2, len=K), "+" )
# item loadings
a <- rep(1,I)
# rater severity parameters
phi <- matrix( c(-.3, -.2, .5), nrow=I, ncol=R, byrow=TRUE )
phi <- phi + stats::rnorm( phi, sd=.3 )
phi <- phi - rowMeans(phi)
# rater variability parameters
psi <- matrix( c(.1, .4, .8), nrow=I, ncol=R, byrow=TRUE )
# simulate HRM data
data <- immer::immer_hrm_simulate( theta, a, b, phi=phi, psi=psi )
pid <- data$pid
rater <- data$rater
dat <- data[, - c(1:2) ]
#----------------------------------------------------------------
#*** Model 1: estimate HRM with equal item slopes
iter <- 3000
burnin <- 500
mod1 <- immer::immer_hrm( dat, pid, rater, iter=iter,  burnin=burnin )
summary(mod1)
plot(mod1,layout=2,ask=TRUE)
# relations among convergence diagnostic statistics
par(mfrow=c(1,2))
plot( mod1$summary.mcmcobj$PercVarRatio, log(mod1$summary.mcmcobj$effSize), pch=16)
plot( mod1$summary.mcmcobj$PercVarRatio, mod1$summary.mcmcobj$Rhat, pch=16)
par(mfrow=c(1,1))
# extract individual likelihood
lmod1 <- IRT.likelihood(mod1)
str(lmod1)
# extract log-likelihood value
logLik(mod1)
# write coda files into working directory
sirt::mcmclist2coda(mod1$mcmcobj, name="hrm_mod1")
#----------------------------------------------------------------
#*** Model 2: estimate HRM with estimated item slopes
mod2 <- immer::immer_hrm( dat, pid, rater, iter=iter,  burnin=burnin,
            est.a=TRUE, est.sigma=FALSE)
summary(mod2)
plot(mod2,layout=2,ask=TRUE)
# model comparison
anova( mod1, mod2 )
#----------------------------------------------------------------
#*** Model 3: Some prior specifications
prior <- list()
# prior on mu
prior$mu$M <- .7
prior$mu$SD <- 5
# fixed item parameters for first item
prior$b$M <-  matrix( 0, nrow=4, ncol=3 )
prior$b$M[1,] <- c(-2,0,2)
prior$b$SD <-  matrix( 10, nrow=4, ncol=3 )
prior$b$SD[1,] <- 1E-4
# estimate model
mod3 <- immer::immer_hrm( dat, pid, rater, iter=iter,  burnin=burnin, prior=prior)
summary(mod3)
plot(mod3)
#----------------------------------------------------------------
#*** Model 4: Multi-faceted Rasch models in TAM package
# create facets object
facets <- data.frame( "rater"=rater )
#-- Model 4a: only main rater effects
form <- ~ item*step + rater
mod4a <- TAM::tam.mml.mfr( dat, pid=pid, facets=facets, formulaA=form)
summary(mod4a)
#-- Model 4b: item specific rater effects
form <- ~ item*step + item*rater
mod4b <- TAM::tam.mml.mfr( dat, pid=pid, facets=facets, formulaA=form)
summary(mod4b)
#----------------------------------------------------------------
#*** Model 5: Faceted Rasch models with sirt::rm.facets
#--- Model 5a: Faceted Rasch model with only main rater effects
mod5a <- sirt::rm.facets( dat, pid=pid, rater=rater )
summary(mod5a)
#--- Model 5b: allow rater slopes for different rater discriminations
mod5b <- sirt::rm.facets( dat, pid=pid, rater=rater, est.a.rater=TRUE )
summary(mod5b)
#############################################################################
# EXAMPLE 2: data.ratings1 (sirt package)
#############################################################################
data(data.ratings1, package="sirt")
dat <- data.ratings1
# set number of iterations and burnin iterations
set.seed(87)
iter <- 1000
burnin <- 500
# estimate model
mod <- immer::immer_hrm( dat[,  paste0("k",1:5) ], pid=dat$idstud, rater=dat$rater,
             iter=iter, burnin=burnin )
summary(mod)
plot(mod, layout=1, ask=TRUE)
plot(mod, layout=2, ask=TRUE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.