---
title: "Description of the network"
author: Loukia M. Spineli
date: "Latest version: `r Sys.Date()`"
source: vignettes/network_description.Rmd
output:
rmarkdown::html_vignette:
toc: true
toc_depth: 3
params:
EVAL: !r identical(Sys.getenv("NOT_CRAN"), "true")
vignette: >
%\VignetteIndexEntry{Description of the network}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup, include = FALSE}
library(rnmamod)
```
## Introduction
This vignette aims to illustrate the toolkits of the **rnmamod** package for the
creation of the network plot and summarisation of the corresponding outcome
data. If missing participant outcome data (MOD) have been extracted for all
trials of the dataset, the **rnmamod** package facilitates visualising the
proportion of MOD across the network and within the dataset.
## Example on a binary outcome
### Dataset preparation
We will use the systematic review of
[Bottomley et al., (2011)](https://pubmed.ncbi.nlm.nih.gov/21142838/) that
comprises 9 trials comparing six pharmacologic interventions with each other and
placebo for moderately severe scalp psoriasis. The analysed binary outcome is
the investigator global assessment response at 4 weeks (`?nma.bottomley2011`).
```{r set-options, echo = FALSE, comment = NA}
orig <- options(width = 1000)
nma.bottomley2011
options(orig)
```
The dataset has the one-trial-per-row format containing arm-level data for each
trial. This format is widely used for BUGS models. For a binary outcome, the
dataset must have a minimum of three items:
- item `t` that refers to the intervention identifier for the corresponding
(intervention) arm;
- item `r` that refers to the number of observed events in the corresponding
arm.
- item `n` that refers to the number of randomised participants in the
corresponding arm.
If there is at least one trial that reports the number of missing participants
per arm, we also include the item `m` in the dataset. If a trial reports the
*total* number of missing participants rather than the number of missing
participants per arm, we indicate with `NA` in the item `m` the arms of the
corresponding trial.\cr
In the example, the maximum number of interventions observed in a trial is four.
Therefore, each element comprises four columns (e.g., `t1`, `t2`, `t3`, `t4`) to
indicate the maximum number of arms in the dataset. Furthermore, all trials of
the dataset reported the number of missing participants per arm; therefore, the
element `m` appears in the dataset.
### The network plot
The function `netplot` (see ?netplot for help) creates the network plot using
only two arguments: the `data` for the dataset (in one-trial-per-row format) and
`drug_names` for the names of each intervention in the dataset.
```{r, results = "hide", fig.show = "hide"}
netplot(data = nma.bottomley2011, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"), show_multi = TRUE, edge_label_cex = 1)
```
```{r, echo = FALSE, results = "hide", fig.width = 5, fig.height = 5, fig.align = "center"}
netplot(data = nma.bottomley2011, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"), show_multi = TRUE, edge_label_cex = 1)
```
The intervention names in `drug_names` must be sorted in the ascending order of
their identifier. Hence, `1` in the element `t` refers to `BDP`,
(betamethasone dipropionate) `2` to `BMV` (betamethasone valerate), `3` to `CPL`
(calcipotriol) and so on. See Details in `?nma.bottomley20119` for the names
of the interventions.\cr
Each node refers to an intervention and each edge refers to a pairwise
comparison. The size of a node and the thickness of an edge are weighted by the
number of trials that investigated the corresponding intervention and pairwise
comparison, respectively.
### Network characteristics
`netplot` also produces a table with the characteristics of the network, such as
the number of interventions, number of possible comparisons, number of direct
comparisons (i.e., comparisons of interventions informed by at least one trial),
and so on:
```{r, echo = FALSE, fig.show = "hide"}
describe_network(data = nma.bottomley2011,
drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"),
measure = "OR",
save_xls = FALSE)$network_description
```
### Distribution of the outcome
Furthermore, `netplot` returns a table that summarises the number of trials,
number of randomised participants and the proportion of completers (participants
who completed the trial) **per intervention**. In the case of a binary outcome,
the table additionally illustrates the distribution of the outcome as proportion
across the corresponding trials:
```{r, echo = FALSE, fig.show = "hide"}
describe_network(data = nma.bottomley2011,
drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"),
measure = "OR",
save_xls = FALSE)$table_interventions
```
An identical table is returned for the **observed comparisons** in the network:
```{r, echo = FALSE, fig.show = "hide"}
describe_network(data = nma.bottomley2011,
drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"),
measure = "OR",
save_xls = FALSE)$table_comparisons
```
The users can export all tables in xlsx file at the working directory
of their project by adding the argument `save_xls = TRUE` in the `describe_network`
function.
### Distribution of missing participants across the network
When missing participants have been reported for *each arm of every* trial, we
use the `heatmap_missing_network` function to illustrate the distribution of the
proportion of missing participants **per intervention** (main diagonal) and
**observed comparison** (lower off-diagonal) in the network (see Details in
`?heatmap_missing_network`).
```{r, results = "hide", fig.show = "hide"}
heatmap_missing_network(data = nma.bottomley2011, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"))
```
```{r, echo = FALSE, results = "hide", fig.width = 7, fig.height = 7, fig.align = "center"}
heatmap_missing_network(data = nma.bottomley2011, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"))
```
The **green** colour implies a median
proportion of missing participant up to 5\%, and hence, a
**low risk** associated with the missing
participants. The **red** colour implies a
median proportion of missing participant over 20\%, and hence, a
**high risk** associated with the missing
participants; otherwise, **orange** indicates
a **moderate risk**.\cr
In the example, most of the interventions and observed comparisons were
associated with a *low* risk due the participant losses.
### Distribution of missing participants across the trials
Use the `heatmap_missing_dataset` function To illustrate the proportion of
missing participants in each arm of every trial in the dataset :
```{r, results = "hide", fig.show = "hide"}
heatmap_missing_dataset(data = nma.bottomley2011, trial_names = nma.bottomley2011$study, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"))
```
```{r, echo = FALSE, results = "hide", fig.width = 7.5, fig.height = 7, fig.align = "center"}
heatmap_missing_dataset(data = nma.bottomley2011, trial_names = nma.bottomley2011$study, drug_names = c("BDP", "BMV", "CPL", "CPL+polytar", "capasal", "TCF gel", "placebo"))
```
## References
Bottomley JM, Taylor RS, Ryttov J. The effectiveness of two-compound formulation
calcipotriol and betamethasone dipropionate gel in the treatment of moderately
severe scalp psoriasis: a systematic review of direct and indirect evidence.
*Curr Med Res Opin* 2011;**27**(1):251--268.
[doi: 10.1185/03007995.2010.541022](https://pubmed.ncbi.nlm.nih.gov/21142838/)