---
title: "Example Usage"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Example Usage}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(tidydlnm)
library(tibble)
library(dplyr)
library(dlnm)
```
Suppose we have the following data, where lags 0 through 9 are the values of some exposure experienced 0 to 9 days before the outcome `y`.
```{r, echo = F}
set.seed(212)
d <- tibble::tibble(lag0 = rnorm(n=100, mean=0.3, sd=1))
d <- d %>%
dplyr::mutate(lag1 = rnorm(n=100, mean=lag0, sd=1),
lag2 = rnorm(n=100, mean=lag1, sd=1),
lag3 = rnorm(n=100, mean=lag2, sd=1),
lag4 = rnorm(n=100, mean=lag3, sd=1),
lag5 = rnorm(n=100, mean=lag4, sd=1),
lag6 = rnorm(n=100, mean=lag5, sd=1),
lag7 = rnorm(n=100, mean=lag6, sd=1),
lag8 = rnorm(n=100, mean=lag7, sd=1),
lag9 = rnorm(n=100, mean=lag8, sd=1))
d <- d %>%
dplyr::mutate(y = rnorm(100, mean = 53.5 + 2*(lag3+lag4), sd=10))
d
```
First, use the `dlnm` package to fit a distributed lag model. We create the crossbasis, fit the model, and create the crosspred object. (For more info, see [https://github.com/gasparrini/dlnm](https://github.com/gasparrini/dlnm)).
```{r, message = F}
Q <- dplyr::select(d, lag0:lag9)
cb <- dlnm::crossbasis(Q, lag=9,
argvar=list("lin"),
arglag=list(fun="ns"))
mod <- lm(y ~ cb, data=d)
cpred <- dlnm::crosspred(cb, mod, at=1, cumul = TRUE)
```
Then use `tidydlnm` to obtain more tidyverse-friendly output and plots.
## Effect estimates at each lag
```{r}
lag_fits <- tidy_lag_fits(cpred)
tidy_lag_plot(lag_fits)
```
## Estimated effect over all lags
```{r}
tidy_overall_fit(cpred)
```
## Cumulative effect estimates at each lag
```{r}
cumul_fits <- tidy_cumul_fits(cpred)
```
Add optional shading to plot of estimates at each lag with the `shading` argument.
```{r}
tidy_lag_plot(lag_fits, shading = T)
```
Note that the same plotting function can be used to plot the cumulative estimates. Also, since this is a ggplot object, the plot can be customized as any other ggplot.
```{r}
library(ggplot2)
tidy_lag_plot(cumul_fits) +
ylab("Estimate") +
theme_minimal()
```
For a summary of specific windows of association identified by the model, use `tidy_window_summary()`.
```{r}
tidy_window_summary(lag_fits)
```