library(readr)
library(haven)
library(dplyr)
library(jmv)
library(here)
library(tidyverse)
library(EnvStats)

# read in data 

FT_Data<- read_csv(here("summaryData","fingertappingtask_withrts.csv")) # Read in FT file
FIGS_Data <- read_sav(here("QualtricsData", "FIGS_QualtricsRawData.sav")) # Read in Qualtrics file saved as SPSS .sav file


## Qualtrics data

# Check whether subjects are in experiment file and write true/false
FIGS_Data$checkFT <-is.element(FIGS_Data$ResponseId, FT_Data$script.subjectid) 
# Locate where subjects are in the dataset
FIGS_Data$locFT <- match(FIGS_Data$ResponseId, FT_Data$script.subjectid) 

# Fix text-based sex descriptors.  
# NOTE: This will still code empty cells as 0 - need to work out how to insert NA if cell is empty
FIGS_Data$Female <- grepl("f", FIGS_Data$Sex, ignore.case = TRUE) # use regular expressions to extract M/F from data

## Inquisit data 

# calculate the Coefficient of Variation 
FT_Data$cv_dominant <- FT_Data$expressions.RT_sd_dominant/FT_Data$expressions.RT_median_dominant
FT_Data$cv_nondominant <- FT_Data$expressions.RT_sd_nondominant/FT_Data$expressions.RT_median_nondominant

# Box-Cox transformations for non-normal CV data 

opt <- boxcox(FT_Data$cv_dominant, optimize = TRUE) # get optimal lambda for transform
opt2 <- boxcox(FT_Data$cv_nondominant, optimize = TRUE) # get optimal lambda for transform

l = (opt$lambda + opt2$lambda)/2

FT_Data$cv_dominant_boxcox <- boxcoxTransform(FT_Data$cv_dominant, lambda = l)
FT_Data$cv_nondominant_boxcox <- boxcoxTransform(FT_Data$cv_nondominant, lambda = l)

## Merge datasets, including all incomplete data 

FIGS_FT <- merge(x = FIGS_Data, y = FT_Data, by.x = "ResponseId", by.y = "script.subjectid", all.x = TRUE) # Merge the two datasets

## Write to file 

write.csv(FIGS_FT, file = "FIGS_FT_Jan21.csv") 
write_sav(FIGS_FT, "FIGS_FT_Jan21.sav")

# Analysis - Tapping rate 

jmv::anovaRM(
  data = FIGS_FT,
  rm = list(
    list(
      label="Hand",
      levels=c("Dominant", "Non-dominant"))),
  rmCells = list(
    list(
      measure="values.score_dominant",
      cell="Dominant"),
    list(
      measure="values.score_nondominant",
      cell="Non-dominant")),
  bs = vars(Group, Female),
  cov = Age,
  rmTerms = ~ Hand,
  bsTerms = ~ Group + Female + Age + Group:Female)

## Analysis - Coefficient of variation

jmv::anovaRM(
  data = FIGS_FT,
  rm = list(
    list(
      label="Hand",
      levels=c("Dominant", "Non-dominant"))),
  rmCells = list(
    list(
      measure="cv_dominant_boxcox",
      cell="Dominant"),
    list(
      measure="cv_nondominant_boxcox",
      cell="Non-dominant")),
  bs = vars(Group, Female),
  cov = Age,
  rmTerms = ~ Hand,
  bsTerms = ~ Group + Female + Age + Group:Female)
