--- title: "Step 4: Obtain aggregated data on temporal symmetry" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{a05_Summarise_temporal_symmetry} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( warning = FALSE, message = FALSE, collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5, eval = Sys.getenv("$RUNNER_OS") != "macOS" ) ``` ```{r, include = FALSE} if (Sys.getenv("EUNOMIA_DATA_FOLDER") == "") Sys.setenv("EUNOMIA_DATA_FOLDER" = tempdir()) if (!dir.exists(Sys.getenv("EUNOMIA_DATA_FOLDER"))) dir.create(Sys.getenv("EUNOMIA_DATA_FOLDER")) if (!CDMConnector::eunomia_is_available()) CDMConnector::downloadEunomiaData() ``` # Introduction In this vignette we will explore the functionality and arguments of `summariseTemporalSymmetry()` function. This function uses `cdm$intersect` introduced in the previous vignette **Step 1. Generate a sequence cohort** to produce aggregated statistics containing the frequency for different time gaps between the initiation of the marker and the initiation of the index (`marker_date` $-$ `index_date`). The work of this function is best illustrated via an example. ```{r message= FALSE, warning=FALSE, include=FALSE} # Load libraries library(CDMConnector) library(dplyr) library(DBI) library(CohortSymmetry) library(duckdb) library(DrugUtilisation) # Connect to the database db <- DBI::dbConnect(duckdb::duckdb(), dbdir = CDMConnector::eunomia_dir()) cdm <- cdm_from_con( con = db, cdm_schema = "main", write_schema = "main" ) # Generate cohorts cdm <- DrugUtilisation::generateIngredientCohortSet( cdm = cdm, name = "aspirin", ingredient = "aspirin") cdm <- DrugUtilisation::generateIngredientCohortSet( cdm = cdm, name = "acetaminophen", ingredient = "acetaminophen") ``` Recall that in the previous vignette, we've used `cdm$aspirin` and `cdm$acetaminophen` to generate `cdm$intersect` like so: ```{r message= FALSE, warning=FALSE} # Generate a sequence cohort cdm <- generateSequenceCohortSet( cdm = cdm, indexTable = "aspirin", markerTable = "acetaminophen", name = "intersect", combinationWindow = c(0,Inf)) ``` # Obtaining temporal symmetry ```{r message= FALSE, warning=FALSE} summariseTemporalSymmetry(cohort = cdm$intersect) |> dplyr::glimpse() ``` The default unit of the difference of two initiations is measured in months. In this example, the first row is showing there are $6$ cases of *index* happening **after** *marker* with the gap being $29$ months whereas the second row is showing there are $7$ cases of *index* happening **before** *marker* with the gap being $40$ months. ## Modify the cohort based on `cohort_definition_id` This parameter is used to subset the cohort table inputted to the `summariseTemporalSymmetry()`. Imagine the user only wants to include `cohort_definition_id` $= 1$ from `cdm$intersect` in the `summariseTemporalSymmetry()`, then one could do the following: ```{r message= FALSE, warning=FALSE} summariseTemporalSymmetry(cohort = cdm$intersect, cohortId = 1) |> dplyr::glimpse() ``` Of course and once again this does nothing because every entry in `cdm$intersect` has `cohort_definition_id` $= 1$. ## Modify `timescale` Recall the default for the timescale is `month`, one could also change this to either `day` or `year`. ```{r message= FALSE, warning=FALSE} summariseTemporalSymmetry(cohort = cdm$intersect, timescale = "day") |> dplyr::glimpse() ``` ```{r message= FALSE, warning=FALSE} summariseTemporalSymmetry(cohort = cdm$intersect, timescale = "year") |> dplyr::glimpse() ``` ## Modify `minCellCount` By default, the minimum number of events to reported is 5, below which results will be obscured. If 0, all results will be reported and the user could do this via: ```{r message= FALSE, warning=FALSE} summariseTemporalSymmetry(cohort = cdm$intersect, minCellCount = 0) |> dplyr::glimpse() ``` ```{r message= FALSE, warning=FALSE, eval=FALSE} CDMConnector::cdmDisconnect(cdm = cdm) ```