---
title: "Datasets"
author: "Alexander Häußer"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Datasets}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.height = 5,
  fig.width = 7
)
```

## Introduction

This vignette gives you a quick tour of the **time series datasets** embedded in `echos`:

* `m4_data`: Six monthly time series drawn from the well‑known M4 Forecasting Competition.
* `synthetic_data`: Ten synthetic time series, useful for teaching, prototyping and testing.


## Load packages

```{r packages, message = FALSE, warning = FALSE}
library(echos)
library(tidyverse)
library(tsibble)
```


## M4 data

The dataset `m4_data` is a `tsibble` with six monthly time series from the M4 Forecasting Competition. The dataset contains the following time series:

* M21655 (Demographic), 1995 Jan - 2015 Mar
* M21683 (Demographic), 2000 Jan - 2023 Apr
* M2717 (Macro), 1996 Jan - 2016 Nov
* M28597 (Industry), 1996 Jan - 2016 Dec
* M42529 (Finance), 2001 Jan - 2009 Apr
* M4813 (Macro), 1994 Apr - 2006 May

```{r m4-data}
m4_data
```

```{r m4-plot, fig.width = 7, fig.height = 7, echo = FALSE, fig.alt = "M4 Dataset"}
p <- ggplot()

p <- p + geom_line(
  data = m4_data,
  aes(
    x = index,
    y = value
  )
)

p <- p + facet_wrap(
  ~series,
  ncol = 2,
  scales = "free")

p <- p + labs(x = "Time")
p <- p + labs(y = "Value")
p
```


## Synthetic data

The dataset `synthetic_data` is a `tibble` with ten synthetic time series. The dataset contains the following time series:

* Square Wave
* Sawtooth Wave
* Harmonic Wave
* Harmonic Wave w/ Trend
* Amplitude Modulated Wave
* Frequency Modulated Wave
* AR(1) Process
* MA(2) Process
* White Noise Process
* Random Walk Process

```{r synthetic-data}
synthetic_data
```

```{r synthetic-plot, fig.width = 7, fig.height = 9, echo = FALSE, fig.alt = "Synthetic Dataset"}
p <- ggplot()

p <- p + geom_line(
  data = synthetic_data,
  aes(
    x = index,
    y = value
  )
)

p <- p + facet_wrap(
  ~factor(
    variable, 
    levels = c(
      "Square Wave",
      "Sawtooth Wave",
      "Harmonic Wave",
      "Harmonic Wave w/ Trend",
      "Amplitude Modulated Wave",
      "Frequency Modulated Wave",
      "AR(1) Process",
      "MA(2) Process",
      "White Noise Process",
      "Random Walk Process"
    )),
  ncol = 2,
  scales = "free")

p <- p + labs(x = "Time")
p <- p + labs(y = "Value")
p
```
