For this exercise, please try to reproduce the results from Experiment 1 of the associated paper (Ko, Sadler & Galinsky, 2015). The PDF of the paper is included in the same folder as this Rmd file.
A sense of power has often been tied to how we perceive each other’s voice. Social hierarchy is embedded into the structure of society and provides a metric by which others relate to one another. In 1956, the Brunswik Lens Model was introduced to examine how vocal cues might influence hierarchy. In “The Sound of Power: Conveying and Detecting Hierarchical Rank Through Voice,” Ko and colleagues investigated how manipulation of hierarchal rank within a situation might impact vocal acoustic cues. Using the Brunswik Model, six acoustic metrics were utilized (pitch mean & variability, loudness mean & variability, and resonance mean & variability) to isolate a potential contribution between individuals of different hierarchal rank. In the first experiment, Ko, Sadler & Galinsky examined the vocal acoustic cues of individuals before and after being assigned a hierarchal rank in a sample of 161 subjects (80 male). Each of the six hierarchy acoustic cues were analyzed with a 2 (high vs. low rank condition) x 2 (male vs. female) analysis of covariance, controlling for the baseline of the respective acoustic cue.
Below is the specific result you will attempt to reproduce (quoted directly from the results section of Experiment 1):
The impact of hierarchical rank on speakers’ acoustic cues. Each of the six hierarchy-based (i.e., postmanipulation) acoustic variables was submitted to a 2 (condition: high rank, low rank) × 2 (speaker’s sex: female, male) between-subjects analysis of covariance, controlling for the corresponding baseline acoustic variable. Table 4 presents the adjusted means by condition. Condition had a significant effect on pitch, pitch variability, and loudness variability. Speakers’ voices in the high-rank condition had higher pitch, F(1, 156) = 4.48, p < .05; were more variable in loudness, F(1, 156) = 4.66, p < .05; and were more monotone (i.e., less variable in pitch), F(1, 156) = 4.73, p < .05, compared with speakers’ voices in the low-rank condition (all other Fs < 1; see the Supplemental Material for additional analyses of covariance involving pitch and loudness). (from Ko et al., 2015, p. 6; emphasis added)
The adjusted means for these analyses are reported in Table 4 (Table4_AdjustedMeans.png, included in the same folder as this Rmd file).
library(tidyverse) # for data munging
library(knitr) # for kable table formating
library(haven) # import and export 'SPSS', 'Stata' and 'SAS' Files
library(readxl) # import excel files
# #optional packages:
# library(psych)
# library(car) # for ANCOVA
# library(compute.es) # for ANCOVA
# library(lsmeans) # for ANCOVA
# Just Experiment 1
d <-read_csv("data/S1_voice_level_Final.csv")
# DT::datatable(d)
d <- subset(d, select = c('voice', 'form_smean', 'form_svar', 'intense_smean', 'intense_svar', 'pitch_smean', 'pitch_svar', 'sex', 'feelpower', 'plev', 'vsex', 'form_rmean', 'form_rvar', 'intense_rmean', 'intense_rvar', 'pitch_rmean', 'pitch_rvar') )
d_high <- d%>%
filter(plev == 1)
d_low <- d %>%
filter(plev == -1)
In the paper, the adjusted means by condition are reported (see Table 4, or Table4_AdjustedMeans.png, included in the same folder as this Rmd file). Reproduce these values below:
mean(d$feelpower)
## [1] 4.335404
mean(d$plev)
## [1] 0.01863354
#feelpower mean based on group
high_mean <- mean(d_high$feelpower)
print(high_mean)
## [1] 5.207317
low_mean <- mean(d_low$feelpower)
print(low_mean)
## [1] 3.43038
#pitch mean based on group
high_pitch_mean <- mean(d_high$pitch_smean)
print(high_pitch_mean)
## [1] 155.9655
low_pitch_mean <- mean(d_low$pitch_smean)
print(low_pitch_mean)
## [1] 158.2399
#pitch variance mean based on group
high_pitchvar_mean <- mean(d_high$pitch_svar)
print(high_pitchvar_mean)
## [1] 1402.645
low_pitchvar_mean <- mean(d_low$pitch_svar)
print(low_pitchvar_mean)
## [1] 1677.756
#resonance variance mean based on group
high_formvar_mean <- mean(d_high$form_svar)
print(high_formvar_mean)
## [1] 42020.67
low_formvar_mean <- mean(d_low$form_svar)
print(low_formvar_mean)
## [1] 43837.42
#resonance mean based on group
high_form_mean <- mean(d_high$form_smean)
print(high_form_mean)
## [1] 1127.423
low_form_mean <- mean(d_low$form_smean)
print(low_form_mean)
## [1] 1131.193
#loudness variance mean based on group
high_intensevar_mean <- mean(d_high$intense_svar)
print(high_intensevar_mean)
## [1] 198.4641
low_intensevar_mean <- mean(d_low$intense_svar)
print(low_intensevar_mean)
## [1] 181.4738
#loudness mean based on group
high_intense_mean <- mean(d_high$intense_smean)
print(high_intense_mean)
## [1] 59.3642
low_intense_mean <- mean(d_low$intense_smean)
print(low_intense_mean)
## [1] 58.66591
The impact of hierarchical rank on speakers’ acoustic cues. Each of the six hierarchy-based (i.e., postmanipulation) acoustic variables was submitted to a 2 (condition: high rank, low rank) × 2 (speaker’s sex: female, male) between-subjects analysis of covariance, controlling for the corresponding baseline acoustic variable. […] Condition had a significant effect on pitch, pitch variability, and loudness variability. Speakers’ voices in the high-rank condition had higher pitch, F(1, 156) = 4.48, p < .05; were more variable in loudness, F(1, 156) = 4.66, p < .05; and were more monotone (i.e., less variable in pitch), F(1, 156) = 4.73, p < .05, compared with speakers’ voices in the low-rank condition (all other Fs < 1; see the Supplemental Material for additional analyses of covariance involving pitch and loudness).
# reproduce the above results here
# analysis of covariance
if(!require(emmeans)){install.packages("emmeans")}
library(emmeans)
# rank and pitch
fit = aov(pitch_smean ~ plev + sex + pitch_rmean, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 208 208 2.431 0.121
## sex 1 246290 246290 2875.962 <2e-16 ***
## pitch_rmean 1 43143 43143 503.784 <2e-16 ***
## Residuals 157 13445 86
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#mean1 = aov(pitch_smean ~ plev + sex + pitch_rmean, d_high)
#marginal = emmeans(mean1, ~ pitch_rmean)
#print(marginal)
#summary(fit)
fit = aov(pitch_smean ~ plev * sex + pitch_rmean, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 208 208 2.456 0.119
## sex 1 246290 246290 2905.557 <2e-16 ***
## pitch_rmean 1 43143 43143 508.969 <2e-16 ***
## plev:sex 1 222 222 2.616 0.108
## Residuals 156 13223 85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit = aov(pitch_smean ~ plev * sex * pitch_rmean, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 208 208 2.456 0.1192
## sex 1 246290 246290 2905.552 <2e-16 ***
## pitch_rmean 1 43143 43143 508.968 <2e-16 ***
## plev:sex 1 222 222 2.616 0.1079
## plev:pitch_rmean 1 253 253 2.982 0.0862 .
## sex:pitch_rmean 1 1 1 0.017 0.8969
## plev:sex:pitch_rmean 1 0 0 0.001 0.9738
## Residuals 153 12969 85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# rank and variability of loudness
fit = aov(intense_svar ~ plev + sex + intense_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 11615 11615 7.738 0.00607 **
## sex 1 13100 13100 8.727 0.00362 **
## intense_rvar 1 184966 184966 123.222 < 2e-16 ***
## Residuals 157 235669 1501
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit = aov(intense_svar ~ plev * sex + intense_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 11615 11615 7.690 0.00623 **
## sex 1 13100 13100 8.673 0.00372 **
## intense_rvar 1 184966 184966 122.458 < 2e-16 ***
## plev:sex 1 40 40 0.026 0.87160
## Residuals 156 235630 1510
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit = aov(intense_svar ~ plev * sex * intense_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 11615 11615 7.593 0.00657 **
## sex 1 13100 13100 8.564 0.00395 **
## intense_rvar 1 184966 184966 120.917 < 2e-16 ***
## plev:sex 1 40 40 0.026 0.87241
## plev:intense_rvar 1 495 495 0.324 0.57025
## sex:intense_rvar 1 169 169 0.110 0.74040
## plev:sex:intense_rvar 1 923 923 0.603 0.43854
## Residuals 153 234043 1530
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# rank and less variability in pitch
fit = aov(pitch_svar ~ plev + sex + pitch_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 3045302 3045302 7.226 0.00796 **
## sex 1 37906358 37906358 89.940 < 2e-16 ***
## pitch_rvar 1 28136055 28136055 66.758 9.56e-14 ***
## Residuals 157 66169736 421463
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit = aov(pitch_svar ~ plev * sex + pitch_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 3045302 3045302 7.184 0.00815 **
## sex 1 37906358 37906358 89.418 < 2e-16 ***
## pitch_rvar 1 28136055 28136055 66.371 1.13e-13 ***
## plev:sex 1 37857 37857 0.089 0.76546
## Residuals 156 66131879 423922
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit = aov(pitch_svar ~ plev * sex * pitch_rvar, d)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## plev 1 3045302 3045302 7.488 0.00695 **
## sex 1 37906358 37906358 93.208 < 2e-16 ***
## pitch_rvar 1 28136055 28136055 69.183 4.59e-14 ***
## plev:sex 1 37857 37857 0.093 0.76070
## plev:pitch_rvar 1 406144 406144 0.999 0.31921
## sex:pitch_rvar 1 3148508 3148508 7.742 0.00608 **
## plev:sex:pitch_rvar 1 354058 354058 0.871 0.35226
## Residuals 153 62223169 406687
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Were you able to reproduce the results you attempted to reproduce? If not, what part(s) were you unable to reproduce?
I managed to get the mean values relatively close to the actual values. It seems like they mentioned adjusting the mean to a baseline and I was not sure how to do that, so the numbers are a little off. (I spent a while searching up online and eventually ran out of time) I also ran a series of analysis of covariance tests and got slightly different results. I tried different interactions to see if that made a difference since I’m not super sure which kind I should use. Overall, my ANCOVA tests showed that as the authors mention, rank does have a sinificant effect on pitch variability and loudness variability.
How difficult was it to reproduce your results?
This one took a while for me to understand what they were trying to do and also what each row meant. There were a lot of different rows and not much great explanation on how to manipulate them. I also found it chanllenging trying to figure out how to control for factors & adjust for factors.
What aspects made it difficult? What aspects made it easy?
I think I understood the concept they were going for, which helped with thinking about how to run everything. However, working with the numbers was time consuming and difficult because they were hard to comprehend and the instructions weren’t super clear in terms of analyzing the data.