An implementation of Bayesian Adaptive Regression Splines (BARS) in C with S and R wrappers

Garrick Wallstrom, Jeffrey Liebner, Robert E. Kass

Research output: Contribution to journalArticlepeer-review

28 Scopus citations


BARS (DiMatteo, Genovese, and Kass 2001) uses the powerful reversible-jump MCMC engine to perform spline-based generalized nonparametric regression. It has been shown to work well in terms of having small mean-squared error in many examples (smaller than known competitors), as well as producing visually-appealing fits that are smooth (filtering out high-frequency noise) while adapting to sudden changes (retaining high-frequency signal). However, BARS is computationally intensive. The original implementation in S was too slow to be practical in certain situations, and was found to handle some data sets incorrectly. We have implemented BARS in C for the normal and Poisson cases, the latter being important in neurophysiological and other point-process applications. The C implementation includes all needed subroutines for fitting Poisson regression, manipulating B-splines (using code created by Bates and Venables), and finding starting values for Poisson regression (using code for density estimation created by Kooperberg). The code utilizes only freely-available external libraries (LAPACK and BLAS) and is otherwise self-contained. We have also provided wrappers so that BARS can be used easily within S or R.

Original languageEnglish (US)
Pages (from-to)1-21
Number of pages21
JournalJournal of Statistical Software
Issue number1
StatePublished - Jun 2008
Externally publishedYes


  • Curve-fitting
  • Free-knot splines
  • Nonparametric regression
  • Peri-stimulus time histogram
  • Poisson process

ASJC Scopus subject areas

  • Software
  • Statistics and Probability
  • Statistics, Probability and Uncertainty


Dive into the research topics of 'An implementation of Bayesian Adaptive Regression Splines (BARS) in C with S and R wrappers'. Together they form a unique fingerprint.

Cite this