inst/doc/velocity_computation.R

## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup, echo = FALSE, warning = FALSE, message = FALSE--------------------
library(dplyr)
library(ggplot2)
library(saccadr)

## ----warning=FALSE, fig.fullwidth=TRUE, out.width="100%", fig.dim = c(8, 4)----
# computing velocity using two methods
vel_ek <- saccadr::diff_ek(x = single_trial$x,
                           y = single_trial$y,
                           trial = rep(1, nrow(single_trial)),
                           sample_rate = 500)
vel_nh <- saccadr::diff_nh(x = single_trial$x,
                           y = single_trial$y,
                           trial = rep(1, nrow(single_trial)),
                           sample_rate = 500)
vel_comparison <- na.omit(data.frame(EK = vel_ek[['amp']], NH = vel_nh[['amp']])) %>%
  dplyr::filter(NH > 0) %>% # values can be negative due to filtering
  dplyr::mutate(logEK = log(EK), logNH = log(NH)) 

# plotting amplitude comparison
pearson_rho <- cor(vel_comparison[['EK']], vel_comparison[['NH']])

ggplot(data = vel_comparison, aes(x = EK, y = NH)) +
  geom_abline() +
  geom_point() +
  scale_x_log10() +
  scale_y_log10() +
  labs(subtitle = sprintf("Pearson's ρ = %.2f\nPearson's ρ for log transformed velocities = %.2f", pearson_rho, cor(vel_comparison[['logEK']], vel_comparison[['logNH']])),
       x = "Vek",
       y = "Vnh")

# plotting 
ggplot(data = NULL, aes(x = vel_comparison[['EK']] - vel_comparison[['NH']])) +
  geom_histogram(bins = 50) +
  xlab("Vek - Vnh") +
  labs(title = "Difference in velocities computed via two methods")

## ----eval = FALSE-------------------------------------------------------------
#  diff_custom <- function(x, y,  trial, sample_rate, options=NULL) {
#    # compute vertical and horizontal components
#    df <- data.frame(x = ..., # differentiate values of x
#                     y = ...) # differentiate values of y
#  
#    # compute amplitude
#    df[['amp']] = sqrt(df[['x']]^2 + df[['y']]^2))
#  
#    # return a data.frame with columns x, y, and amp
#    return(df)
#  }

## ----eval = FALSE-------------------------------------------------------------
#  library(dplyr)
#  
#  diff_custom <- function(x, y,  trial, sample_rate, options=NULL) {
#    # computing frame time step
#    delta_t_s <- 1 / sample_rate
#  
#    # --- differentiate (compute velocity or acceleration) and filter
#    data.frame(trial = trial,
#               x = x,
#               y = y) %>%
#  
#      # compute velocity and acceleration for each trial
#      group_by(trial) %>%
#      mutate(x = (x - lag(x)) / delta_t_s,
#             y = (y - lag(y)) / delta_t_s,
#             amp = sqrt(x^2 + y^2))
#  }

## ----eval = FALSE-------------------------------------------------------------
#  diff_lag_n <- function(x, y,  trial, sample_rate, options=NULL) {
#    # obtain lag or use default
#    lag_n <- saccadr::option_or_default(options, "custom_velocity_lag", 1)
#  
#    # computing frame time step
#    delta_t_s <- 1 / sample_rate
#  
#    # --- differentiate (compute velocity or acceleration) and filter
#    data.frame(trial = trial,
#               x = x,
#               y = y) %>%
#  
#      # compute velocity and acceleration for each trial
#      group_by(trial) %>%
#      mutate(x = (x - lag(x, lag_n)) / delta_t_s,
#             y = (y - lag(y, lag_n)) / delta_t_s,
#             amp = sqrt(x^2 + y^2))
#  }

Try the saccadr package in your browser

Any scripts or data that you put into this service are public.

saccadr documentation built on Sept. 8, 2023, 5:13 p.m.