Provides methods to perform and analyse I-prior regression models. Estimation is done either via direct optimisation of the log-likelihood or an EM algorithm.
Based on the manuscript entitled "Regression and Classification with I-priors" by Wicher Bergsma (2018, arXiv:1707.00274). In a general regression setting, priors can be assigned to the regression function in a vector space framework, and the posterior estimate of the regression function obtained. An I-prior is defined as Gaussian with some prior mean (usually zero) and covariance kernel proportional to the Fisher information for the regression function.
This package performs regression modelling using I-priors in R.
It is intuitively designed to be similar to
lm, making use of familiar syntactical conventions and S3 methods, with both formula and non-formula based input.
The package estimates these parameters using direct log-likelihood maximisation, the expectation-maximisation (EM) algorithm, or a combination of both.
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 vignette provides an introduction to the concept of I-priors and also to using the package.
Install R/iprior either by downloading the latest CRAN release
or the developmental version from this GitHub repository. R/iprior makes use of several C++ code, so as a prerequisite, you must have a working C++ compiler. To get it:
sudo apt-get install r-base-devor similar.
The easiest way to then install from this repo is by using the devtools package. Install this first.
Then, run the following code to install and attach the
devtools::install_github("haziqj/iprior", build_vignettes = TRUE)library(iprior)
To fit an I-prior model to
x, where these are contained in the data frame
dat, the following syntax are equivalent.
mod <- iprior(y ~ x, data = dat) # formula based inputmod <- iprior(y = dat$y, x = dat$x) # non-formula based input
The call to
iprior() can be accompanied by several other model specification arguments, including choosing the RKHS, hyperparameters to estimate, estimation method, and others.
Control options for the estimation method of choice is done through the option
control = list().
Find the full list of options by typing
?iprior in R.
View the package vignette by typing
browseVignettes("iprior") in R or visiting this link.
This package is part of the PhD project entitled "Regression Modelling using priors depending on Fisher information covariance kernels (I-priors)" by Haziq Jamil [link].
iprior()to easily split training and test samples for cross-validation.
iprior_em_closed()which caused lambda to expand together with the number of iterations.
d-degree polynomial kernel with offset
kernL(), while still keeping support for the legacy
.kernL()function - although there are plans to phase out this in favour of the new one.
Pearsonare now referred to as
pearson, but there is backward compatability with the old references.
parsmoption for interactions has been removed - it's hardly likely that this is ever useful.
rootkernoption for Gaussian process regression has been removed. Should use specialised GPR software for this and keep this package for I-priors only.
orderoption to specify higher order terms has been removed in favour of polynomial kernels.
control = list(restarts = TRUE). By default it will use the maximum number of available cores to fit the model in parallel from different random initial values.
H(x) = H1(x) + ... + H_p(x[p]). This is only true for Canonical kernel. Now correctly applies the FBM kernel using the norm function on each multivariate
iprobitpackage. By using a probit link, the I-prior methodology is extended to categorical responses.
iprobitpackage. Added support for categorical response kernel loading.
ipriorModobjects by not saving
VarY.inv. Although these are no longer stored within an
ipriorModobject, they can still be retrieved via the functions
fbmOptim()whereby standard errors could not be calculated.
fbmOptim(): Ability to specify an interval to search for, and also the maximum number of iterations for the initial EM step.
fbmOptim()function to find optimum Hurst coefficient for fitting FBM I-prior models.
kernel = "FBM,<value>".
summary()output for now.
sigma()not being available from the
statspackage prior to R v3.3.0.
n > 1000. This is mainly due to the matrix multiplication and data storing process when the EM initialises. See issue #20.