Correlation Function

Correlations in bdots

This vignette is created to illustrate the use of the bcorr 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 bfit.

First, let’s take an existing dataset and add a fixed value for each of the subjects

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)
##    Subject  Time DB_cond  Fixations LookType Group       val
##      <num> <int>  <char>      <num>   <char> <int>     <num>
## 1:       1     0      50 0.01136364   Cohort    50 0.9340929
## 2:       1     4      50 0.01136364   Cohort    50 0.9340929
## 3:       1     8      50 0.01136364   Cohort    50 0.9340929
## 4:       1    12      50 0.01136364   Cohort    50 0.9340929
## 5:       1    16      50 0.02272727   Cohort    50 0.9340929
## 6:       1    20      50 0.02272727   Cohort    50 0.9340929

Now, we go about creating our fitted object as usual

## Create regular fit in bdots
fit <- bfit(data = dat,
            subject = "Subject",
            time = "Time",
            group = c("LookType", "Group"),
            y = "Fixations", curveFun = doubleGauss2(),
            cores = 2)

Using this fit object, we now introduce the bcor function, taking four arguments:

  1. bdObj, any object returned from a bfit 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.
## Returns a data.table of class bdotsCorrObj
corr_ci <- bcorr(fit, val = "val", ciBands = TRUE)
head(corr_ci)
##     time Correlation      lower     upper     Group Group1 Group2
##    <int>       <num>      <num>     <num>    <char> <char> <char>
## 1:     0  0.02116952 -0.6521204 0.6757902 Cohort 50 Cohort     50
## 2:     4  0.03189389 -0.6459091 0.6815788 Cohort 50 Cohort     50
## 3:     8  0.04272698 -0.6395423 0.6873447 Cohort 50 Cohort     50
## 4:    12  0.05345538 -0.6331435 0.6929758 Cohort 50 Cohort     50
## 5:    16  0.06388096 -0.6268340 0.6983743 Cohort 50 Cohort     50
## 6:    20  0.07383869 -0.6207219 0.7034640 Cohort 50 Cohort     50
## Same, without confidence intervals
corr_noci <- bcorr(fit, val = "val")
head(corr_noci)
##     time Correlation     Group Group1 Group2
##    <int>       <num>    <char> <char> <char>
## 1:     0  0.02116952 Cohort 50 Cohort     50
## 2:     4  0.03189389 Cohort 50 Cohort     50
## 3:     8  0.04272698 Cohort 50 Cohort     50
## 4:    12  0.05345538 Cohort 50 Cohort     50
## 5:    16  0.06388096 Cohort 50 Cohort     50
## 6:    20  0.07383869 Cohort 50 Cohort     50

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

## 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

plot(corr_ci[Group2 == "50", ])