# Markov chain Monte Carlo sampling - ChangeLog ## Unreleased changes ## 0.8.1.0 - Automatic intermediate tuning for HMC and NUTS. - Fix documentation for generic proposals. - Tooling updates. - Slight runtime improvements (strictness annotations). ## 0.8.0.1 - Improve exception handling (also during execution of monitors; also improve the output). - Increase maximum tuning parameter. - Minor bug fix: acceptance rates are again reported at end of run. ## 0.8.0.0 - Use the new bytestring realfloat builder. - Fix a small memory leak during burn in with auto tuning. - Save chain after burn in. - New example (Poisson; see the respective [blog post](https://dschrempf.github.io/coding/2022-06-28-sample-from-a-posterior-using-markov-chain-monte-carlo-algorithms-and-haskell/)). - Simplify prior, likelihood, posterior, and Jacobian types. - Do not export `grabble`. - Remove chain index. - Remove `lengthT`. - Remove `ProposalOrder` default instance. - Use GHC 9.2.4 by default. - Reduce package dependencies as much as possible. ## 0.7.0.1 - Use random-1.2. This means, that the random number generator type has changed from `GenIO` (`System.Random.MWC`) to `IOGenM StdGen` (`System.Random.Stateful`). - Always try to save chain, not only on `UserInterupt`. - Hamiltonian proposals: - Split `HSettings` into `HParams` and `HStructure` (preparation for NUTS). - Rename `HTune` to `HTuningConf`. - No-U-Turn sampler (NUTS). - Significant changes to `Proposal` and `Tuner`. - `PResult`. - `ProposalSimple` -> `PFunction`; Return type is `(PResult, Maybe AcceptanceCounts)`. ## 0.6.2.5 - Provide unsafe loader for MHG algorithm (useful for initializing chains with different prior or likelihood functions from saves). - Documentation and readme. - Log normal prior distribution. - Parallel computation of prior and likelihood. Speculative parallelization; this change is not always beneficial, we will see. ## 0.6.2.4 - Specify covariance version bounds. Use `covariance-0.2.0.0` (specifically state that sigma is rescaled with `rescaleSWith`). ## 0.6.2.3 - Allow burn in with fast proposals only (`BurnInWithCustomAutoTUning`). Sometimes it is advantageous to hold back slow proposals initially, especially when the state is so far off that it does not make sense to compute complex proposals. - Hamiltonian proposal: Use automatic differentiation specialized to `Double` (roughly 10 percent faster). ## 0.6.2.2 - Remove dependency `monad-parallel`. Fix stackage build. ## 0.6.2.1 - Improve `logGammaG`. The calculation of the gamma function involves vectors; the generalized version needs boxed vectors, and is slow. Using `Typeable`, we now check if the type is `Double`, and use the fast version in this case. ## 0.6.2.0 - Improve leapfrog integrator. - Update tooling. - Cleanup proposals. ## 0.6.1.0 - Revamp Hamiltonian proposal (storable vectors). - Use mass matrices; allow tuning of all masses (covariance estimation using specialized estimators). ## 0.6.0.0 - Improve documentation. - Generalized priors allowing automatic differentiation. - Hamiltonian proposal. ### mcmc-tree - Moved to another repository: . ## 0.5.0.0 - Marginal likelihood estimation using thermodynamic integration or stepping stone sampling. - Various changes of function names (e.g., metropologis -> mhg). - Updated examples. - Proper but minimal logging framework. - Various other changes. ## 0.4.0.0 - Greatly improve documentation. - Major design change: Introduction of the `Algorithm` type class; algorithms are data types. See `MHG`. - Metropolic-coupled Markov chain Monte Carlo algorithm (parallel chains). - Optimal acceptance rate depends on dimension of proposal. - Use a circular trace with constant memory usage (big change). - Therefore, batch monitors use vectors now. - Always save chain with complete trace (but with sensible length). - Determine necessary trace length at initialization. - Rename `Item` to `Link`. - Rename `Status` to `Chain` and separate `Settings` and `Environment` from the `Chain`. - Many bug fixes. ## 0.3.0 - New shorter example/test for dating trees. - `noData` allows running a chain without likelihood function. - Give proposal parameters `PName`, `PDescription`, and `PWeight` newtype wrappers. - Give `Tune` a data type. - Allow periodical cleansing of state (`Cleaner`). - Add description string to proposals, so that they can be identified in an easier way. - Add simplices and proposals on simplices. - `slideUniform` renamed to `slideUniformSymmetric`. - Merge tools into internal. - Do not export internal modules. ## 0.2.4 - **Change order of arguments for proposals**. - ’slideStem’ was renamed to ’slideBranch’. - Change ProposalSimple from newtype to type. - Contravariant instances of parameter and batch monitors. Use `(>$<)` instead of `(@.)` and `(@#)`. - Add `gammaDirichlet` prior for partitioned dating analyses. ## 0.2.3 - Contrary proposals. - Change how monitors are lifted (use normal function, not a lens). - Priors. - Remove concurrent monitors (was slow). - Improve MCMC sampler output. ## 0.2.2 - Move away from hpack. ## 0.2.1 - Consistently use ByteString instead of Text. - Verbosity levels. - Improved handling of proposals, moves, and monitors. - Bactrian moves. - Many small changes. ## 0.1.3 Many changes; notably it is now possible to continue a Markov chain run.