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).

Visualizing balance in design

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

Save orders as CSVs

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)