library(openxlsx)
library(dplyr)
library(tidyr)
library(psych)
library(RColorBrewer)
library(ggeasy)
library(ggrepel)
library(ggplot2)
library(Hmisc)
library(plyr)Data Cleaning, Exclusions
Loading in Data
Reading in participant-level data
indi.data = read.xlsx("Participant-Level Data.xlsx")
#indi.data = read.csv("Participant-Level Data.csv")Renaming Memory Tasks
colnames(indi.data) = sub("perceptual.", "object.sim.", colnames(indi.data))
colnames(indi.data) = sub("Perceptual.", "object.sim.", colnames(indi.data))
colnames(indi.data) = sub("nonsemantic.", "abstract.img.", colnames(indi.data))
colnames(indi.data) = sub("Nonsemantic.", "abstract.img.", colnames(indi.data))
colnames(indi.data) = sub("semantic.", "cat.drm.", colnames(indi.data))
colnames(indi.data) = sub("Semantic.", "cat.drm.", colnames(indi.data))
colnames(indi.data) = sub("categorical.", "schematic.", colnames(indi.data))
colnames(indi.data) = sub("Categorical.", "schematic.", colnames(indi.data))
indi.data = dplyr::rename(indi.data,
"object.sim.exclusion.reason" = "per.exclusion.reason",
"excluded.from.object.sim" = "excluded.from.perceptual",
"abstract.img.exclusion.reason" = "nonsem.exclusion.reason",
"excluded.from.abstract.img" = "excluded.from.nonsemantic",
"cat.drm.exclusion.reason" = "sem.exclusion.reason",
"excluded.from.cat.drm" = "excluded.from.semantic",
"schematic.exclusion.reason" = "cat.exclusion.reason",
"excluded.from.schematic" = "excluded.from.categorical")Participant Exclusions
Participants who have been using English for less than half of their life
table(indi.data$Late.english.inclusion, indi.data$Group)
OA YA
Exclude 2 6
Include 152 211
indi.data = filter(indi.data, Late.english.inclusion == "Include")Categorical DRM Exclusions
table(indi.data$excluded.from.cat.drm, indi.data$Group)
OA YA
Excluded 2 8
Included 148 203
table(indi.data$cat.drm.exclusion.reason, indi.data$Group)
OA YA
Fast Response Exclusion 0 2
Hit Rate Exclusion 1 6
Included 148 203
Nonresponse Exclusion 1 0
# Pie chart
cat.drm.exclusion.pie = indi.data %>%
select(cat.drm.exclusion.reason) %>%
filter(!is.na(cat.drm.exclusion.reason)) %>%
dplyr::count(cat.drm.exclusion.reason, .drop = FALSE)
cat.drm.exclusion.pie$per = cat.drm.exclusion.pie$n /
nrow(filter(indi.data, !is.na(cat.drm.exclusion.reason)))
cat.drm.exclusion.pie$cat.drm.exclusion.reason =
factor(cat.drm.exclusion.pie$cat.drm.exclusion.reason,
levels = c("Included",
"Hit Rate Exclusion",
"Nonresponse Exclusion",
"Fast Response Exclusion"))
cat.drm.exclusion.pie = cat.drm.exclusion.pie %>%
arrange(desc(cat.drm.exclusion.reason))
cat.drm.exclusion.pie$label =
scales::percent(cat.drm.exclusion.pie$per, accuracy = 0.1)
ggplot(data = cat.drm.exclusion.pie) +
geom_bar(aes(x = "", y = per, fill = cat.drm.exclusion.reason),
stat = "identity", width = 1) +
coord_polar(theta = "y", start = 0) +
theme_void() +
geom_label_repel(aes(x = 1, y = cumsum(per) - per / 2, label = label),
nudge_x = 0.5) +
theme(text = element_text(size = 16, family = "serif"),
plot.margin = unit(c(0, 0.5, 0, 0), "cm"),
plot.caption.position = "plot",
plot.caption = element_text(hjust = 0)) +
ggtitle("Exclusions for Categorical DRM Task") +
ggeasy::easy_center_title() +
guides(fill = guide_legend(reverse = FALSE)) +
labs(fill = "Exclusion Reason",
caption = "Percentages in this and in the other pie charts are based on participants with data \nfor the respective task only.") +
scale_fill_brewer(palette = "Dark2")rm(list = setdiff(ls(), "indi.data"))
# Columns to set as missing when excluded.from.cat.drm is "Exclude"
cat.drm.cols = names(select(indi.data,
cat.drm.CR.Related.DefNew:
cat.drm.FA.Unrelated.Rates))
# Replacing semantic values with missing if excluded from semantic
indi.data[is.na(indi.data$excluded.from.cat.drm) |
indi.data$excluded.from.cat.drm == "Excluded", cat.drm.cols] = NA
rm(cat.drm.cols)Object Similarity Exclusions
table(indi.data$excluded.from.object.sim, indi.data$Group)
OA YA
Excluded 2 5
Included 147 205
table(indi.data$object.sim.exclusion.reason, indi.data$Group)
OA YA
Fast Response Exclusion 0 1
Hit Rate Exclusion 1 4
Included 147 205
Nonresponse Exclusion 1 0
# Pie chart
object.sim.exclusion.pie = indi.data %>%
select(object.sim.exclusion.reason) %>%
filter(!is.na(object.sim.exclusion.reason)) %>%
dplyr::count(object.sim.exclusion.reason, .drop = FALSE)
object.sim.exclusion.pie$per = object.sim.exclusion.pie$n /
nrow(filter(indi.data, !is.na(object.sim.exclusion.reason)))
object.sim.exclusion.pie$object.sim.exclusion.reason =
factor(object.sim.exclusion.pie$object.sim.exclusion.reason,
levels = c("Included",
"Hit Rate Exclusion",
"Nonresponse Exclusion",
"Fast Response Exclusion"))
object.sim.exclusion.pie = object.sim.exclusion.pie %>%
arrange(desc(object.sim.exclusion.reason))
object.sim.exclusion.pie$label =
scales::percent(object.sim.exclusion.pie$per, accuracy = 0.1)
ggplot(data = object.sim.exclusion.pie) +
geom_bar(aes(x = "", y = per, fill = object.sim.exclusion.reason),
stat = "identity", width = 1) +
coord_polar(theta = "y", start = 0) +
theme_void() +
geom_label_repel(aes(x = 1, y = cumsum(per) - per / 2, label = label),
nudge_x = 0.5) +
theme(text = element_text(size = 16, family = "serif"),
plot.margin = unit(c(0, 0.5, 0, 0), "cm")) +
ggtitle("Exclusions for Object Similarity Task") +
ggeasy::easy_center_title() +
guides(fill = guide_legend(reverse = FALSE)) +
labs(fill = "Exclusion Reason") +
scale_fill_brewer(palette = "Dark2")rm(list = setdiff(ls(), "indi.data"))
# Columns to set as missing when excluded.from.object.sim is "Exclude"
object.sim.cols = names(select(indi.data,
object.sim.CR.Related.DefNew:object.sim.FA.Unrelated.Rates))
# Replacing Object Similarity values with missing if excluded from Object Similarity
indi.data[is.na(indi.data$excluded.from.object.sim) |
indi.data$excluded.from.object.sim == "Excluded", object.sim.cols] = NA
rm(object.sim.cols)Schematic Exclusions
table(indi.data$excluded.from.schematic, indi.data$Group)
OA YA
Excluded 46 56
Included 101 152
table(indi.data$schematic.exclusion.reason, indi.data$Group)
OA YA
Fast Response Exclusion 0 3
Hit Rate Exclusion 42 53
Included 101 152
Nonresponse Exclusion 4 0
# Pie chart
schematic.exclusion.pie = indi.data %>%
select(schematic.exclusion.reason) %>%
filter(!is.na(schematic.exclusion.reason)) %>%
dplyr::count(schematic.exclusion.reason, .drop = FALSE)
schematic.exclusion.pie$cat = schematic.exclusion.pie$n /
nrow(filter(indi.data, !is.na(schematic.exclusion.reason)))
schematic.exclusion.pie$schematic.exclusion.reason =
factor(schematic.exclusion.pie$schematic.exclusion.reason,
levels = c("Included",
"Hit Rate Exclusion",
"Nonresponse Exclusion",
"Fast Response Exclusion"))
schematic.exclusion.pie = schematic.exclusion.pie %>%
arrange(desc(schematic.exclusion.reason))
schematic.exclusion.pie$label =
scales::percent(schematic.exclusion.pie$cat, accuracy = 0.1)
ggplot(data = schematic.exclusion.pie) +
geom_bar(aes(x = "", y = cat, fill = schematic.exclusion.reason),
stat = "identity", width = 1) +
coord_polar(theta = "y", start = 0) +
theme_void() +
geom_label_repel(aes(x = 1, y = cumsum(cat) - cat / 2, label = label),
nudge_x = 0.5) +
theme(text = element_text(size = 16, family = "serif"),
plot.margin = unit(c(0, 0.5, 0, 0), "cm")) +
ggtitle("Exclusions for Schematic Task") +
ggeasy::easy_center_title() +
guides(fill = guide_legend(reverse = FALSE)) +
labs(fill = "Exclusion Reason") +
scale_fill_brewer(palette = "Dark2")rm(list = setdiff(ls(), "indi.data"))
# Columns to set as missing when excluded.from.schematic is "Exclude"
schematic.cols = names(select(indi.data,
schematic.CR.Related.DefNew:
schematic.Miss.Unrelated.Rates))
# Replacing Schematic values with missing if excluded from Schematic
indi.data[is.na(indi.data$excluded.from.schematic) |
indi.data$excluded.from.schematic == "Excluded",
schematic.cols] = NA
rm(schematic.cols)Abstract Images Exclusions
table(indi.data$excluded.from.abstract.img, indi.data$Group)
OA YA
Excluded 1 9
Included 150 201
table(indi.data$abstract.img.exclusion.reason, indi.data$Group)
OA YA
Fast Response Exclusion 0 1
Hit Rate Exclusion 1 7
Included 150 201
Nonresponse Exclusion 0 1
# Pie chart
abstract.img.exclusion.pie = indi.data %>%
select(abstract.img.exclusion.reason) %>%
filter(!is.na(abstract.img.exclusion.reason)) %>%
dplyr::count(abstract.img.exclusion.reason, .drop = FALSE)
abstract.img.exclusion.pie$per = abstract.img.exclusion.pie$n /
nrow(filter(indi.data, !is.na(abstract.img.exclusion.reason)))
abstract.img.exclusion.pie$abstract.img.exclusion.reason =
factor(abstract.img.exclusion.pie$abstract.img.exclusion.reason,
levels = c("Included",
"Hit Rate Exclusion",
"Nonresponse Exclusion",
"Fast Response Exclusion"))
abstract.img.exclusion.pie = abstract.img.exclusion.pie %>%
arrange(desc(abstract.img.exclusion.reason))
abstract.img.exclusion.pie$label =
scales::percent(abstract.img.exclusion.pie$per, accuracy = 0.1)
ggplot(data = abstract.img.exclusion.pie) +
geom_bar(aes(x = "", y = per, fill = abstract.img.exclusion.reason),
stat = "identity", width = 1) +
coord_polar(theta = "y", start = 0) +
theme_void() +
geom_label_repel(aes(x = 1, y = cumsum(per) - per / 2, label = label),
nudge_x = 0.5) +
theme(text = element_text(size = 16, family = "serif"),
plot.margin = unit(c(0, 0.5, 0, 0), "cm")) +
ggtitle("Exclusions for Abstract Images Task") +
ggeasy::easy_center_title() +
guides(fill = guide_legend(reverse = FALSE)) +
labs(fill = "Exclusion Reason") +
scale_fill_brewer(palette = "Dark2")rm(list = setdiff(ls(), "indi.data"))
# Columns to set as missing when excluded.from.abstract.img is "Exclude"
abstract.img.cols = names(select(indi.data,
abstract.img.CR.Related.DefNew:
abstract.img.FA.Unrelated.Rates))
# Replacing Abstract Images values with missing if excluded from Abstract Images
indi.data[is.na(indi.data$excluded.from.abstract.img) |
indi.data$excluded.from.abstract.img == "Excluded",
abstract.img.cols] = NA
rm(abstract.img.cols)Saving out cleaned data
save(indi.data, file = "INDI_data.Rdata")