Learn R Programming

Automatic forecasting and Bayesian modeling for time series

The bayesforecast package implements Bayesian estimation of structured time series models, using the Hamiltonian Monte Carlo method, implemented with Stan, a probabilistic language model in C++. The aim of this package is to provide an interface for forecasting and Bayesian modelling of the most popular time series models.

On the beta version 1.0.0, the available models are:

Additionally the forecast function is implemented for automatic forecast, by default a Generalized additive model from the prophet package is used.

Installation

This is still a beta version package, so currently installing it could be challenging, we recommend to install the current R version (R4.0) and the Rtools4.0. After that, install the package rstan, you can follow the installation procedure here.

To install the latest release version from CRAN use

install.packages("bayesforecast")

The current developmental version can be downloaded from github via:

if (!requireNamespace("remotes")) install.packages("remotes")

remotes::install_github("asael697/bayesforecast",dependencies = TRUE)

Case study: Analyzing the monthly live birth in U.S. an example

As an example, we provide a time series modelling for the monthly live births in the United States 1948-1979, published by Stoffer (2019). In figure 1 , the data has a seasonal behaviour that repeats every year. The series waves in the whole 40 years period (superior part). In addition, the partial (pacf) and auto-correlation (acf) functions are far from zero (middle part). After applying a difference to the data, the ACF and PACF plots still have some non-zero values every 12 lags (inferior part).

For start, a multiplicative Seasonal ARIMA model could give a good fit to the data, following Tsay (2010) recommendations for order selection using the auto-correlation functions, we define (p = 1, d = 1, q = 1) and for the seasonal part (P= 1, D = 1 and Q = 1). The fitted model is defined as follows

sf1 = stan_sarima(ts = birth,order = c(1,1,1),seasonal = c(1,1,1),
                  prior_mu0 = student(mu = 0,sd = 1,df = 7))

All fitted models are varstan objects, these are S3 classes with the stanfit results provided by the rstan package, and other useful elements that make the modeling process easier.

sf1
#> 
#> y ~ Sarima(1,1,1)(1,1,1)[12] 
#> 373 observations and 1 dimension 
#> Differences: 1 seasonal Differences: 1 
#> Current observations: 360 
#>  
#>              mean     se         5%        95%      ess   Rhat
#> mu0        0.0017 0.0019    -0.1973     0.2014 3358.708 0.9998
#> sigma0     7.3412 0.0043     6.9097     7.8165 3951.632 0.9998
#> ar        -0.2522 0.0013    -0.3717    -0.1176 3985.357 1.0004
#> ma        -0.0336 0.0014    -0.1853     0.0818 3928.152 1.0009
#> sar        0.0086 0.0014    -0.1515     0.1425 3982.520 1.0008
#> sma       -0.6750 0.0015    -0.7887    -0.4982 3869.922 1.0004
#> loglik -1231.6717 0.0307 -1235.4485 -1229.2336 3867.011 1.0021
#> 
#>  Samples were drawn using sampling(NUTS). For each parameter, ess
#>  is the effective sample size, and Rhat is the potential
#>  scale reduction factor on split chains (at convergence, Rhat = 1).

After fitting our model we can make a visual diagnostic of our parameters, check residuals and fitted values using the plot method. The package provides the posterior sample of every residual, but checking all of them is an exhausting task. An alternative, is checking the process generated by the residuals posterior estimate.

check_residuals(sf1)

A white noise behavior indicates a good model fit. The model’s residuals in figure 2, seems to follow a random noise, the auto-correlation in acf plots quickly falls to zero, indicating an acceptable model fit. Finally a forecast of the for the next year can be performed as:

autoplot(forecast(object = sf1,h = 12))

Automatic forecast with prophet

Automatic prediction is possible using the forecast function, by default the prediction is done using Generalized additive models from the prophet package.

library(astsa)
autoplot(object = forecast(cardox,h = 12),include = 100)

References

For further readings and references you can check:

  • Stan Development Team. 2018. Stan Modeling Language Users Guide and Reference Manual, Version 2.18.0. http://mc-stan.org

  • Forecasting: Principles and practice Monash University, Australia. Forecasting principles

  • Time Series Analysis and Its Applications, With R Examples — 4th Edition.astsa

  • facebook/prophet Quick start documentation. prophet

  • Orbit API Documentation and Examples. Orbit

Copy Link

Version

Install

install.packages('bayesforecast')

Monthly Downloads

475

Version

1.0.5

License

GPL-2

Maintainer

Asael Alonzo Matamoros

Last Published

June 5th, 2025

Functions in bayesforecast (1.0.5)

aust

International Tourists to Australia: Total visitor nights.
auto.sarima

Automatic estimate of a Seasonal ARIMA model
bayesforecast-package

Bayesian Time Series Modeling with Stan.
bayes_factor.varstan

Bayes Factors from Marginal Likelihoods.
bic

Computes posterior sample of the pointwise BIC method from a varstan object
gamma

Define a gamma prior distribution
fourier

Fourier terms for modeling seasonality.
autoplot.varstan

autoplot methods for varstan models.
model

Print the defined model of a varstan object.
garch

A constructor for a GARCH(s,k,h) model.
get_parameters

Get parameters of a varstan object.
gghist

Histogram with optional normal density functions
ggnorm

qqplot with normal qqline
log_lik.varstan

Extract posterior sample of the point wise log-likelihood from a varstan object.
get_prior

Get the prior distribution of a model parameter
predictive_error.varstan

Out-of-sample predictive errors
jeffrey

Define a non informative Jeffrey's prior for the degree freedom hyper parameter
check_residuals

Visual check of residuals in a varstan object.
cauchy

Define a Cauchy prior distribution
laplace

Define a Laplace prior distribution
naive

Naive and Random Walk models.
prior_summary.varstan

Generic function for extracting information about prior distributions
loglik

Extract posterior sample of the accumulated log-likelihood from a varstan object
ggacf

acf plot
exponential

Define an exponential prior distribution
extract_stan

Extract chains of an stanfit object implemented in rstan package
normal

Define a normal prior distribution
posterior_interval

Posterior uncertainty intervals
chisq

Define a chi square prior distribution
oildata

Annual oil production in Saudi Arabia
posterior_predict.varstan

Draw from posterior predictive h steps ahead distribution
report

Print a full report of the time series model in a varstan object.
print.SVM

Print a Stochastic Volatility model
residuals.varstan

Generic function and method for extract the residual of a varstan object
student

Define a t student prior distribution
fitted.varstan

Expected Values of the Posterior Predictive Distribution
forecast.varstan

Forecasting varstan objects.
inverse.gamma

Define an inverse gamma prior distribution
summary.varstan

Summary method for a varstan object
ipc

Monthly inflation coefficients from 1980-2018.
stan_naive

Naive and Random Walk models.
stan_SVM

Fitting a Stochastic volatility model.
stan_LocalLevel

Fitting a Local level state-space model.
print.Holt

Prints a Holt model.
stan_garch

Fitting for a GARCH(s,k,h) model.
print.Sarima

Print a Sarima model.
reexports

Objects exported from other packages
print.LocalLevel

Print a Local Level model
print.Hw

Print a Holt-Winter model
print.ssm

Print a state-space model.
print.garch

Print a garch model
print.naive

Print a naive model
ggpacf

pacf plot.
demgbp

DEM/GBP exchange rate log-returns
stan_Hw

Fitting a Holt-Winters state-space model.
print.varstan

Print a varstan object
stan_Holt

Fitting an Holt state-space model.
inverse.chisq

Define an inverse gamma prior distribution
waic.varstan

Widely Applicable Information Criterion (WAIC)
plot.varstan

plot methods for varstan models.
set_prior

Set a prior distribution to a model parameter.
mcmc_plot.varstan

MCMC Plots Implemented in bayesplot
loo.varstan

Leave-one-out cross-validation
posterior_epred.varstan

Expected Values of the Posterior Predictive Distribution
ssm

A constructor for a Additive linear State space model.
stan_ssm

Fitting an Additive linear State space model.
uniform

Define a uniform prior distribution
stan_sarima

Fitting a Multiplicative Seasonal ARIMA model.
varstan

Constructor of a varstan object.
Holt

A constructor for a Holt trend state-space model.
air

Air Transport Passengers Australia
as.stan

Convert to a stanfit object.
LocalLevel

A constructor for local level state-space model.
AICc

Computes posterior sample of the point wise corrected AIC method from a varstan object
SVM

Constructor of an Stochastic volatility model object
LKJ

Define a LKJ matrix prior distribution
Hw

A constructor for a Holt-Winters state-space model.
aic

Computes posterior sample of the point wise AIC method from a varstan object
bridge_sampler.varstan

Log Marginal Likelihood via Bridge Sampling.
Sarima

Constructor a Multiplicative Seasonal ARIMA model.
birth

U.S. Monthly Live Births.
beta

Define a beta prior distribution
autoplot.ts

Automatically create a ggplot for time series objects.