---
title: "correlations"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Correlations}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r, include=FALSE}
library(bdots)
# Make smaller for cran
cohort_unrelated$Subject <- as.numeric(cohort_unrelated$Subject)
cohort_unrelated <- as.data.table(cohort_unrelated)
cohort_unrelated <- cohort_unrelated[Subject < 10, ]
```
## Correlations in `bdots`
This vignette is created to illustrate the use of the `bdotsCorr` function, which finds
the correlation between a fixed value in our dataset and the collection of fitted curves
at each time points for each of the groups fit in `bdotsFit`.
First, let's take an existing dataset and add a fixed value for each of the subjects
```{r}
library(bdots)
library(data.table)
## Let's work with cohort_unrelated dataset, as it has multiple groups
dat <- as.data.table(cohort_unrelated)
## And add a fixed value for which we want to find a correlation
dat[, val := rnorm(1), by = Subject]
head(dat)
```
Now, we go about creating our fitted object as usual
```{r}
## Create regular fit in bdots
fit <- bdotsFit(data = dat,
subject = "Subject",
time = "Time",
group = c("LookType", "Group"),
y = "Fixations", curveType = doubleGauss2(),
cores = 2)
```
Using this fit object, we now introduce the `bdotsCorr` function, taking four arguments:
1. `bdObj`, any object returned from a `bdotsFit` call
2. `val`, a length one character vector of the value with which we want to correlate. `val`
should be a column in our original dataset, and it should be numeric
3. `ciBands`, a boolean indicating whether or not we want to return 95% confidence intervals. Default is `FALSE`
4. `method`, paralleling the `method` argument in `cor` and `cor.test`. The default is `pearson`.
```{r}
## Returns a data.table of class bdotsCorrObj
corr_ci <- bdotsCorr(fit, val = "val", ciBands = TRUE)
head(corr_ci)
## Same, without confidence intervals
corr_noci <- bdotsCorr(fit, val = "val")
head(corr_noci)
```
From here, we are able to use the `data.tables` themselves for whatever we may be
interested in. We also have a plotting method associated with this object
```{r, fig.align='center', fig.width = 6, fig.height=6}
## Default is no bands
plot(corr_ci)
## Try again with bands
plot(corr_ci, ciBands = TRUE)
## Narrow in on a particular window
plot(corr_ci, window = c(750, 1500))
```
Because this object is a `data.table`, we have full use of subsetting capabilities
for our plots
```{r, fig.align='center', fig.width = 6, fig.height=4}
plot(corr_ci[Group2 == "50", ])
```