---
title: "Pattern Causality in a large dataset"
author: "Stavros Stavroglou, Athanasios Pantelous, Hui Wang"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Pattern Causality in a large dataset}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  warning = FALSE,
  collapse = TRUE,
  comment = "#>"
)
```

If we want to catch the hidden causality in a large and complex system, which includes a lot series, we also provide some functions to show it better.

## Pattern causality matrix

The DJS data includes 29 stock price series, which is large enough for our analysis.

```{r message=FALSE}
library(patterncausality)
data(DJS)
#head(DJS)
```

Then we could estimate the pattern causality in this dataset by `pcMatrix` function.

```{r eval=FALSE}
dataset <- DJS[,-1] # remove the date column
result <- pcMatrix(dataset, E = 3, tau = 1, metric = "euclidean", h = 2, weighted = TRUE)
```

```{r echo=FALSE}
result <- readRDS("djsmatrix.rds")
```

Then we could see the three matrixs after calculating.
```{r}
head(result$positive)
```

Then we can visualize the result by `plotMatrix` function.

- positive status

```{r}
plotMatrix(result, status = "positive", method = "circle")
```

- negative status

```{r}
plotMatrix(result, status = "negative", method = "circle")
```

- dark status

```{r}
plotMatrix(result, status = "dark", method = "circle")
```

We could see that there is a obvious positive connection in this system.

## Pattern causality effect

After we get the matrix, we can find the total effect in the system, we provide the function `pcEffect` to achieve this target.

```{r}
effects <- pcEffect(result)
print(effects)
```

Then we could observe the total effect in pattern causality.

```{r}
plotEffect(effects, "negative",TRUE)
```