https://github.com/akai01/ngboostforecast
Probabilistic Time Series Forecasting
https://github.com/akai01/ngboostforecast
forecasting machine-learning ngboost ngboost-forecast probabilistic-forecasts python r sklearn time-series
Last synced: 3 months ago
JSON representation
Probabilistic Time Series Forecasting
- Host: GitHub
- URL: https://github.com/akai01/ngboostforecast
- Owner: Akai01
- License: other
- Created: 2022-01-24T19:31:14.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-08-04T19:11:29.000Z (almost 4 years ago)
- Last Synced: 2025-12-18T20:16:03.285Z (6 months ago)
- Topics: forecasting, machine-learning, ngboost, ngboost-forecast, probabilistic-forecasts, python, r, sklearn, time-series
- Language: R
- Homepage:
- Size: 192 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE.md
Awesome Lists containing this project
README
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# ngboostForecast
The goal of ngboostForecast is to provide a tools for probabilistic forecasting by using Python's ngboost for R users.
## Installation
You can install the released version of ngboostForecast from [CRAN](https://CRAN.R-project.org) with:
``` r
install.packages("ngboostForecast")
```
And the development version from [GitHub](https://github.com/) with:
``` r
# install.packages("devtools")
devtools::install_github("Akai01/ngboostForecast")
```
## Example
This is a basic example which shows you how to solve a common problem:
```{r example}
library(ngboostForecast)
train = window(seatbelts, end = c(1983,12))
test = window(seatbelts, start = c(1984,1))
# without external variables with Ridge regression
model <- NGBforecast$new(Dist = Dist("LogNormal"),
Base = sklearner(module = "linear_model",
class = "Ridge"),
Score = Scores("LogScore"),
natural_gradient = TRUE,
n_estimators = 200,
learning_rate = 0.1,
minibatch_frac = 1,
col_sample = 1,
verbose = TRUE,
verbose_eval = 5,
tol = 1e-5)
model$fit(y = train[,2],
seasonal = TRUE,
max_lag = 12,
early_stopping_rounds = 10L)
fc <- model$forecast(h = 12, level = c(99,95,90, 80, 70, 60),
data_frame = FALSE)
autoplot(fc) + autolayer(test[,2])
```
# Tuning
## Set the parameters:
``` {r example2, echo = TRUE}
library(ngboostForecast)
dists <- list(Dist("Normal"))
base_learners <- list(sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 1),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 2),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 3),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 4),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 5),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 6),
sklearner(module = "tree", class = "DecisionTreeRegressor",
max_depth = 7))
scores <- list(Scores("LogScore"))
model <- NGBforecastCV$new(Dist = dists,
Base = base_learners,
Score = scores,
natural_gradient = TRUE,
n_estimators = list(10, 100),
learning_rate = list(0.1, 0.2),
minibatch_frac = list(0.1, 1),
col_sample = list(0.3),
verbose = FALSE,
verbose_eval = 100,
tol = 1e-5)
```
## Tune the model:
```{r example3, echo=TRUE, warning = FALSE, message = FALSE}
params <- model$tune(y = AirPassengers,
seasonal = TRUE,
max_lag = 12,
xreg = NULL,
early_stopping_rounds = NULL,
n_splits = 4L)
```
## Best parameters:
```{r eample4}
params
```