Provides a user-friendly way for the analysis of multinomial processing tree (MPT) models (e.g., Riefer, D. M., and Batchelder, W. H. [1988]. Multinomial modeling and the measurement of cognitive processes. Psychological Review, 95, 318-339) for single and multiple datasets. The main functions perform model fitting and model selection. Model selection can be done using AIC, BIC, or the Fisher Information Approximation (FIA) a measure based on the Minimum Description Length (MDL) framework. The model and restrictions can be specified in external files or within an R script in an intuitive syntax or using the context-free language for MPTs. The 'classical' .EQN file format for model files is also supported. Besides MPTs, this package can fit a wide variety of other cognitive models such as SDT models (see fit.model). It also supports multicore fitting and FIA calculation (using the snowfall package), can generate or bootstrap data for simulations, and plot predicted versus observed data.

```
***************************
** MPTinR VERSION 1.10.x **
***************************
Changes in MPTinR Version 1.10.x
Released July 2015
Significant User Visible Changes and new Features
o added 850 ROCs used in the meta-analysis of Klauer and Kellen (2015),
see ?roc6.
Bugfixes
o The changes made to the FIA calculation for summed data in version 1.7
were incorrect. FIA for multiple data sets simply needs to be summed to
correspond to FIA when these data sets were fitted in a super-model
(with separate parameters for each data set). Consequently, the old
behavior of simply summing FIA was restored in both fit.mpt et al. and
select.mpt. Vignette was updated to show this.
o all functions from default packages imported.
o FIA for first data set was sometimes incorrectly treated
as different from get.mpt.fia (or fit.mpt).
**************************
** MPTinR VERSION 1.9.x **
**************************
Changes in MPTinR Version 1.8.x
Released June 2015
Significant User Visible Changes and new Features
o added updated version of the MPTinR paper as vignette.
o removed URL (site was not updated anymore).
Bugfixes
o select.mpt was still giving wrong FIA values for multiple data
sets (used G^2 instead of 0.5*G^2).
o the summed FIA value in the output from fit.mpt and the like was
also incorrect (also used G^2 instead of 0.5*G^2)
**************************
** MPTinR VERSION 1.8.x **
**************************
Changes in MPTinR Version 1.8.x
Released April 2015
Significant User Visible Changes and new Features
o
Bugfixes
o bug that prevented inequalities to be correctly taken into
account for calculation of FIA is corrected (Thanks to
Christoph Klauer for noticing this). This bug was introduced in
version 1.6.
o prepare.mpt.fia was not working, fixed.
**************************
** MPTinR VERSION 1.7.x **
**************************
Changes in MPTinR Version 1.7.x
Released March 2015
Significant User Visible Changes and new Features
o less messages if show.messages == FALSE.
Bugfixes
o summed BIC and FIA values were calculated incorrectly (i.e.,
the individual values were simply summed which is incorrect due
to the non-linear nature of the log(n) term). This is now
corrected for both the output of fit.mpt (et al.) and
select.mpt (for which now summed BIC and FIA are always
calculated anew for multiple data sets).
o removed note in documentation that gen.X functions are rather
new. They are well tested by now.
o bmpt.fia should now work without snowfall without throwing a
warning.
**************************
** MPTinR VERSION 1.6.x **
**************************
Changes in MPTinR Version 1.6.x
Released October 2014
Significant User Visible Changes and new Features
o numDeriv is now only imported and not attached.
o names for models passed to select.mpt are now automatically
determined via match.call().
o changed the maintainer email address.
Bugfixes
o C++ code now uses Rcpp attributes.
o A bug prohibiting computation of FIA for models without
inequality restrictions and with DEBUG flags enabled when
compiling should now be resolved. The computation causing it is
skipped when no inequalities are present.
o calculating FIA via fit.model did not work for individual data
sets.
o get.mpt.fia: added examples outside dontrun{} blocks running
simple fia tests, with and without inequalities.
o all calls to snowfall prefaced with snowfall:: to avoid CRAN
NOTEs.
**************************
** MPTinR VERSION 1.5.x **
**************************
Changes in MPTinR Version 1.5.x
Released August 2014
Significant User Visible Changes and new Features
o added numDeriv argument to fit functions (fit.mpt, fit.model, &
fit.mptinr) which allows to deactivate numerical estimation of
hessian (for calculation of CIs) as it may be extremely time
consuming.
Bugfixes
o
**************************
** MPTinR VERSION 1.4.x **
**************************
Changes in MPTinR Version 1.4.x
Released May 2014
Significant User Visible Changes and new Features
o
Bugfixes
o repaired mConst argument and FIA function.
**************************
** MPTinR VERSION 1.3.x **
**************************
Changes in MPTinR Version 1.3.x
Released April 2014
Significant User Visible Changes and new Features
o added args.fia argument to fit.mpt and fit.model to pass
arguments to get.mpt.fia (such as mConst, see below).
o added function lbmpt.to.mpt to transform a model in
LBMPT into model equations (thanks to Quentin Gronau
and Franz Dietrich).
o added restrictions argument to make.mpt.cf.
o added example on how to fit a confidence rating SDT model to
?fit.model.
Bugfixes
o added mConst argument to bmpt.fia (+ get.mpt.fia) to avoid
numerical underflows with huge models when calculating FIA.
see: http://stackoverflow.com/q/20529407/28957
(this argument should be used carefully).
o check.model argument in fit.model was also responsible
for certain sanity checks in the objective et al.
This frequently led to errors which are now silently
dropped.
**************************
** MPTinR VERSION 1.2.x **
**************************
Changes in MPTinR Version 1.2.x
Released November 2013
Significant User Visible Changes and new Features
o Most warnings (e.g., concerning unsuccessful optimization
with analytic gradient) are now messages.
o Added error message when the objective function did not
evaluate successfully with the given starting values.
o restrictions to constants can now be set to any value
(not anymore restricted to be within 0 and 1).
o fit.model and gen.predictions (et al.) have argument
check.model which allows to suppress the check if the
expected values of a model sum to 1.
Bugfixes
o Removed bug that crashed the main functions when Hessian
function failed to produce reasonable results.
o FIA calculation could fail when determinant of Fisher matrix
was below 0 as it did not take the absolute value
(as does the original code by Wu et al.). This should be
fixed now and FIA again works for all (BMPT) models.
o check.mpt doesn't fail anymore if any of the predictions is
NA or NaN.
o Removed bug that crashed MPTinR when fitting a model with a
single free parameter to multiple datasets (bug reported by
Alberto Mirisola)
o fit.mpt gives a warning when FIA fails due to model not being
a BMPT (instead of failing).
**************************
** MPTinR VERSION 1.1.x **
**************************
Changes in MPTinR Version 1.1.x
Released May 2013
Significant User Visible Changes and new Features
o Calculation of FIA uses RcppEigen for dramatic speed
improvements (thanks to Christian Mueller).
o FIA calculation can also be parallelized, see bmpt.fia
(but even in fit.mpt or fit.model, if multicore is not "none",
or in get.mpt.fia)
o documentation now says that extra brackets will distort FIA
calculation (Thanks to Joachim Vandekerckhove and
EJ Wagenmakers)
o added possibility to specify individual bounds for
random starting values (via two element list).
o multicore fitting now uses load balancing.
o select.mpt shows how often p < .05 when results consists
of multiple data sets. (p.smaller.05)
Bugfixes
o Added note that LLKs do not include factorial constant of the
multinomial PMF.
o (hopefully) repaired bug in make.mdt() with matrix/data.frame
**************************
** MPTinR VERSION 1.0.x **
**************************
Changes in MPTinR Version 1.0.x
Released January 2013
Significant User Visible Changes and new Features
o added function plot.prediction for plotting obersved versus
predicted data.
o added fia.penalty to information criteria output and to select.mpt.
o added G.Square, df, and p to output of select.mpt
o argument dataset added to select.mpt. Allows to select only certain
datasets for the comparison (argument may be of length > 1).
o added CITATION file (as our Behavior Research Methods paper finally
came out)
Bugfixes
o select.mpt works now if some some models (with multiple datasets)
were fitted with fit.aggregated = FALSE.
o select.mpt returns the aggregated GoF (G^2, df, p) when output = "full"
o You can now pose an order restriction on variables that may also
be restricted to be equal to others. E.g., the following restriction
is allowed list("G2 < G3 < G5", "G1 = G2", "G4 = G5") and produces
the desired results, see r-forge/MPTinR/bugs/restrictionsbug.order.R
Note that in this case G1 would be marked as inequality restricted
instead of equality restricted (which is not the case for G4).
**************************
** MPTinR VERSION 0.9.x **
**************************
Changes in MPTinR Version 0.9.x
Released July 2012
Significant User Visible Changes and new Features
o added functions gen.data, sample.data and gen.predictions
for bootstrapping, generating data and predictions.
o coments in model and restrictions files are now treated as in R:
Everything to the right of a # is ignored and NOT the whole line!
o MPTinR is now byte compiled.
o make.mdt can now handle a matrix or data.frames building a big mdt file.
Bugfixes
o fixed bug when obtaining fia from textConnection also for fit.model()
**************************
** MPTinR VERSION 0.8.x **
**************************
Changes in MPTinR Version 0.8.x
Released February - May 2012
Significant User Visible Changes and new Features
o fit.mpt and fit.model (see version 0.7.0) are now just wrappers around
the new function fit.mptinr. They produce the appropirate objective, gradient,
hessian, and prediction function to fit the model.
o fit.model contains an example of how to fit a SDT. see ?fit.model.
Dont forget to set lower.bound and upper.bound when fitting non-MPT models.
o fit.mptinr is a new function that takes an arbitrary objective function and
possibly a gradient, hessian and prediction function to fit categorical
data (see examples in ?fit.model).
o fitting for MPT and similar models is done using a gradient function,
which significantly improves fitting speed. In the rare cases where fitting
fails using the gradient a numerical gradient is still used (with warning).
o The Hessian Matrix for MPTs and similar models is now symbolically
derived yielding an exact Hessian matrix (before it was numerically estimated
leading to incorrect Hessians whean paramaters were exactly at the boundary).
o fitting is now based on nlminb instead of optim's L-BFGS-B
(using L-BFGS-B is available in fit.mpt.old)
o models and restrictions can now be specified using textConnections instead of
only external files. See examples in ?fit.mpt and especially ?fit.model.
restrictions can be specified as a list of characters.
o added make.mdt, a function to make .mdt data files which can be read by multiTree
or HMMTree.
o new argument show.messages added to the fitting function (default = TRUE). If
FALSE the time messeages around the fitting algorithm are suppressed.
o expanded check.mpt functionality (now gives number of categories and
number of independent categories)
o all fitting functions have the argument fit.aggregated to indicate whether or not
the aggregated data (for multiple datasets) should be fitted. Default is TRUE
o summary.llks was renamed to fitting.runs
o model.info now gives the rank of the Fisher Matrix (instead of the rank of the Hessian Matrix).
Bugfixes
o resolved small bug when fitting using multicore = "individual"
o no more warning message if CIs cannot be computed.
o select.mpt now compares aggregated FIA for output = "full"
o select.mpt now rounds information criteria before determining number of
best fits
o no more warnings by cell counts below 5 (seems unprincipled)
o fixed bug when restricted parameters were not in the original model
(now throws a warning, thanks to Alex)
**************************
** MPTinR VERSION 0.7.0 **
**************************
Changes in MPTinR Version 0.7.0
Released January 2012
Significant User Visible Changes
o now contains fit.model() a copy of fit.mpt() with arguments for lower and upper bounds
for the parameters. You should be able to fit a lot more models with this function.
(fit.model() is slightly slower than fit.mpt() for MPTs)
New Features / Bugfixes
o MPTinR should now allow easy model files with all types of operators (not only + - *)
and even R functions (e.g., pnorm, ...) via the function fit.model()
**************************
** MPTinR VERSION 0.6.5 **
**************************
Changes in MPTinR Version 0.6.5
Released June 2011
Significant User Visible Changes
o
New Features / Bugfixes
o added a parameter to specify the starting values for the fitting routine (in fit.mpt)
**************************
** MPTinR VERSION 0.6.4 **
**************************
Changes in MPTinR Version 0.6.4
Released June 2011
Significant User Visible Changes
o
New Features / Bugfixes
o added URL to DESCRIPTION file.
o corrected more problems in bmpt.fia when using small models that
were related to differences in matrix functionality of Matlab
and R (the problem is R's default of '[', drop = TRUE).
**************************
** MPTinR VERSION 0.6.3 **
**************************
Changes in MPTinR Version 0.6.3
Released April 2011
Significant User Visible Changes
o get.mpt.fia modified such that bmpt.fia is only called as often as
there are differences in the hank.join parameters (i.e., only if
the ratio between the trees differ, not the ns). As a consequence,
CFIA is calculated as part of get.mpt.fia. Furthermore, CIs of CFIA
are not returned by get.mpt.fia.
o fit.mpt adjusted to use the optimization of get.mpt.fia (see above)
for multi-individual fit. That is, fit.mpt now calls get.mpt.fia
only once (previous were two calls, one for for individual data,
one for aggregated data).
o objective function in fit.mpt vectorized (previous was using
for-loop). Obtained speed up: ~40%.
New Features / Bugfixes
o bmpt.fia fixed to deal with models without restricted parameters
(was necessary as we did not use en empty matrix correctly)
o Corrected a bug that lead to a wrong labeling of restricted
parameters in the mean parameter table for multi-individual fit
when using sort.param = TRUE.
o Corrected a bug in the R implementation of bmpt.fia, when only one
parameter was fixed.
```