anova {ltm}R Documentation

Anova method for fitted IRT models

Description

Performs a Likelihood Ratio Test between two nested IRT models or performs a parametric Bootstrap test for Rasch models.

Usage

## S3 method for class 'grm':
anova(object, object2, ...)

## S3 method for class 'ltm':
anova(object, object2, ...)

## S3 method for class 'rasch':
anova(object, object2 = NULL, B = 49, ...)

## S3 method for class 'tpm':
anova(object, object2, ...)

Arguments

object an object inheriting from either class grm, class ltm, class rasch or class tpm, representing the model under the null hypothesis.
object2 an object inheriting from either class grm, class ltm or class rasch, representing the model under the alternative hypothesis.
B the number of Bootstrap samples. See Details section for more info.
... additional arguments; currently none is used.

Details

If object is only supplied and object inherits from class rasch, then anova.rasch() performs a parametric Bootstrap test based on Pearson's chi-squared statistic. The Bootstrap approximation to the reference distribution is preferable compared with the ordinary Chi-squared approximation since the latter is not valid especially for large number of items (=> many response patterns with expected frequencies smaller than 1).

In particular, the Bootstrap test is implemented as follows:

Step 0:
Based on object compute the observed value of the statistic T_{obs}.
Step 1:
Simulate new parameter values, say theta^*, from N(hat{theta}, C(hat{theta})), where hat{theta} are the MLEs and C(hat{theta}) their large sample covariance matrix.
Step 2:
Using theta^* simulate new data (with the same dimensions as the observed ones), fit the Rasch model and based on this fit calculate the value of the statistic T_i.
Step 3:
Repeat steps 1-2 B times and estimate the p-value using [1 + {# T_i > T_{obs}}]/(B + 1).

If both object and object2 are supplied, then a likelihood ratio test between the two fitted models is performed.

Value

An object of either class aov.grm, class aov.ltm or class aov.rasch with components,

Tobs the value of the Pearson's chi-squared statistic for the observed data. Returned if object is only supplied.
B the B argument specifying the number of Bootstrap samples used. Returned if object is only supplied.
call the matched call of object. Returned if only object is supplied.
nam0 the name of object. Returned if object2 is also supplied.
L0 the log-likelihood under the null hypothesis (object). Returned if object2 is also supplied.
aic0 the AIC value for the model given by object. Returned if object2 is also supplied.
bic0 the BIC value for the model given by object. Returned if object2 is also supplied.
nam1 the name of object2. Returned if object2 is also supplied.
L1 the log-likelihood under the alternative hypothesis (object2). Returned if object2 is also supplied.
aic1 the AIC value for the model given by object2. Returned if object2 is also supplied.
bic1 the BIC value for the model given by object2. Returned if object2 is also supplied.
LRT the value of the Likelihood Ratio Test statistic. Returned if object2 is also supplied.
df the degrees of freedom for the test (i.e., the difference in the number of parameters). Returned if object2 is also supplied.
p.value the p-value of the test.

Warning

The code does not check if the models are nested! The user is responsible to supply nested models in order the LRT to be valid.

In anova.ltm and anova.rasch and when object2 represents a three parameter model, note that the null hypothesis in on the boundary of the parameter space for the guessing parameters. Thus, the Chi-squared reference distribution used by these function might not be totally appropriate.

Author(s)

Dimitris Rizopoulos dimitris.rizopoulos@med.kuleuven.be

See Also

grm, ltm, rasch, tpm

Examples


## LRT between the constrained and unconstrained GRMs 
## for the Science data:
m0 <- grm(Science[c(1,3,4,7)], constrained = TRUE)
m1 <- grm(Science[c(1,3,4,7)])
anova(m0, m1)

## LRT between the one- and two-factor models 
## for the Wirs data:
anova(ltm(Wirs ~ z1), ltm(Wirs ~ z1 + z2))

## GoF for the Rasch model for the Lsat data:
m <- rasch(Lsat)
anova(m)

## An LRT between the Rasch and a constrained 
## two-parameter logistic model for the Wirs data: 
m0 <- rasch(Wirs)
m1 <- ltm(Wirs ~ z1, constraint = cbind(c(1, 3, 5), 2, 1))
anova(m0, m1)

## An LRT between the constrained (discrimination 
## parameter equals 1) and the unconstrained Rasch
## model for the Lsat data: 
m0 <- rasch(Lsat, constraint = rbind(c(6, 1)))
m1 <- rasch(Lsat)
anova(m0, m1)

## An LRT between the Rasch and the two-parameter 
## logistic model for the Lsat data: 
anova(rasch(Lsat), ltm(Lsat ~ z1))


[Package ltm version 0.6-0 Index]