Linear Regression using I-Priors

Provides methods to perform and analyse I-prior regression models. Estimation is mainly done via an EM algorithm, but there is flexibility in using any optimiser.

Based on the manuscript entitled "Objective Bayes regression using I-priors" by Wicher Bergsma [2016, unpublished]. In a linear regression setting, priors can be assigned to the regression function using a vector space framework, and the posterior estimate of the regression function obtained. I-priors are a class of such priors based on the principle of maximum entropy.

This package performs linear regression modelling using I-priors in R. It is intuitively designed to be similar to lm, with both formula and non-formula based input. The parameters of an I-prior model are the scale parameters of the reproducing kernel Hilbert space (RKHS) over the set of covariates, lambda, and the standard deviation of model errors, sigma. While the main interest of I-prior modelling is prediction, inference is also possible, e.g. via log-likelihood ratio tests.

For installation instructions and some examples of I-prior modelling, continue reading below. The package is documented with help files, and the wiki is a good source to view some discussion topics and further examples.

R/iprior makes use of several C++ code, so as a prerequisite, you must have a working C++ compiler. To get it:

  • On Windows, install Rtools.
  • On Mac, install Xcode from the app store.
  • On Linux, sudo apt-get install r-base-dev or similar.

Install R/iprior by downloading the latest CRAN release.


If you wish to install the latest developmental release, then you can do so by getting it from this GitHub repository. To do this, you must first install the devtools package.


Then, run the following code to install and attach the iprior package.


To fit an I-prior model to mod regressing y against x, where these are contained in the data frame dat, the following syntax are equivalent.

mod <- iprior(y ~ x, data = dat)  # formula based input
mod <- iprior(y = dat$y, x = dat$x)  # non-formula based input

The call to iprior() can be accompanied by model options in the form of model = list(), such as choosing the RKHS, number of scale parameters, and others. Control options for the EM algorithm fit is done through the option control = list(). Find the full list of options by typing ?iprior in R.

Visit the the wiki page for some usage examples.



  • Fix for the installation error (#26) on old R releases (prior to 3.3.0). This error was caused by the generic S3 method sigma() not being available from the stats package prior to R v3.3.0.


  • Several bug fixes and cleanups makes this a CRAN-ready release.


  • Added documentation for the package.


  • Added multi-stage model fitting via kernL().


  • Massive improvement to the EM engine which brings about speed improvements.
  • Added a plotting feature.


  • Bug fixes.


  • Added support for Fractional Brownian Motion kernel (i.e. smoothing models).


  • Added the 'predicted log-likelihood feature' in the EM reporting.
  • WARNING: The I-prior package is currently not optimised for large datasets yet. You might encounter debilitating slowness for n > 1000. This is mainly due to the matrix multiplication and data storing process when the EM initialises. See issue #20.


  • More bug fixes.


  • Fixed an error in the predict() functionality.


  • Added progress feedback reporting feature for the EM algorithm.


  • Improved Pearson kernel generation, but still requires tweaking.


  • Added support for Pearson kernels (i.e. regression with categorical variables)


  • Major bug fixes.


  • Multiple scale parameters supported.


  • First useful release.
  • Only centred canonical kernel and a single scale parameter able to be used.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.6.4 by Haziq Jamil, a month ago

Report a bug at

Browse source code at

Authors: Haziq Jamil [aut, cre]

Documentation:   PDF Manual  

GPL (>= 3.0) license

Imports methods, RColorBrewer, Rcpp

Suggests knitr, MASS, rmarkdown, testthat

Linking to Rcpp, RcppEigen

See at CRAN