Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/RamiKrispin/TSstudio
Tools for time series analysis and forecasting
https://github.com/RamiKrispin/TSstudio
forecasting r rstats time-series timeseries tsstudio visualization
Last synced: 3 months ago
JSON representation
Tools for time series analysis and forecasting
- Host: GitHub
- URL: https://github.com/RamiKrispin/TSstudio
- Owner: RamiKrispin
- License: other
- Created: 2017-12-13T02:37:43.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-01-22T17:30:33.000Z (10 months ago)
- Last Synced: 2024-07-27T13:08:11.627Z (3 months ago)
- Topics: forecasting, r, rstats, time-series, timeseries, tsstudio, visualization
- Language: R
- Homepage: https://ramikrispin.github.io/TSstudio/
- Size: 41 MB
- Stars: 421
- Watchers: 25
- Forks: 65
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - RamiKrispin/TSstudio - Tools for time series analysis and forecasting (R)
README
[![CRAN\_Status\_Badge](https://www.r-pkg.org/badges/version/TSstudio)](https://cran.r-project.org/package=TSstudio)
[![Total Downloads](https://cranlogs.r-pkg.org/badges/grand-total/TSstudio)](https://cran.r-project.org/package=TSstudio)
[![Downloads](http://cranlogs.r-pkg.org/badges/TSstudio)](https://cran.r-project.org/package=TSstudio)
[![Lifecycle:Retired](https://img.shields.io/badge/Lifecycle-Retired-d45500)](https://cran.r-project.org/package=TSstudio)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/license/mit/)The [TSstudio](https://ramikrispin.github.io/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](https://CRAN.R-project.org/package=plotly) package engine, and set of tools for training and evaluating time series forecasting models from the [forecast](https://CRAN.R-project.org/package=forecast), [forecastHybrid](https://CRAN.R-project.org/package=forecastHybrid), and [bsts](https://CRAN.R-project.org/package=bsts) packages.
More information available on the package [vignettes](https://ramikrispin.github.io/TSstudio/articles/).
Installation
------------Install the stable version from [CRAN](https://CRAN.R-project.org/package=TSstudio):
``` r
install.packages("TSstudio")
```or install the development version from [Github](https://github.com/RamiKrispin/TSstudio):
``` r
# install.packages("devtools")
devtools::install_github("RamiKrispin/TSstudio")
```Usage
-----### Plotting time series data
``` r
library(TSstudio)
data(USgas)# Ploting time series object
ts_plot(USgas,
title = "US Monthly Natural Gas Consumption",
Ytitle = "Billion Cubic Feet")
```### Seasonality analysis
``` r
# Seasonal plot
ts_seasonal(USgas, type = "all")
`````` r
# Heatmap plot
ts_heatmap(USgas)
```### Correlation analysis
``` r
# ACF and PACF plots
ts_cor(USgas, lag.max = 60)
`````` r
# Lags plot
ts_lags(USgas, lags = 1:12)
`````` r
# Seasonal lags plot
ts_lags(USgas, lags = c(12, 24, 36, 48))
```### Training forecasting models
``` r
# 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)
`````` r
# Plotting the forecast
plot_forecast(fc)
`````` r
# 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%`
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```
``` r
# Plot the performance of the different models on the testing partitions
plot_model(md)
`````` r
# 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")
```