Last active
July 15, 2016 14:11
-
-
Save guidocor/e169ba6d999cb3bf917e3118f154c7c5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Cleaning the session | |
rm(list=ls());gc() | |
# Useul function to load and install al needed packages | |
# we are reading it from my gist on GitHub. | |
source("https://raw.githubusercontent.com/guidocor/R_utils/master/install.R") | |
install_and_detach(c("dplyr","ggplot2", "doBy"),load= T, clean = T) | |
theme_set(theme_bw()) # My favourite ggplot2 theme : ) | |
parts = 30 # Our participants | |
trials = 30 # Our Trials | |
conds = 3 | |
# Simulate some data. There are better ways, but by the way this is a easy | |
# 30 participants in two conditions with binary responses | |
response <- c( rbinom(parts*trials, 1, .3) , | |
rbinom(parts*trials, 1, .65), | |
rbinom(parts*trials, 1, .59) ) | |
condition <- c(rep(1, parts*trials), rep(2, parts*trials),rep(3, parts*trials)) | |
participant <- sort(rep(1:(conds*parts), trials) ) | |
# our data frame, ready | |
df <- data.frame(participant, condition, response) | |
# This is a trick to convert to factor (or numeric, etc) the data | |
df <- df[,c("participant", "condition", "response")] | |
to_factor <- c("participant", "condition") | |
df[,to_factor] <- lapply(df[,to_factor], factor) | |
# Factors are coded as 1, 2 and 3. We want they to be meaningful, so we must | |
# change them as follow: | |
levels(df$condition) <- c("Condition 1", "Condition 2", "Condition 3") | |
# Two ways of do the same one easier with summaryBy and other with dplyr | |
# Both are useful and apropiatte. In this particular | |
# case i think doBy function summaryBy is better | |
means.v <- summaryBy(response ~ participant + condition, data = df) | |
# First we have to group the data and then make a summary | |
# (Don't be afraid of using the pipe ( %>%), if you are in Rstudio pres ctrl+shift+M) | |
means <- df %>% group_by(., condition, participant) %>% summarise(., m = mean(response)) | |
# We need to store the means of each condition for the plot | |
m.data <- means %>% summarise(., global.mean = mean(m)) | |
# And finally the plot! | |
means.plot<-ggplot(means, aes(m)) + # set the ggplot boject | |
geom_density(alpha=.5, fill="#FF6666" ) + # you can pay with the alpha and the fill | |
# add a histogram, adapt the binwidth to your data! | |
geom_histogram(colour="black", fill="white", alpha = 0.4, binwidth = 0.05) + | |
# we want separate graphs for each condition, you can | |
# play with the number of columns with ncol! | |
facet_wrap(~condition, ncol = 1) + | |
ggtitle("Mean by each group") + # title | |
labs(x = "Mean of each participant", | |
y = "") + # labels in x | |
# Remember that we made a data frame wirh the mean of each condition? | |
# que are using it for plotting the mean in each density plot | |
geom_vline(data=m.data, aes(xintercept=global.mean), | |
linetype="dashed", size=1) | |
means.plot | |
# finally we can save the plot | |
ggsave(file = "./distributions.png", means.plot, height = 8, width = 4, dpi = 300) | |
# adjust the width, the height and the density per inch | |
# A version of the same data can be displayed as points on a boxplot. | |
# Suitable when you have few participants. | |
points <- ggplot(means, aes(m)) + | |
geom_point(data = means, aes(y = m, x = condition), | |
size = 3, alpha = 0.5, colour="#FF6666", | |
position = position_jitter(width = 0.6, height = 0.1)) + | |
geom_boxplot(data = means, aes(y=m, x=condition), alpha= 0.2 , fill = "#545454") # colour and alphas | |
# You can flip axis to get a more confortable display of results | |
points <- points + ggtitle("Mean by each group") + | |
labs(x = "", y = "Mean of each participant") + coord_flip() | |
points | |
# finally we can save the plot | |
ggsave(file = "./points.png", points, height = 4, width = 5, dpi = 300) | |
# adjust the width, the height and the density per inch |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment