# Read in packages
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.0.10     ✔ readr     2.1.4 
## ✔ forcats   1.0.0      ✔ stringr   1.5.0 
## ✔ ggplot2   3.4.2      ✔ tibble    3.1.8 
## ✔ lubridate 1.9.2      ✔ tidyr     1.2.1 
## ✔ purrr     0.3.4      
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggpubr)
library(ggforce)
## Warning: package 'ggforce' was built under R version 4.2.3
library(effectsize)
library(lme4)
## Warning: package 'lme4' was built under R version 4.2.3
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## 
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
library(lmerTest)
## Warning: package 'lmerTest' was built under R version 4.2.3
## 
## Attaching package: 'lmerTest'
## 
## The following object is masked from 'package:lme4':
## 
##     lmer
## 
## The following object is masked from 'package:stats':
## 
##     step
library(emmeans)
## Warning: package 'emmeans' was built under R version 4.2.3
library(MuMIn)
## Warning: package 'MuMIn' was built under R version 4.2.3
library(MCMCglmm)
## Warning: package 'MCMCglmm' was built under R version 4.2.3
## Loading required package: coda
## Warning: package 'coda' was built under R version 4.2.3
## Loading required package: ape
## Warning: package 'ape' was built under R version 4.2.3
## 
## Attaching package: 'ape'
## 
## The following object is masked from 'package:ggpubr':
## 
##     rotate
library(mixedpower)
library(dplyr)

# Read in file
Summarized_data <- read.csv("Summarized_data_EM6_FALLpilot.csv", header = TRUE)
Summarized_first_trips <- read.csv("Summarized_first_trips_EM6_FALLpilot.csv", header = TRUE)

Update condition names!

# We need to systematically rename the columns so that they make sense for this experiment!
library(stringr)

# Apply replacements in condsFile column
Summarized_data <- Summarized_data %>%
  mutate(
    condsFile = str_replace(condsFile, "noDelay", "delayAfterList"),
    condsFile = str_replace(condsFile, "longDelay", "delayBeforeList")
  )

Summarized_first_trips <- Summarized_first_trips %>%
  mutate(
    condsFile = str_replace(condsFile, "noDelay", "delayAfterList"),
    condsFile = str_replace(condsFile, "longDelay", "delayBeforeList")
  )

Get overall summaries!

# Get overall summary statistics
summarized_data_overall <- Summarized_data %>% 
  group_by(participant,condsFile,order) %>% 
  summarise(mean_Trip=mean(nTrip),
            mean_listTime = mean(meanListTime, na.rm = TRUE),
            mean_Correct = mean(meanCorrect, na.rm = TRUE),
            mean_CorBefInc = mean(meanCorBefInc,na.rm =TRUE),
            mean_inCorrect= mean(meanIncorrect, na.rm = TRUE),
            mean_clickeds= mean(meanclickeds, na.rm = TRUE),
            mean_MU = mean(meanMU, na.rm = TRUE)) %>%
  ungroup()
## `summarise()` has grouped output by 'participant', 'condsFile'. You can
## override using the `.groups` argument.
# Same for first trips
summarized_data_overall_first_trips <- Summarized_first_trips %>% 
  group_by(participant,condsFile,order) %>% 
  summarise(mean_Trip=mean(nTrip),
            mean_listTime = mean(meanListTime, na.rm = TRUE),
            mean_Correct = mean(meanCorrect, na.rm = TRUE),
            mean_CorBefInc = mean(meanCorBefInc,na.rm =TRUE),
            mean_inCorrect= mean(meanIncorrect, na.rm = TRUE),
            mean_clickeds= mean(meanclickeds, na.rm = TRUE),
            mean_MU = mean(meanMU, na.rm = TRUE)) %>%
  ungroup()
## `summarise()` has grouped output by 'participant', 'condsFile'. You can
## override using the `.groups` argument.
# multiDataTrialSum IS Summarized data by the way
# Be mindful of trips (1st trip only vs. all)

Get study time data ready…

# Study time Preprocess ------------------------
Summarized_data_FreeResponse <- Summarized_data %>%
  filter(!condsFile %in% c("delayBeforeListClosing", "delayAfterListClosing", "no_costClosing"))

Summarized_first_trips_FreeResponse <- Summarized_first_trips %>%
  filter(!condsFile %in% c("delayBeforeListClosing", "delayAfterListClosing", "no_costClosing"))

study_time_1trip <- Summarized_first_trips_FreeResponse %>%
  group_by(participant, condsFile) %>%
  summarize(mean_StudyTime = mean(meanListTime, na.rm = TRUE), 
            .groups = 'drop')

study_time <- Summarized_data_FreeResponse %>%
  group_by(participant, condsFile) %>%
  summarize(mean_StudyTime = mean(meanListTime, na.rm = TRUE), 
            .groups = 'drop')

Study time plot for ALL trips

# Study time PLOT all trips --------------------

# Calculate means and standard errors
means <- tapply(study_time$mean_StudyTime, study_time$condsFile, mean)
se <- tapply(study_time$mean_StudyTime, study_time$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterList", "delayBeforeList", "no_cost")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 30.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean Study Time, seconds", 
  main = "Mean study time, all trips"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- study_time[study_time$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$mean_StudyTime, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 3, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

Study time plot FIRST trips only

# Study time plot FIRST trips----------------------------------------------------
# Calculate means and standard errors
means <- tapply(study_time_1trip$mean_StudyTime, study_time_1trip$condsFile, mean)
se <- tapply(study_time_1trip$mean_StudyTime, study_time_1trip$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterList", "delayBeforeList", "no_cost")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 30.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean Study Time, seconds", 
  main = "Mean study time, first trips only"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- study_time_1trip[study_time_1trip$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$mean_StudyTime, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 3, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

Study time Closing

# Study time CLOSING ---------------------------------------
Summarized_data_TotalResponse <- Summarized_data %>%
  filter(!condsFile %in% c("delayBeforeList", "delayAfterList", "no_cost"))

study_time_Closing <- Summarized_data_TotalResponse %>%
  group_by(participant, condsFile) %>%
  summarize(mean_StudyTime = mean(meanListTime, na.rm = TRUE), 
            .groups = 'drop')

means <- tapply(study_time_Closing$mean_StudyTime, study_time_Closing$condsFile, mean)
se <- tapply(study_time_Closing$mean_StudyTime, study_time_Closing$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterListClosing", "delayBeforeListClosing", "no_costClosing")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 40.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean Study Time", 
  main = "Mean study time, Closing trials"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- study_time_Closing[study_time_Closing$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$mean_StudyTime, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 3, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

MU free ALL trips

# MU Free all trips--------------------------------------------

# Average over all trials for each condition, for each Ss
participant_averages_allTrips <- Summarized_data_FreeResponse %>%
  group_by(participant, condsFile) %>%
  summarize(mean_MU = mean(meanMU, na.rm = TRUE), 
            .groups = 'drop')

# Calculate means and standard errors
means <- tapply(participant_averages_allTrips$mean_MU, participant_averages_allTrips$condsFile, mean)
se <- tapply(participant_averages_allTrips$mean_MU, participant_averages_allTrips$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterList", "delayBeforeList", "no_cost")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 10.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean MU(free)", 
  main = "Mean MU(free), all trips"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- participant_averages_allTrips[participant_averages_allTrips$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$mean_MU, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 2, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

MU free FIRST trips

# MU free 1st trips -----------------------------

# Average over all trials for each condition, for each Ss
participant_averages_1stTrips <- Summarized_first_trips_FreeResponse %>%
  group_by(participant, condsFile) %>%
  summarize(mean_MU = mean(meanMU, na.rm = TRUE), 
            .groups = 'drop')

# Calculate means and standard errors
means <- tapply(participant_averages_1stTrips$mean_MU, participant_averages_1stTrips$condsFile, mean)
se <- tapply(participant_averages_1stTrips$mean_MU, participant_averages_1stTrips$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterList", "delayBeforeList", "no_cost")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 10.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean MU(free)", 
  main = "Mean MU(free), 1st trips only"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- participant_averages_1stTrips[participant_averages_1stTrips$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$mean_MU, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 2, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

MU total

# Mu total ------------------------------------------------
# Calculate means and standard errors
means <- tapply(Summarized_data_TotalResponse$meanMU, Summarized_data_TotalResponse$condsFile, mean)
se <- tapply(Summarized_data_TotalResponse$meanMU, Summarized_data_TotalResponse$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterListClosing", "delayBeforeListClosing", "no_costClosing")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(-5, 15.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean MU(total)", 
  main = "Mean MU(total)"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- Summarized_data_TotalResponse[Summarized_data_TotalResponse$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$meanMU, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 2, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")

Trips

# Trips ----------------------------------

avg_trips <- Summarized_data_FreeResponse %>%
  group_by(participant, condsFile) %>%
  summarize(meanTrip = mean(nTrip, na.rm = TRUE), 
            .groups = 'drop')

# Calculate means and standard errors
means <- tapply(avg_trips$meanTrip, avg_trips$condsFile, mean)
se <- tapply(avg_trips$meanTrip, avg_trips$condsFile, function(x) sd(x) / sqrt(length(x)))

# Define the x-axis levels (to match the ggplot2 ordering)
conds_levels <- c("delayAfterList", "delayBeforeList", "no_cost")
x_positions <- 1:length(conds_levels)

# Create an empty plot
plot(
  x_positions, means[conds_levels], 
  type = "n", xaxt = "n", ylim = c(0, 8.0),xlim = c(0.5,3.5),
  xlab = "Condition", ylab = "Mean trips", 
  main = "Mean trips"
)

# Add x-axis labels
axis(1, at = x_positions, labels = conds_levels)

# Add points for each participant
for (i in 1:length(conds_levels)) {
  condition_data <- avg_trips[avg_trips$condsFile == conds_levels[i], ]
  points(rep(x_positions[i], nrow(condition_data)), condition_data$meanTrip, 
         pch = 1, col = "blue")
}

# Add points for the means
points(x_positions, means[conds_levels], pch = 16, col = "black")

# Add error bars for standard errors
segments(
  x_positions, means[conds_levels] - se[conds_levels], 
  x_positions, means[conds_levels] + se[conds_levels],
  col = "black", lwd = 3.6
)

# Add horizontal segments at the means (optional, similar to ggplot2's stat_summary)
segments(
  x_positions - 0.1, means[conds_levels], 
  x_positions + 0.1, means[conds_levels],
  col = "black", lwd = 3.0
)

# Add mean labels for each condition
text(x_positions, means[conds_levels] + 2, 
     labels = round(means[conds_levels], 2), cex = 1.5, col = "red")