Learn R Programming

TSstudio

The TSstudio package provides a set of tools descriptive and predictive analysis of time series data. That includes utility functions for preprocessing time series data, interactive visualization functions based on the plotly package engine, and set of tools for training and evaluating time series forecasting models from the forecast, forecastHybrid, and bsts packages.

More information available on the package vignettes.

Installation

Install the stable version from CRAN:

install.packages("TSstudio")

or install the development version from Github:

# install.packages("devtools")
devtools::install_github("RamiKrispin/TSstudio")

Usage

Plotting time series data

library(TSstudio)
data(USgas)

# Ploting time series object
ts_plot(USgas, 
        title = "US Monthly Natural Gas Consumption",
        Ytitle = "Billion Cubic Feet")

Seasonality analysis

# Seasonal plot
ts_seasonal(USgas, type = "all")

# Heatmap plot

ts_heatmap(USgas)

Correlation analysis

# ACF and PACF plots
ts_cor(USgas, lag.max = 60)
# Lags plot
ts_lags(USgas, lags = 1:12)
# Seasonal lags plot
ts_lags(USgas, lags = c(12, 24, 36, 48))

Training forecasting models

# Forecasting applications
# Setting training and testing partitions
USgas_s <- ts_split(ts.obj = USgas, sample.out = 12)
train <- USgas_s$train
test <- USgas_s$test

# Forecasting with auto.arima
library(forecast)
md <- auto.arima(train)
fc <- forecast(md, h = 12)

# Plotting actual vs. fitted and forecasted
test_forecast(actual = USgas, forecast.obj = fc, test = test)
# Plotting the forecast 
plot_forecast(fc)
# Run horse race between multiple models
methods <- list(ets1 = list(method = "ets",
                            method_arg = list(opt.crit = "lik"),
                            notes = "ETS model with opt.crit = lik"),
                ets2 = list(method = "ets",
                            method_arg = list(opt.crit = "amse"),
                            notes = "ETS model with opt.crit = amse"),
                arima1 = list(method = "arima",
                              method_arg = list(order = c(2,1,0)),
                              notes = "ARIMA(2,1,0)"),
                arima2 = list(method = "arima",
                              method_arg = list(order = c(2,1,2),
                                                seasonal = list(order = c(1,1,1))),
                              notes = "SARIMA(2,1,2)(1,1,1)"),
                hw = list(method = "HoltWinters",
                          method_arg = NULL,
                          notes = "HoltWinters Model"),
                tslm = list(method = "tslm",
                            method_arg = list(formula = input ~ trend + season),
                            notes = "tslm model with trend and seasonal components"))
# Training the models with backtesting
md <- train_model(input = USgas,
                  methods = methods,
                  train_method = list(partitions = 6, 
                                      sample.out = 12, 
                                      space = 3),
                  horizon = 12,
                  error = "MAPE")
# A tibble: 6 x 7
  model_id model       notes                                         avg_mape avg_rmse `avg_coverage_80%` `avg_coverage_95%`
  <chr>    <chr>       <chr>                                            <dbl>    <dbl>              <dbl>              <dbl>
1 arima2   arima       SARIMA(2,1,2)(1,1,1)                            0.0557     167.              0.583              0.806
2 hw       HoltWinters HoltWinters Model                               0.0563     163.              0.736              0.889
3 ets1     ets         ETS model with opt.crit = lik                   0.0611     172.              0.681              0.903
4 ets2     ets         ETS model with opt.crit = amse                  0.0666     186.              0.458              0.833
5 tslm     tslm        tslm model with trend and seasonal components   0.0767     220.              0.417              0.667
6 arima1   arima       ARIMA(2,1,0)                                    0.188      598.              0.875              0.958
# Plot the performance of the different models on the testing partitions
plot_model(md)
# Holt-Winters tunning parameters with grid search
hw_grid <- ts_grid(USgas, 
                   model = "HoltWinters",
                   periods = 6,
                   window_space = 6,
                   window_test = 12,
                   hyper_params = list(alpha = seq(0,1,0.1),
                                       beta = seq(0,1,0.1),
                                       gamma = seq(0,1,0.1)))
                                       
plot_grid(hw_grid, type = "3D")

Copy Link

Version

Install

install.packages('TSstudio')

Monthly Downloads

4,206

Version

0.1.7

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

August 9th, 2023

Functions in TSstudio (0.1.7)

res_hist

Histogram Plot of the Residuals Values
ts_sum

Summation of Multiple Time Series Objects
USUnRate

US Monthly Civilian Unemployment Rate
arima_diag

Diagnostic Plots for ARIMA Models
test_forecast

Visualize of the Fitted and the Forecasted vs the Actual Values
USgas

US monthly natural gas consumption
ts_grid

Tuning Time Series Forecasting Models Parameters with Grid Search
ts_decompose

Visualization of the Decompose of a Time Series Object
ts_polar

Polor Plot for Time Series Object
ts_plot

Plotting Time Series Objects
USVSales

US Monthly Total Vehicle Sales
zoo_to_ts

Converting 'zoo' object to 'ts' object
ts_info

Get the Time Series Information
US_indicators

US Key Indicators - data frame format
plot_error

Plot the Models Error Rates on the Testing Partitions
ts_heatmap

Heatmap Plot for Time Series
Coffee_Prices

Coffee Prices: Robusta and Arabica
plot_grid

Visualizing Grid Search Results
plot_model

Plot the Models Performance on the Testing Partitions
Michigan_CS

University of Michigan Consumer Survey, Index of Consumer Sentiment
ts_quantile

Quantile Plot for Time Series
plot_forecast

Plotting Forecast Object
ts_reshape

Transform Time Series Object to Data Frame Format
ts_surface

3D Surface Plot for Time Series
ts_seasonal

Seasonality Visualization of Time Series Object
create_model

A Functional Approach for Building the train_model Components
forecast_sim

Forecasting simulation
ts_split

Split Time Series Object for Training and Testing Partitions
xts_to_ts

Converting 'xts' object to 'ts' object
ts_lags

Time Series Lag Visualization
EURO_Brent

Crude Oil Prices: Brent - Europe
train_model

Train, Test, Evaluate, and Forecast Multiple Time Series Forecasting Models
ccf_plot

Time Series Cross Correlation Lags Visualization
ts_to_prophet

Transform Time Series Object to Prophet input
check_res

Visualization of the Residuals of a Time Series Model
ts_cor

An Interactive Visualization of the ACF and PACF Functions
ts_ma

Moving Average Method for Time Series Data