Learn R Programming

sirt (version 0.31-20)

rasch.copula2: Rasch Copula Model

Description

This function handles local dependence by specifying copulas for residuals in unidimensional item response models (Braeken, 2011; Braeken, Tuerlinckx & de Boeck, 2007). Estimation is allowed for item difficulties, item slopes and a generalized logistic link function (Stukel, 1988).

Usage

rasch.copula2(dat, itemcluster, copula.type ="bound.mixt" ,
    progress = TRUE, mmliter = 1000, delta = NULL, 
    theta.k = seq(-4, 4, len = 21), alpha1 = 0, alpha2 = 0, 
    numdiff.parm = 1e-06,  est.b = seq(1, ncol(dat)), 
    est.a = rep(1, ncol(dat)), est.delta = NULL, b.init = NULL , a.init = NULL ,  
    est.alpha = FALSE, glob.conv = 0.001, alpha.conv = 1e-04, conv1 = 0.001,
    dev.crit=.2)

Arguments

dat
An $N$ times $I$ data frame. Cases with only missing responses are removed from the analysis.
itemcluster
An integer vector of length $I$ (number of items). Items with the same integers define a joint item cluster of (positively) locally dependent items. Values of zero indicate that the corresponding item is not included in any item cluster of dependent r
copula.type
A character or a vector containing one of the following copula types: bound.mixt (boundary mixture copula), cook.johnson (Cook-Johnson copula) or frank (Frank copula). The vector copula.type must mat
progress
Print progress? Default is TRUE.
mmliter
Maximum number of iterations.
delta
An optional vector of starting values for the dependency parameter delta.
theta.k
Discretized trait distribution
alpha1
alpha1 parameter in the generalized logistic item reponse model (Stukel, 1988). The default is 0 which leads together with alpha2=0 to the logistic link function.
alpha2
alpha2 parameter in the generalized logistic item reponse model
numdiff.parm
Parameter for numerical differentiation
est.b
Integer vector of item difficulties to be estimated
est.a
Integer vector of item discriminations to be estimated
est.delta
Integer vector of length length(itemcluster). Nonzero integers correspond to delta parameters which are estimated. Equal integers indicate parameter equality constraints.
b.init
Initial $b$ parameters
a.init
Initial $a$ parameters
est.alpha
Should both alpha parameters be estimated? Default is FALSE.
glob.conv
Convergence criterion for all parameters
alpha.conv
Maximal change in alpha parameters for convergence
conv1
Maximal change in item parameters for convergence
dev.crit
Maximal change in the deviance. Default is .2.

Value

  • A list with following entries
  • N.itemclustersNumber of item clusters
  • itemEstimated item parameters
  • iterNumber of iterations
  • devDeviance
  • deltaEstimated dependency parameters $\delta$
  • bEstimated item difficulties
  • aEstimated item slopes
  • muMean
  • sigmaStandard deviation
  • alpha1Parameter $\alpha_1$ in the generalized item response model
  • alpha2Parameter $\alpha_2$ in the generalized item response model
  • icInformation criteria
  • theta.kDiscretized ability distribution
  • devianceDeviance
  • patternItem response patterns
  • datalistList of generated data frames during estimation
  • EAP.relReliability of the EAP
  • copula.typeType of copula
  • summary.deltaSummary for estimated $\delta$ parameters
  • f.qk.yiIndividual posterior
  • f.yi.qkIndividual likelihood
  • ...

References

Braeken, J. (2011). A boundary mixture approach to violations of conditional independence. Psychometrika, 76, 57-76. Braeken, J., Tuerlinckx, F. & De Boeck, P. (2007). Copulas for residual dependencies. Psychometrika, 72, 393-411. Stukel, T. A. (1988). Generalized logistic models. Journal of the American Statistical Association, 83, 426-431.

See Also

For a summary see summary.rasch.copula2. For simulating locally dependent item responses see sim.rasch.dep. Person parameters estimates are obtained by person.parameter.rasch.copula. See rasch.mml2 for the generalized logistic link function.

Examples

Run this code
#############################################
# Example 1: Reading data
#############################################

data(data.read)
dat <- data.read

# define item clusters
itemcluster <- rep( 1:3 , each=4 )

# estimate Copula model
mod1 <- rasch.copula2( dat=dat , itemcluster=itemcluster)

# estimate Rasch model
mod2 <- rasch.copula2( dat=dat , itemcluster=itemcluster , 
        delta=rep(0,3) , est.delta=rep(0,3 ) )

summary(mod1)
summary(mod2)

############################################################
# Simulated Example 2:
# 11 Items: 2 itemclusters with 2 resp. 3 dependent items
#           and 6 independent items
############################################################

set.seed(5698)
I <- 11                             # number of items
n <- 1500                           # number of persons
b <- seq(-2,2, len=I)               # item difficulties
theta <- rnorm( n , sd = 1 )        # person abilities
# itemcluster
itemcluster <- rep(0,I)
itemcluster[ c(3,5 )] <- 1
itemcluster[c(2,4,9)] <- 2
# residual correlations
rho <- c( .7 , .5 )

# simulate data
dat <- sim.rasch.dep( theta , b , itemcluster , rho )
colnames(dat) <- paste("I" , seq(1,ncol(dat)) , sep="")

# estimate Rasch copula model
mod1 <- rasch.copula2( dat , itemcluster = itemcluster )
summary(mod1)

# both itemclusters have Cook-Johnson copula as dependency
mod1c <- rasch.copula2( dat , itemcluster = itemcluster ,
			copula.type ="cook.johnson")
summary(mod1c)

# first item boundary mixture and second item Cook-Johnson copula
mod1d <- rasch.copula2( dat , itemcluster = itemcluster ,
			copula.type = c( "bound.mixt" , "cook.johnson" ) )
summary(mod1d)

# compare result with Rasch model estimation in rasch.copula2
# delta must be set to zero
mod2 <- rasch.copula2( dat , itemcluster = itemcluster , delta = c(0,0) ,
            est.delta = c(0,0) )
summary(mod2)

############################################################
# Simulated Example 3:
# 12 Items: Cluster 1 -> Items 1,...,4
#           Cluster 2 -> Items 6,...,9
#           Cluster 3 -> Items 10,11,12
############################################################

set.seed(967)
I <- 12                             # number of items
n <- 450                            # number of persons
b <- seq(-2,2, len=I)               # item difficulties
b <- sample(b)                      # sample item difficulties
theta <- rnorm( n , sd = 1 )        # person abilities
# itemcluster
itemcluster <- rep(0,I)
itemcluster[ 1:4 ] <- 1
itemcluster[ 6:9 ] <- 2
itemcluster[ 10:12 ] <- 3
# residual correlations
rho <- c( .35 , .25 , .30 )

# simulate data
dat <- sim.rasch.dep( theta , b , itemcluster , rho )
colnames(dat) <- paste("I" , seq(1,ncol(dat)) , sep="")

# estimate Rasch copula model 
mod1 <- rasch.copula2( dat , itemcluster = itemcluster )
summary(mod1)

# person parameter estimation assuming the Rasch copula model
pmod1 <- person.parameter.rasch.copula(raschcopula.object = mod1 )

# Rasch model estimation
mod2 <- rasch.copula2( dat , itemcluster = itemcluster , 
        delta = rep(0,3) , est.delta = rep(0,3) )
summary(mod1)
summary(mod2)

Run the code above in your browser using DataLab