library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
library(knitr)
# Source external functions
source('make_peep_order_fr_xlsx.R')
source('write.order.csv.R')
source('update.README.R')
opts_knit$set(progress = FALSE, warnings = FALSE, eval = TRUE, echo = TRUE, tidy = TRUE, message = FALSE)
sessionInfo()
## R version 3.2.0 (2015-04-16)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: OS X 10.10.5 (Yosemite)
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] knitr_1.10.5 xlsx_0.5.7 xlsxjars_0.6.1 rJava_0.9-7
## [5] dplyr_0.4.2 ggplot2_1.0.1
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.11.6 magrittr_1.5 MASS_7.3-40 munsell_0.4.2
## [5] colorspace_1.2-6 R6_2.0.1 stringr_1.0.0 plyr_1.8.3
## [9] tools_3.2.0 parallel_3.2.0 grid_3.2.0 gtable_0.1.2
## [13] DBI_0.3.1 htmltools_0.2.6 yaml_2.1.13 digest_0.6.8
## [17] assertthat_0.1 reshape2_1.4.1 formatR_1.2 evaluate_0.7
## [21] rmarkdown_0.7 stringi_0.4-1 scales_0.2.5 proto_0.3-10
# Define paths
dir_xlsx <- 'xlsx'
dir_csv <- 'csv'
dir_figs <- 'figs'
peep_xlsx <- 'peep-run-orders-2015-09-09.xlsx'
There are four orders, with two runs in each. Sequences should start and end with a neutral prosody.
# Function loads .xlsx and turns into a data frame
# Should do list-wise, but faster to do this
o1r1 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 1, 1, 1)
o1r2 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 2, 1, 2)
o2r1 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 3, 2, 1)
o2r2 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 4, 2, 2)
o3r1 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 5, 3, 1)
o3r2 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 6, 3, 2)
o4r1 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 7, 4, 1)
o4r2 <- make_peep_order_fr_xlsx(paste(dir_xlsx, peep_xlsx, sep="/"), 8, 4, 2)
peep_orders <- rbind(o1r1, o1r2, o2r1, o2r2, o3r1, o3r2, o4r1, o4r2 )
# Make Run, Order, Stim_index a factor
peep_orders$Run = as.factor(peep_orders$Run)
Visualize orders
library(ggplot2)
p <- ggplot(peep_orders) +
aes(x=Stim_index, y=Emotion, color=Emotion) +
geom_point()
p
This seems to show that we need to normalize/recode the Happy, Angry, Neutral levels.
levels(peep_orders$Emotion)
## [1] "Angry" "Angry " "Happy" "Happy " "Neu" "Neut" "Sad" "Sil"
# Now rename to fix
levels(peep_orders$Emotion) <- list(ang = c("Angry", "Angry "),
hap = c("Happy", "Happy "),
neu = c("Neu", "Neut"),
sad = c("Sad"),
sil = c("Sil"))
levels(peep_orders$Speaker) <- list( fam = "Mom",
unf = "Unf")
Ok, so that’s fixed. Let’s replot by run and order.
p <- ggplot(peep_orders) +
aes(x=Stim_index, y=Emotion,
color=Emotion,
shape = Speaker) +
geom_point() +
facet_grid(Order ~ Run)
p
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
Now, let’s look at scripts.
peep_filtered <- peep_orders %>%
filter(Emotion %in% c('ang', 'hap', 'sad', 'neu'),
Speaker %in% c('fam', 'unf'))
with(peep_filtered, xtabs(formula = ~ Emotion + Script + Speaker, drop.unused.levels = TRUE))
## , , Speaker = fam
##
## Script
## Emotion 1a 2a 3a 4a 1b 2b 3b 4b
## ang 4 4 4 4 4 4 4 4
## hap 4 4 4 4 4 4 4 4
## neu 4 4 4 4 4 4 4 4
## sad 4 4 4 4 4 4 4 4
##
## , , Speaker = unf
##
## Script
## Emotion 1a 2a 3a 4a 1b 2b 3b 4b
## ang 4 4 4 4 4 4 4 4
## hap 4 4 4 4 4 4 4 4
## neu 5 5 5 5 5 5 5 5
## sad 4 4 4 4 4 4 4 4
See Unfamiliar speaker, Neu prosody, scripts 1a, 4a, 2b.
# Split Script and Version
peep_orders$Version <- peep_orders$Script
levels(peep_orders$Version) <- list(a = c("1a", "2a", "3a", "4a"),
b = c("1b", "2b", "3b", "4b"))
levels(peep_orders$Script) <- list('1' = c("1a", "1b"),
'2' = c("2a", "2b"),
'3' = c("3a", "3b"),
'4' = c("4a", "4b"),
'0' = c("None", "NA", ""))
Now, we can plot scripts.
p <- ggplot(peep_orders) +
aes(x=Stim_index, y=Emotion,
color = Emotion,
shape = Script) +
geom_point() +
facet_grid(Order ~ Run)
p
By version.
p <- ggplot(peep_orders) +
aes(x=Stim_index, y=Emotion,
color = Emotion,
shape = Version) +
geom_point() +
facet_grid(Order ~ Run)
p
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
## Warning: Removed 32 rows containing missing values (geom_point).
Do we have the same number of prosodies for each speaker within each of the four orders?
# Here's a better way to visualize whether we are balanced by orders
peep_filtered <- peep_orders %>%
filter(Emotion %in% c('ang', 'hap', 'sad', 'neu'))
xtabs( formula = ~ Speaker + Emotion + Order, data = peep_filtered, drop.unused.levels = TRUE)
## , , Order = 1
##
## Emotion
## Speaker ang hap neu sad
## fam 8 8 8 8
## unf 8 8 10 8
##
## , , Order = 2
##
## Emotion
## Speaker ang hap neu sad
## fam 8 8 8 8
## unf 8 8 10 8
##
## , , Order = 3
##
## Emotion
## Speaker ang hap neu sad
## fam 8 8 8 8
## unf 8 8 10 8
##
## , , Order = 4
##
## Emotion
## Speaker ang hap neu sad
## fam 8 8 8 8
## unf 8 8 10 8
# And now by script
xtabs( formula = ~ Speaker + Emotion + Order + Script, data = peep_filtered, drop.unused.levels = TRUE)
## , , Order = 1, Script = 1
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 4 2
##
## , , Order = 2, Script = 1
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 3, Script = 1
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 4, Script = 1
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 1, Script = 2
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 2, Script = 2
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 4 2
##
## , , Order = 3, Script = 2
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 4, Script = 2
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 1, Script = 3
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 2, Script = 3
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 3, Script = 3
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 4 2
##
## , , Order = 4, Script = 3
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 1, Script = 4
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 2, Script = 4
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 3, Script = 4
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 2 2
##
## , , Order = 4, Script = 4
##
## Emotion
## Speaker ang hap neu sad
## fam 2 2 2 2
## unf 2 2 4 2
# Full design
xtabs( formula = ~ Speaker + Emotion + Order + Script + Version, data = peep_filtered, drop.unused.levels = TRUE)
## , , Order = 1, Script = 1, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 2, Script = 1, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 1, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 1, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 2, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 2, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 3, Script = 2, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 2, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 3, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 3, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 3, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 4, Script = 3, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 4, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 4, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 4, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 4, Version = a
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 1, Script = 1, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 2, Script = 1, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 1, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 1, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 2, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 2, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 3, Script = 2, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 2, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 3, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 3, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 3, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
##
## , , Order = 4, Script = 3, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 1, Script = 4, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 2, Script = 4, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 3, Script = 4, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 1 1
##
## , , Order = 4, Script = 4, Version = b
##
## Emotion
## Speaker ang hap neu sad
## fam 1 1 1 1
## unf 1 1 2 1
peep_filtered$Order <- as.numeric(peep_filtered$Order)
peep_filtered$Script <- as.numeric(peep_filtered$Script)
peep_filtered$Run <- as.numeric(peep_filtered$Run)
peep_filtered$Stim_index <- as.numeric(peep_filtered$Stim_index)
write.csv(peep_filtered, paste(dir_csv, 'run_orders.csv', sep='/'), row.names = FALSE)