----------------------------------------------------------------
mirt 0.5.0
----------------------------------------------------------------

* all dichotomous, graded rating scale, (generalized) partial credit, rating scale, and nominal models 
  have been better optimized

* wald() will now support information matrices that contain constrained parameters

* confmirt.model() can accept a string inputs, which may be useful for knitr/sweave documents
  since the scan() function tends to hang

* multipleGroup() now has the logical options bfactor = TRUE to use the dimensional reduction algorithm 
  for when the factor pattern is structured like a bifactor model

* new fitIndices() function added to compute additional model fit statistics such as M2

* testinfo() function added for test information

* lower bound parameters under more stringent control during estimation and are bounded to never 
  be higher than .6

* infit and outfit stats in itemfit() now work for Rasch partial credit and rating scale models

* Rasch rating scale models can now be estimated with potential rsm.blocks (same as grsm model). 
  "Generalized" rating scale models can also be estimated, though this requires manipulating the 
  starting values directly

* added AICc and sample size adjusted BIC (SABIC) information statistics

* new mixedmirt() function for estimating IRT models with person and item level (e.g., LLTM) covariates.
  Currently only supports fixed effect predictors, but random effect predictors are being developed
 
* more structured output when using the anova() generic

* standard errors no longer slightly positively biased when parameter constraints are imposed 

----------------------------------------------------------------
mirt 0.4.2
----------------------------------------------------------------

* item probability functions now only permit permissible values, and models may converge even when
  the log-likelihood decreases during estimation. In the EM if the model does not have a strictly 
  increasing log-likelihood then a warning message will be printed

* infit and outfit statistics are now only applicable to Rasch models (as they should be), 
  and in itemfit/personfit() a 'method' argument has been added to specify which factor score 
  estimates should be used

* read.mirt() re-added into the package to allow for translating estimated models into a format
  usable by the plink package

* test standard error added to plot() generic using type = 'SE', and expected score plot added 
  to itemplot() using type = 'score'

* weighted likelihood estimation (WLE) factor scores now available (without standard errors)

* removed the allpars option to coef() generics and only return a named list with the (possibly 
  rotated) item and group coefficients

* information functions slightly positively biased due to logistic constant adjustment, 
  fixed for all models. Also, information functions are now available for almost all item response models
  (mcm items missing)

* constant (D) used in estimating logistic functions can now be modified (default is still 1.702)

* partcomp models recently broken, fixed now

* more than one parameter can now be passed to parprior to make specifying identical priors more 
  convenient 

----------------------------------------------------------------
mirt 0.4.1
----------------------------------------------------------------

* relative efficiency plots added to itemplot(). Works directly for multipleGroup analysis
  and for comparing different item types (e.g., 1PL vs 2PL) can be wrapped into a named list

* infit and outfit statistics added to personfit() and itemfit()

* empirical reliability printed for each dimension when fscores(..., fulldata = FALSE) called

* better system to specify fixed/free parameters and starting values using
  pars = 'values'. Should allow for much better simulation based work 

* graded model type rating scale added (Muraki, 1990) with optional estimation 'blocks'. Use 
  itemtype = 'grsm', and the grsm.block option

* for multipleGroup(), optional input added to change the current freely estimated parameters 
  to values of a previously computed model. This will save needless iterations in the EM and MHRM
  since these parameters should be much closer to the new ML estimates 

* itemplot() supports multipleGroup objects now

* analytical derivatives much more stable, although some are not yet optimized

* estimation bug fix in bfactor(), and slight bias fix in mirt() estimation (introduced in version
  0.4.0 when multipleGroup() added) 

* updated documentation and beamer slide show included for some background on MIRT and some 
  of the packages capabilities

* labels added to coef() when standard errors not computed. Also allpars = TRUE is now the default

* kernel estimation moved entirely to one method. Much easier to maintain and guarantees consistency
  across methods (i.e., no more quasi-Newton algorithms used)

----------------------------------------------------------------
mirt 0.4.0
----------------------------------------------------------------

* Added itemfit() and personfit() functions for uni and multidimensional models. Within itemfit
  empirical response curves can also be plotted for unidimensional models

* Wrapped itemplot() and fscores() into S3 function for better documentation. Also response curve
  now are all contained in individual plots

* Added free.start list option for all estimation functions. Allows a quicker way to 
  specify free and fixed parameters

* Added iteminfo() and extract.item() to calculate the item information and extract 
  desired items

* Multiple group estimation available with the multipleGroup() function. Uses the EM and MHRM
  as the estimation engines. The MHRM seems to be faster at two factors+
  though and naturally should be more accurate, therefore it is set as the default

* wald() function added for testing linear constraints. Useful in situations
  for testing sets of parameters rather than estimating a new model for a likelihood ratio test

* Methods that use the MHRM can now estimate the nominal, gpcm, mcm, and 4PL models

* fscores computable for multiple group objects and in general play nicer with missing data
  (reported by Judith Conijn). Also, using the options full.scores = TRUE has been optimized
  with Rcpp

* Oblique rotation bug fix for fscores and coef (reported by Pedro A. Barbetta)  

* Added the item probability equations in the ?mirt documentation for reference

* General bug fixes as usual that were spawned from all the added features. Overall, stay frosty.

----------------------------------------------------------------
mirt 0.3.1
----------------------------------------------------------------

* Individual classes now correspond to the type of methods: ExploratoryClass, 
  ConfirmatoryClass, and MultipleGroupClass

* plot and itemplot now works for confmirt objects

* mirt can now make use of confmirt.model specified objects and hence be confirmatory as well 

* stochastic estimation of factor scores removed entirely, now only quadrature based methods
  for all objects. Also, bfactor returned objects now will estimate all the factors scores instead
  of just the general dimension

* Standard errors for mirt now automatically calculated (borrowed from running a tweaked
  MHRM run)

----------------------------------------------------------------
mirt 0.3.0
----------------------------------------------------------------

* radically changed the underlying mechanisms for the 
  estimation functions and in doing so have decided that polymirt() was 
  redundant and could be replaced completely by calling confmirt(data, number_of_factors). The
  reason for the change was to facilitate a wider range or MIRT models and to allow for easier
  extensions to future multiple group analysis and multilevel modelling 

* new univariate and MV models are available, including the 1-4 parameter logistic
  generalized partial credit, nominal, and multiple choice models. These are called by specifying a character
  vector called 'itemtype' of length nitems with the options '2PL','3PL','4PL','graded','gpcm',
  'nominal', or 'mcm'; use 'PC2PL' and 'PC3PL' for partially-compensatory items. If itemtype = '1PL' or 'Rasch', 
  then the 1-parameter logistic/1-parameter ordinal or Rasch/partial credit models are estimated for 
  all the data. The default assumes that items are either '2PL' or 'graded', as before. 

* flexible user defined linear equality restrictions may be imposed on all estimation functions, 
  so too can prior parameter distributions, start values, and choice of which parameters to 
  estimate. These all follow these general 2 steps: 

    1) Call the function as you would normally would but use, for example, 
       mirt(data, 1, startvalues = 'index') to return the start values as they are indexed
    2) Edit them as you please (without changing the structure), then input them back into 
       the function as mirt(data, 1, startvalues = editedstartvalues). 

  This is true for the parprior (MAP priors), constrain (linear equality constraints), and 
  freepars (parameters freely estimated), each with their own little quirk. All inputs are lists
  with named parameters for easy identification and manipulation. Note that this means that
  the partial credit model and Rasch models may be calculated 
  as well by modifying either the start values and constraints accordingly (e.g., constrain all
  slopes to be equal to 1/1.702 and not freely estimated for the classical Rasch model, or all equal 
  but estimated for the 1PL model)

* number of confmirt.model() options decreased due to the new way to specify item types, startvalues, prior
  parameter distributions, and constraints

* plink package has not kept up with item information curves, so I'll implement my own for now.
  Replaced plink item plots from 'itemplots' function with ones that I rolled

* package descriptions and documentation updated

* coef() now prints slightly different output, with the new option 'allpars = TRUE' to display all
  the item and group parameters, returned as a list 

* simdata() updated to support new item types 

* more accurate standard errors for MAP and ML factor scores, and specific factors in bfactorClass
  objects can now be estimated for all methods


----------------------------------------------------------------
mirt 0.2.6-1
---------------------------------------------------------------

* dropped the ball and had lots of bug fixes this round. Future
  commits will avoid this problem by utilizing the testthat package
  to test code extensively before release

* internal change in confmirt function to move MHRM engine outside the 
  function for better maintenance

* theta_angle added to mirt and polymirt plots for changing the viewing angle 
  w.r.t theta_1 

* null model no longer calculated when missing data present

* fixed item slope models estimated in mirt() with associated standard errors

----------------------------------------------------------------
mirt 0.2.6
---------------------------------------------------------------

* null model computed, allowing for model statistics such as TLI

* documentation changes

* many back end technical details about estimation moved to technical lists

* support for all GPArotation methods and options, including Target rotations

* polymirt() uses confmirt() estimation engine

* 4PL support for mirt() and bfactor(), treating the upper bound as fixed

* coef() now has a rotate option for returning rotated IRT parameters

----------------------------------------------------------------
mirt 0.2.5
---------------------------------------------------------------

* Fixed translation bug in the C++ code from bfactor() causing illegal 
  vector length throw

* Fixed fscores() bug when using polychotomous items for mirt() and 
  bfactor()

* pass rotate='rotation' from mirt and polymirt to override default 
  'varimax' rotation at estimation time (suggested by 
  Niels Waller)

* RMSEA, G^2, and p set to NaN instead of internal placeholder when 
  there are missing data

* df adjusted when missing data present  

* oblique rotations return invisible factor correlation matrix

----------------------------------------------------------------
mirt 0.2.4
---------------------------------------------------------------

* degrees of freedom correctly adjusted when using noncompensatory
  items

* confmirtClass reorganized to work with S4 methods, now work
  more consistently with methods. 

* fixed G^2 and log-likelihood in logLik() when product terms included

* bugfix in drawThetas when noncompensatory items used

---------------------------------------------------------------
mirt 0.2.3
---------------------------------------------------------------

* bugfixes for fscores, itemplot, and generic functions

* read.mirt() added for creating a suitable plink object

* mirt() and bfactor() can now accommodate polychotomous items using 
  an ordinal IRT scheme

* itemplot() now makes use of the handy plink package plots, giving a 
  good deal of flexibility. 

* Generic plot()'s now use lattice plots extensively

----------------------------------------------------------------
mirt 0.2.2
----------------------------------------------------------------

* Ported src code into Rcpp for future tweaking. 

* Added better fitted() function when missing data exist (noticed by 
  Erin Horn)

----------------------------------------------------------------
mirt 0.2.1
----------------------------------------------------------------

* ML estimation of factor scores for mirt and bfactor

* RMSEA statistic added for all fitted models

* Nonlinear polynomial estimation specification for confmirt models, now
  with more consistent returned labels

* Provide better identification criteria for confmirt() (suggested by 
  Hendrik Lohse)

----------------------------------------------------------------
mirt 0.2.0
----------------------------------------------------------------

* parameter standard errors added for mirt() (1 factor only) and bfactor() models

* bfactor() values that are ommited are recoded to NA in summary and coef 
  for better viewing

* 'technical' added for confmirt function, allowing for various tweaks and 
  varying beta prior weights

* product relations added for confmirt.model(). Specified by enclosing in brackets
  and using an asterisk 

* documentation fixes with roxygenize  

----------------------------------------------------------------
mirt 0.1.20
----------------------------------------------------------------

* allow lower bound beta priors to vary over items (suggested by James Lee)

----------------------------------------------------------------
mirt 0.1.6
----------------------------------------------------------------

* bias fix for mirt() function (noticed by Pedro Barbetta)
