A Julia Package for Bayesian Optimal Design of Experiments

6df505a Clarify docstrings

16 days ago

5fcce5b Merge branch 'feature-grid-search' into develop

18 days ago


A Julia package for Bayesian optimal experimental design with nonlinear regression models.

repo | docs | change log

#Project Status

Beta. Mostly stable, breaking changes will be mostly cosmetic.


  • arbitrary nonlinear regression models
  • scalar or vector-valued response variable
  • variance-covariance matrix may depend on covariate
  • Bayesian and locally optimal design
  • design criteria: D, A
  • composite design problems
  • separation of design variables and model covariates
  • particle swarm optimization
  • direct maximization and exchange algorithm
  • modular and extendable
  • minimal dependencies


Kirstine.jl is in the General Julia package registry. You can install it with


Alternatively, you can get it directly from sourcehut:

Pkg.add(url = "https://git.sr.ht/~lsandig/Kirstine.jl")


Markdown, HTML

To get started, read the tutorial.

For a change log, see the list of annotated tags.

There is also a separate repository with additional examples.


Kirstine.jl is free and open source software. The code is licensed under GPL-3.0 or later, and the documentation under GFDL-1.3 or later.


Why yet another package for optimal design?

In R, there is already the ICAOD package for finding optimal designs in any model of which you can implement the Fisher information matrix. However, it is not as efficient as it could be and the code base is hard to extend for more complicated design problems. There are also various other packages (e.g., DoseFinding or PopED) for optimal design with special criteria or special kinds of nonlinear regression models. In Julia, there is already ExperimentalDesign.jl for block, factorial and response-surface designs in linear regression/ANOVA and polynomial regression models.

Kirstine.jl is an attempt to provide applied statisticians with a Julia package for optimal design in arbitrary nonlinear regression models. Its development goals are speed and modularity, as well as a small, stable and well-documented code base.


The source code of Kirstine.jl is managed on sourcehut.

Please post usage questions and general discussion on the kirstine-users mailing list.

Only bug reports should be filed on the issue tracker.

Patches are welcome and should be submitted via git send-email to the kirstine-devel mailing list. Please make sure that your patch does not break any existing tests and includes new tests for any functionality it adds.