Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
echo = FALSE,
message = FALSE,
fig.width = 7,
fig.height = 5
)
## ----peek, echo=TRUE----------------------------------------------------------
library(platowork)
head(plato)
## ----data---------------------------------------------------------------------
library(ggplot2)
library(dplyr)
theme_set(theme_minimal())
plato %>%
group_by(subject, session) %>%
mutate(first_test = min(date),
last_test = max(date),
session_duration = difftime(last_test, first_test, units = "mins")) %>%
group_by(subject, stimulus) %>%
summarise(no_tests = n(),
no_sessions = n_distinct(session),
first_test = min(first_test),
avr_session_duration = round(sum(session_duration) / sum(no_tests), 1)) %>%
ungroup() %>%
arrange(subject, first_test)
## ----plot1--------------------------------------------------------------------
data_summary <- plato %>%
group_by(subject, session, stimulus) %>%
summarise(wpm = mean(wpm),
date = mean(date),
.groups = "drop")
plato %>%
ggplot(aes(x = session, y = wpm, color = stimulus)) +
geom_jitter(size = 1.0, width = 0.15, height = 0, show.legend = T) +
geom_crossbar(data = data_summary, aes(ymin = wpm, ymax = wpm), show.legend = F) +
scale_x_continuous(breaks = 1:13) +
facet_grid(rows = vars(subject)) +
labs(title = "Performance in speed typing tests with or without tDCS stimulus",
subtitle = "Each dot represent one speed typing test. Horizontal bars are average results for each session",
caption = "Two subjects, double blind experiment with unknown stimulus\nSpeed typing tests performed at 10fastfingers.com. Analysis by @lassehmadsen",
x = "Session number",
y = "wpm, words-per-minute",
color = "Stimulus") +
theme(strip.background = element_rect(fill = grey(0.93), linetype = "blank"),
legend.justification = c(1, 0),
legend.position = c(1, 0))
## ----plot2--------------------------------------------------------------------
data_summary <- plato %>%
#filter(stimulus != "None") %>%
group_by(subject, stimulus) %>%
summarise(wpm = mean(wpm), .groups = "drop")
plato %>%
#filter(stimulus != "None") %>%
ggplot(aes(x = wpm, color = stimulus, fill = stimulus)) +
geom_density(alpha = 0.4, show.legend = c("color" = FALSE, "fill" = TRUE)) +
geom_vline(data = data_summary, aes(xintercept = wpm, color = stimulus), show.legend = FALSE) +
facet_grid(rows = vars(subject)) +
labs(title = "Performance in speed typing tests with or without tDCS stimulus",
subtitle = "Density distributions. Vertical lines are the averages for each subject/stimulus",
caption = "Two subjects, double blind experiment with unknown stimulus\nSpeed typing tests performed at 10fastfingers.com. Analysis by @lassehmadsen",
x = "wpm, words-per-minute",
y = "density",
fill = "Stimulus") +
theme(strip.background = element_rect(fill = grey(0.93), linetype = "blank"),
legend.justification = c(1, 1),
legend.position = c(1, 1))
## ----anova1, echo=TRUE--------------------------------------------------------
m <- aov(wpm ~ stimulus, data = plato)
summary(m)
## ----wrangling, echo=TRUE-----------------------------------------------------
# 1) Standardize wpm;
# 2) Filter out no stimulus;
# 3) Set factor levels for later plotting.
data <- plato %>%
group_by(subject) %>%
mutate(wpm_stand = (wpm - mean(wpm)) / sd(wpm)) %>%
ungroup() %>%
filter(stimulus != "None") %>%
mutate(stimulus = factor(stimulus, levels = c("Sham", "Real")))
## ----anova2, echo=TRUE--------------------------------------------------------
m <- aov(wpm ~ stimulus, data = data)
summary(m)
## ----anova3, echo=TRUE--------------------------------------------------------
m <- aov(wpm_stand ~ stimulus, data = data)
summary(m)
## ----anova4, echo=TRUE--------------------------------------------------------
m <- aov(wpm_stand ~ stimulus * subject, data)
summary(m)
## ----plot3--------------------------------------------------------------------
data %>%
ggplot(aes(x = session, y = wpm_stand, color = stimulus)) +
geom_jitter(size = 1.0, width = 0.15, height = 0, show.legend = F) +
geom_smooth(method = "lm", show.legend = F) +
scale_x_continuous(breaks = 1:13) +
facet_grid(rows = vars(subject), cols = vars(stimulus), scales = "free_x") +
labs(title = "Performance in speed typing tests with or without tDCS stimulus",
subtitle = "Words-per-minute plotted by session number. Slope of linear fit indicates learning rate",
caption = "Two subjects, double blind experiment with unknown stimulus\nSpeed typing tests performed at 10fastfingers.com. Analysis by @lassehmadsen",
x = "Session number",
y = "wpm, words-per-minute, standardized",
fill = "Stimulus") +
theme(strip.background = element_rect(fill = grey(0.93), linetype = "blank"),
legend.justification = c(1, 0),
legend.position = c(1, 0))
## ----regression, echo=TRUE----------------------------------------------------
m <- lm(wpm_stand ~ session * stimulus * subject, data = data)
summary(m)
## ----split_combine, echo=TRUE-------------------------------------------------
library(purrr) # For map function
data %>%
split(list(.$stimulus, .$subject)) %>%
map(~ lm(wpm_stand ~ session, data = .)) %>%
map(summary) %>%
map("coefficients") %>%
map(as_tibble, rownames = "parameter") %>%
bind_rows(.id = "model") %>%
filter(parameter == "session") %>%
select(model, parameter, slope = Estimate, p_value = `Pr(>|t|)`) %>%
mutate(across(where(is.numeric), round, 3))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.