Running ConQuest From Within R
The function R2conquest runs the IRT software ConQuest
(Wu, Adams, Wilson & Haldane, 2007) from within R.
Other functions are utility functions for reading item parameters, plausible values or person-item maps.
R2conquest(dat, path.conquest, conquest.name="console", converge=0.001,
    deviancechange=1e-04, iter=800, nodes=20, minnode=-6, maxnode=6,
    show.conquestoutput=FALSE, name="rasch", pid=1:(nrow(dat)), wgt=NULL, X=NULL,
    set.constraints=NULL, model="item", regression=NULL,
    itemcodes=seq(0,max(dat,na.rm=TRUE)), constraints=NULL, digits=5, onlysyntax=FALSE,
    qmatrix=NULL, import.regression=NULL, anchor.regression=NULL,
    anchor.covariance=NULL, pv=TRUE, designmatrix=NULL, only.calibration=FALSE,
    init_parameters=NULL, n_plausible=10,  persons.elim=TRUE, est.wle=TRUE,
    save.bat=TRUE, use.bat=FALSE, read.output=TRUE, ignore.pid=FALSE)
## S3 method for class 'R2conquest'
summary(object, ...)
# read all terms in a show file or only some terms
read.show(showfile)
read.show.term(showfile, term)
# read regression parameters in a show file
read.show.regression(showfile)
# read unidimensional plausible values form a pv file
read.pv(pvfile, npv=5)
# read multidimensional plausible values
read.multidimpv(pvfile, ndim, npv=5)
# read person-item map
read.pimap(showfile)| dat | Data frame of item responses | 
| path.conquest | Directory where the ConQuest executable file is located | 
| conquest.name | Name of the ConQuest executable. | 
| converge | Maximal change in parameters | 
| deviancechange | Maximal change in deviance | 
| iter | Maximum number of iterations | 
| nodes | Number of nodes for integration | 
| minnode | Minimum value of discrete grid of θ nodes | 
| maxnode | Maximum value of discrete grid of θ nodes | 
| show.conquestoutput | Show ConQuest run log file on console? | 
| name | Name of the output files. The default is  | 
| pid | Person identifier | 
| wgt | Vector of person weights | 
| X | Matrix of covariates for the latent regression model (e.g. gender, socioeconomic status, ..) or for the item design (e.g. raters, booklets, ...) | 
| set.constraints | This is the set.constraints in ConQuest. It can be
 | 
| model | Definition model statement. It can be for example
 | 
| regression | The ConQuest regression statement (for example  | 
| itemcodes | Vector of valid codes for item responses. E.g. for partial credit
data with at most 3 points it must be  | 
| constraints | Matrix of item parameter constraints. 1st column: Item names, 2nd column: Item parameters. It only works correctly for dichotomous data. | 
| digits | Number of digits for covariates in the latent regression model | 
| onlysyntax | Should only be ConQuest syntax generated? | 
| qmatrix | Matrix of item loadings on dimensions in a multidimensional IRT model | 
| import.regression | Name of an file with initial covariance parameters (follow the ConQuest specification rules!) | 
| anchor.regression | Name of an file with anchored regression parameters | 
| anchor.covariance | Name of an file with anchored covariance parameters (follow the ConQuest specification rules!) | 
| pv | Draw plausible values? | 
| designmatrix | Design matrix for item parameters (see the ConQuest manual) | 
| only.calibration | Estimate only item parameters and not person parameters (no WLEs or plausible values are estimated)? | 
| init_parameters | Name of an file with initial item parameters (follow the ConQuest specification rules!) | 
| n_plausible | Number of plausible values | 
| persons.elim | Eliminate persons with only missing item responses? | 
| est.wle | Estimate weighted likelihood estimate? | 
| save.bat | Save bat file? | 
| use.bat | Run ConQuest from within R due a direct call via the  | 
| read.output | Should ConQuest output files be processed? Default is  | 
| ignore.pid | Logical indicating whether person identifiers ( | 
| object | Object of class  | 
| showfile | A ConQuest show file ( | 
| term | Name of the term to be extracted in the show file | 
| pvfile | File with plausible values | 
| ndim | Number of dimensions | 
| npv | Number of plausible values | 
| ... | Further arguments to be passed | 
Consult the ConQuest manual (Wu et al., 2007) for specification details.
A list with several entries
| item | Data frame with item parameters and item statistics | 
| person | Data frame with person parameters | 
| shw.itemparameter | ConQuest output table for item parameters | 
| shw.regrparameter | ConQuest output table for regression parameters | 
| ... | More values | 
Wu, M. L., Adams, R. J., Wilson, M. R. & Haldane, S. (2007). ACER ConQuest Version 2.0. Mulgrave. https://shop.acer.edu.au/acer-shop/group/CON3.
See also the eat package (https://r-forge.r-project.org/projects/eat/) for elaborate functionality of using ConQuest from within R. See also the conquestr package for another R wrapper to the ConQuest software (at least version 4 of ConQuest has to be installed).
See also the TAM package for similar (and even extended) functionality for specifying item response models.
## Not run: 
# define ConQuest path
path.conquest <- "C:/Conquest/"
#############################################################################
# EXAMPLE 1: Dichotomous data (data.pisaMath)
#############################################################################
library(sirt)
data(data.pisaMath)
dat <- data.pisaMath$data
# select items
items <- colnames(dat)[ which( substring( colnames(dat), 1, 1)=="M" ) ]
#***
# Model 11: Rasch model
mod11 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
             pid=dat$idstud, name="mod11")
summary(mod11)
# read show file
shw11 <- sirt::read.show( "mod11.shw" )
# read person-item map
pi11 <- sirt::read.pimap(showfile="mod11.shw")
#***
# Model 12: Rasch model with fixed item difficulties (from Model 1)
mod12 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
             pid=dat$idstud, constraints=mod11$item[, c("item","itemdiff")],
             name="mod12")
summary(mod12)
#***
# Model 13: Latent regression model with predictors female, hisei and migra
mod13a <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
             pid=dat$idstud, X=dat[, c("female", "hisei", "migra") ],
             name="mod13a")
summary(mod13a)
# latent regression with a subset of predictors
mod13b <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
             pid=dat$idstud, X=dat[, c("female", "hisei", "migra") ],
             regression="hisei migra", name="mod13b")
#***
# Model 14: Differential item functioning (female)
mod14 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
             pid=dat$idstud, X=dat[, c("female"), drop=FALSE],
             model="item+female+item*female",  regression="",  name="mod14")
#############################################################################
# EXAMPLE 2: Polytomous data (data.Students)
#############################################################################
library(CDM)
data(data.Students)
dat <- data.Students
# select items
items <- grep.vec( "act", colnames(dat) )$x
#***
# Model 21: Partial credit model
mod21 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
              model="item+item*step",  name="mod21")
#***
# Model 22: Rating scale model
mod22 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
              model="item+step", name="mod22")
#***
# Model 23: Multidimensional model
items <- grep.vec( c("act", "sc" ), colnames(dat),  "OR" )$x
qmatrix <- matrix( 0, nrow=length(items), 2 )
qmatrix[1:5,1] <- 1
qmatrix[6:9,2] <- 1
mod23 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
            model="item+item*step", qmatrix=qmatrix, name="mod23")
#############################################################################
# EXAMPLE 3: Multi facet models (data.ratings1)
#############################################################################
library(sirt)
data(data.ratings1)
dat <- data.ratings1
items <- paste0("k",1:5)
# use numeric rater ID's
raters <- as.numeric( substring( paste( dat$rater ), 3 ) )
#***
# Model 31: Rater model 'item+item*step+rater'
mod31 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
              itemcodes=0:3, model="item+item*step+rater",
              pid=dat$idstud, X=data.frame("rater"=raters),
              regression="", name="mod31")
#***
# Model 32: Rater model 'item+item*step+rater+item*rater'
mod32 <- sirt::R2conquest(dat=dat[,items], path.conquest=path.conquest,
              model="item+item*step+rater+item*rater",
              pid=dat$idstud, X=data.frame("rater"=raters),
              regression="", name="mod32")
## End(Not run)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.