Equal Pay Report 2018

03 April, 2018

Last April we released Buffer’s first equal pay report in celebration of Equal Pay Day. Since then, we have overhauled our salary formula and made many internal role changes. Given all of these changes, I’m excited to dig into our salary data today and see how we’re doing.

Data Collection

The data we’ll use in this analysis comes from this spreadsheet. Let’s read the data into this R session and take a glimpe at what the data looks like.

# read csv
salaries <- read.csv("~/Downloads/salaries.csv", header = TRUE)

Now let’s do some exploratory analysis.

Summary Statistics

We will first average total cash compensation across the company, including base salary, dependent grants, and the salary/equity choice. We will break down how each component influences the wage gap later on.

To begin, let’s calculate the mean and median pay of employees of Buffer.

# find median and mean
salaries %>% 
  summarise(average_pay = mean(salary), median_pay = median(salary))
##   average_pay median_pay
## 1    111832.6     106709

The average salary, including dependent grants and salary choice, is $111,832, and the median salary is $106,709. We can visualize what the distribution looks like with a histogram.

We can see that most team members fall within the $75,000 to $100,000 range.

Average Salary by Gender

Let’s calculate the average pay, including base salary, dependent grants, and salary/equity choice, for men and women at Buffer.

The average salary for men at Buffer is $115,073 and the average salary for women is $104,426. On average, across the entire team, men earn around 10% more than women. Let’s take a look at the distribution of salaries for men and women.

These distributions are useful to see. For women, the center of the distribution is centered slighly to the left, below $100,000, and is narrower. Men have a wider distribution, as there are more men in technical, higher-paying roles.

Average Salary by Role Type

Last year we saw an interesting example of Simpson’s Paradox. We saw that, across the entire team, men earned significantly more than women. However, when broken down into technical and non-technical roles, we saw that women earned more, on average, in each category.

Let’s break the average salary down by role type again. The three role types are technical (engineering, data, product, and design), non-technical (finance, marketing, advocacy, and people), and leadership.

tech <- salaries %>%
  filter(role_type == 'technical') %>% 
  group_by(gender) %>%
  summarise(average_salary = mean(salary)) %>% 
  ungroup() %>% 
  ggplot(aes(x = gender, y = average_salary)) +
  geom_bar(stat = 'identity', fill = '#0366d6') +
  geom_text(aes(label = comma(round(average_salary, 0))), vjust = -1, size = 4) +
  theme_ipsum() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  scale_y_continuous(labels = dollar_format(), limits = c(0, 220000)) +
  labs(x = NULL, y = NULL, title = " ", subtitle = "Technical Roles")

nontech <- salaries %>%
  filter(role_type == 'non-technical' & team != 'leadership') %>% 
 group_by(gender) %>%
  summarise(average_salary = mean(salary)) %>% 
  ungroup() %>% 
  ggplot(aes(x = gender, y = average_salary)) +
  geom_bar(stat = 'identity', fill = '#c75050') +
  geom_text(aes(label = comma(round(average_salary, 0))), vjust = -1, size = 4) +
  theme_ipsum() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  scale_y_continuous(labels = dollar_format(), limits = c(0, 220000)) +
  labs(x = NULL, y = NULL, title = " ", subtitle = "Non-Technical Roles")

leaders <- salaries %>%
  filter(team == 'leadership') %>% 
  group_by(gender) %>%
  summarise(average_salary = mean(salary)) %>% 
  ungroup() %>% 
  ggplot(aes(x = gender, y = average_salary)) +
  geom_bar(stat = 'identity') +
  geom_text(aes(label = comma(round(average_salary, 0))), vjust = -1, size = 4) +
  theme_ipsum() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  scale_y_continuous(labels = dollar_format(), limits = c(0, 220000)) +
  labs(x = NULL, y = NULL, title = "Average Take Home Pay", subtitle = "Leadership Roles")

grid.arrange(leaders, tech, nontech, ncol = 3)

In technical roles, men earn around 16% more than women on average. In non-technical roles, women earn around 5% more than men. In leadership roles, men earn around 32% more than women on average.

Dependent Grants

Dependent grants can be thought of as a separate component of total cash compensation. We’ve decided to include it in this analysis in order to share as much information as possible, but we could have also left it out. Let’s explore what effect this component has on average pay for women and men. We can calculate what proportion of team members claim dependents.

# proportion that claim dependents
salaries %>% 
  mutate(has_dependents = dependents > 0) %>% 
  group_by(gender, has_dependents) %>% 
  summarise(people = n()) %>% 
  mutate(percent = people / sum(people))
## # A tibble: 4 x 4
## # Groups:   gender [2]
##   gender has_dependents people percent
##   <fct>  <lgl>           <int>   <dbl>
## 1 men    F                  18   0.375
## 2 men    T                  30   0.625
## 3 women  F                  15   0.714
## 4 women  T                   6   0.286

We see that 63% of men claim at least one dependent, compared to 29% of women. In Buffer, men are more than twice as likely as women to claim dependents.

# find average number of dependents claimed
salaries %>% 
  filter(dependents > 0) %>% 
  group_by(gender) %>% 
  summarise(avg_dependends = mean(dependents))
## # A tibble: 2 x 2
##   gender avg_dependends
##   <fct>           <dbl>
## 1 men              1.97
## 2 women            2.50

Of those people that claim dependents, men claim an average of 2, and women claim an average of 2.5. Let’s see how this component affects average salaries.

The average salary for men, excluding dependent grants, is around 9% higher than that of women.

Salary Choice

Back in 2013, we began offering teammates the option between an additional $10,000 in annual salary or accepting 30% more in stock options. Around 71% of our current team opted to take the higher salary choice. Let’s see how this breaks down for men and women.

# proportion that took salary choice
salaries %>% 
  mutate(took_salary_choice = salary_choice > 0) %>% 
  group_by(gender, took_salary_choice) %>% 
  summarise(people = n()) %>% 
  mutate(percent = people / sum(people))
## # A tibble: 4 x 4
## # Groups:   gender [2]
##   gender took_salary_choice people percent
##   <fct>  <lgl>               <int>   <dbl>
## 1 men    F                      18   0.375
## 2 men    T                      30   0.625
## 3 women  F                       6   0.286
## 4 women  T                      15   0.714

Around 63% of men benefit from the salary choice, compared to around 71% of women on the team. Let’s see how average salaries would look if we removed both the salary choice and dependent grants.

If we remove dependent grants and the salary/equity choice and only look at base salary, men still earn around 10% more than women on average.

Location

The location multiplier makes a large difference in salaries. Let’s see how it affects men and women on the team.

# proportion that took salary choice
salaries %>% 
  group_by(gender, location_multiplier) %>% 
  summarise(people = n()) %>% 
  mutate(percent = people / sum(people))
## # A tibble: 6 x 4
## # Groups:   gender [2]
##   gender location_multiplier people percent
##   <fct>                <int>  <int>   <dbl>
## 1 men                     75      2  0.0417
## 2 men                     85     37  0.771 
## 3 men                    100      9  0.188 
## 4 women                   75      1  0.0476
## 5 women                   85     19  0.905 
## 6 women                  100      1  0.0476

Around 5% of women have the lowest location multiplier of 0.75, 90% have a location multiplier of 0.85, and 5% have the highest location multiplier of 1.

This is substantially different than the distribution for men: around 4% have the lowest multiplier, 77% have the middle multiplier of 0.85, and 19% have the highest location multiplier of 1.

Here is what the average salaries would be if we controlled for location.

If we control for the differences in location, men still earn around 6% more than women on average.

Salaries by Team

We can also plot the average salary for each team at Buffer.

This is an interesting graph to look at, but let’s breakdown the average salaries for each team.

We can break this down by team. The product, data, and design teams consist only of men. The finance and people teams consist only of women. Interesting stuff overall! We still have some work to do.