anova {ltm} | R Documentation |
Anova method for fitted IRT models
Description
Performs a Likelihood Ratio Test between two nested IRT models.
Usage
## S3 method for class 'gpcm'
anova(object, object2, simulate.p.value = FALSE,
B = 200, verbose = getOption("verbose"), seed = NULL, ...)
## S3 method for class 'grm'
anova(object, object2, ...)
## S3 method for class 'ltm'
anova(object, object2, ...)
## S3 method for class 'rasch'
anova(object, object2, ...)
## S3 method for class 'tpm'
anova(object, object2, ...)
Arguments
object |
an object inheriting from either class |
object2 |
an object inheriting from either class |
simulate.p.value |
logical; if |
B |
the number of Bootstrap samples. |
verbose |
logical; if |
seed |
the seed to be used during the parametric Bootstrap; if |
... |
additional arguments; currently none is used. |
Details
anova.gpcm()
also includes the option to estimate the p
-value of the LRT using a parametric Bootstrap approach.
In particular, B
data sets are simulated under the null hypothesis (i.e., under the generalized partial credit model
object
), and both the null and alternative models are fitted and the value of LRT is computed. Then the p
-value is
approximate using [1 + \sum\limits_{i=1}^B I(T_i > T_{obs})] / (B + 1),
where T_{obs}
is the value of the likelihood ratio statistic in the original data set, and T_i
the value of the statistic in the i
th
Bootstrap sample.
In addition, when simulate.p.value = TRUE
objects of class aov.gpcm
have a method for the plot()
generic function
that produces a QQ plot comparing the Bootstrap sample of likelihood ration statistic with the asymptotic chi-squared distribution. For instance,
you can use something like the following: lrt <- anova(obj1, obj2, simulate.p.value = TRUE); plot(lrt)
.
Value
An object of either class aov.gpcm
, aov.grm
, class aov.ltm
or class aov.rasch
with components,
nam0 |
the name of |
L0 |
the log-likelihood under the null hypothesis ( |
nb0 |
the number of parameter in |
aic0 |
the AIC value for the model given by |
bic0 |
the BIC value for the model given by |
nam1 |
the name of |
L1 |
the log-likelihood under the alternative hypothesis ( |
nb1 |
the number of parameter in |
aic1 |
the AIC value for the model given by |
bic1 |
the BIC value for the model given by |
LRT |
the value of the Likelihood Ratio Test statistic. |
df |
the degrees of freedom for the test (i.e., the difference in the number of parameters). |
p.value |
the |
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.
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 d.rizopoulos@erasmusmc.nl
See Also
GoF.gpcm
,
GoF.rasch
,
gpcm
,
grm
,
ltm
,
rasch
,
tpm
Examples
## LRT between the constrained and unconstrained GRMs
## for the Science data:
fit0 <- grm(Science[c(1,3,4,7)], constrained = TRUE)
fit1 <- grm(Science[c(1,3,4,7)])
anova(fit0, fit1)
## LRT between the one- and two-factor models
## for the WIRS data:
anova(ltm(WIRS ~ z1), ltm(WIRS ~ z1 + z2))
## An LRT between the Rasch and a constrained
## two-parameter logistic model for the WIRS data:
fit0 <- rasch(WIRS)
fit1 <- ltm(WIRS ~ z1, constraint = cbind(c(1, 3, 5), 2, 1))
anova(fit0, fit1)
## An LRT between the constrained (discrimination
## parameter equals 1) and the unconstrained Rasch
## model for the LSAT data:
fit0 <- rasch(LSAT, constraint = rbind(c(6, 1)))
fit1 <- rasch(LSAT)
anova(fit0, fit1)
## An LRT between the Rasch and the two-parameter
## logistic model for the LSAT data:
anova(rasch(LSAT), ltm(LSAT ~ z1))