nelm: Estimating a Nested Logit Model

Description Usage Arguments Details Value Author(s) References See Also Examples

Description

This function fits a Nested Logit model proposed by Suh and Bolt (2010). Like the Nominal Response Model this model is especially useful for multiple choice items. In contrast to the Nominal Response Model it models the correct answer category by means of a 2-PL model. For the distractors a NRM is fitted (for details take a closer look at the references mentioned below.)

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
nelm(reshOBJ, etastart = "aut", ctrl=list())

## S3 method for class 'nelm'
summary(object, RETURN=FALSE, ...)
## S3 method for class 'nelm'
print(x, ...)
## S3 method for class 'nelm'
deviance(object, ...)
## S3 method for class 'nelm'
logLik(object, ...)

Arguments

reshOBJ

An object of class reshNLM is expected. So the step before fitting the model is to reshape the data by means of the reshMG function.

etastart

A numerical vector or "aut" (which is the default). Starting values for the eta parameters can be changed (but is not necessary in typical cases).

ctrl

A list of arguments to customize the computations.

object

An object of class nlm.

x

An object of class nlm.

RETURN

A logical vector of length 1. If TRUE all result tables are returned by the summary function.

...

Details

The eta parameters in etastart denote the estimable parameters of the model. For example, for an item with 4 categories (1 correct answer and 3 distractors), 1 α, 1 β, 2 γ's (which substitute the 3 ζ's) and 2 ξ's (which substitute the 3 λ's) are constrained for the normalization (sum of parameter sets is zero).

The following arguments can be comitted within a list (ctrl argument)

Value

etapar

A numerical vector of eta-parameters

last_estep

A list of informations concerning the last e-step before convergence. This is nothing the typical user should care about.

last_mstep

The output provided by optim concerning the last M-step of the EM-Algorithm.

n_steps

The number of passed EM steps.

erg_distr

Estimates concerning the latent person distribution.

QUAD

Denotes a list containing the quadrature nodes and weights which were used as a-priori distribution.

starting_values

A list with infos concerning the starting values. The first entry gives merely the structure of the starting values whereas $ulstv gives the used starting values for the first EM step

EAPs

The exact a-posteriori values for each person - which is a person parameter estimate. (Group membership is considered.)

ZLpar

The list of item parameter estimates for each group.

SE

The list of standard errors for the item parameter estimates.

reshOBJ

The committed reshape object (which includes the data).

Catinf

A list which contains 1) the information amount for each category/item/group for a sequence of ability values; 2) the sequence of ability values; 3) test information (sum above all items) for each of the ability values.

call

Shows the actual call of the nrm function.

Author(s)

Manuel Reif

References

Suh, Y., & Bolt, D. M. (2010). Nested logit models for multiple-choice item response data. Psychometrika, 75, 454-473.

Suh, Y. & Bolt, D. M. (2011). A nested logit approach for investigating distractors as causes of differential item functioning. Journal of Educational Measurement, 48, 188-205.

Woods, C. M. (2007). Empirical Histograms in Item Response Theory With Ordinal Data. Education and Psychological Measurement, 67:1, 73-87.

Woods, C. M. (2011). DIF Testing With an Empirical-Histogram Approximation of the Latent Density for Each Group. Applied Measurement in Education, 24:3, 256-279.

See Also

reshMG

NLM.sim

nrm

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# create list of parameters
Item1 <- c(1,-2,c(-0.5,0.3,0.2),c(-0.5,-0.3,0.8))
names(Item1) <- c("a","b",paste("zeta1",1:3,sep=""),paste("lamb",1:3,sep=""))

Item2 <- c(1,-1,c(-0.5,-0.3,0.8),c(-0.5,0.3,0.2))
names(Item2) <- c("a","b",paste("zeta1",1:3,sep=""),paste("lamb",1:3,sep=""))

Item3 <- c(1,0,c(-0.5,-0.3,0.8),c(-0.5,0.3,0.2))
names(Item3) <- c("a","b",paste("zeta1",1:3,sep=""),paste("lamb",1:3,sep=""))

Item4 <- c(1,1,c(-0.5,-0.3,0.8),c(-0.5,0.3,0.2))
names(Item4) <- c("a","b",paste("zeta1",1:3,sep=""),paste("lamb",1:3,sep=""))

Item5 <- c(1,2,c(-0.5,-0.3,0.8),c(-0.5,0.3,0.2))
names(Item5) <- c("a","b",paste("zeta1",1:3,sep=""),paste("lamb",1:3,sep=""))

ParList <- list(Item1=Item1,Item2=Item2,Item3=Item3,Item4=Item4,Item5=Item5)

# simulate data
perp1 <- rnorm(1000,0,1)
simdat1 <- NLM.sim(ParList,perp1)

# reshape
reshOBJ <- reshMG(simdat1,items=1:5,groups=NA,correct=rep(0,5),design="nodif",echo=TRUE,TYPE="NLM")

# estimate a nested logit model with a maximum number of 40 EM iterations, 
# which is NOT recommanded and is just applied here because estimating the model
# during example checks on cran took too long with default settings

res.nlm <- nelm(reshOBJ=reshOBJ)

summary(res.nlm)



  

manuelreif/mcIRT documentation built on May 21, 2019, 11:26 a.m.