Effective tax rate on increasing working hours - METR

Data - OECD

FAMILY

Code
METR %>%
  left_join(METR_var$FAMILY %>%
              setNames(c("FAMILY", "Family")), by = "FAMILY") %>%
  group_by(FAMILY, Family) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
FAMILY Family Nobs
1EARNERC Couple without children - partner is out of work 35968
1EARNERC2C Couple with 2 children - partner is out of work 35968
2EARNERC2C_67AW Couple with 2 children - partner's earnings: 67% of the AW 35968
2EARNERC2C_AW Couple with 2 children - partner's earnings: AW 35968
2EARNERC_67AW Couple without children - partner's earnings: 67% of the AW 35968
2EARNERC_AW Couple without children - partner's earnings: Average Wage (AW) 35968
SINGLE Single person without children 35968
SINGLE2C Single person with 2 children 35968
2EARNERC2C_MIN NA 29568
2EARNERC_MIN NA 29568

TRANSITION

Code
METR %>%
  left_join(METR_var$TRANSITION %>%
              setNames(c("TRANSITION", "Transition")), by = "TRANSITION") %>%
  group_by(TRANSITION, Transition) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
TRANSITION Transition Nobs
33_67 From 33% to 67% of full time work 86720
50_100 From 50% to 100% of full time work 86720
50_67 From 50% to 67% of full time work 86720
67_100 From 67% to 100% of full time work 86720

EARNINGS - Nobs

Code
METR %>%
  left_join(METR_var$EARNINGS %>%
              setNames(c("EARNINGS", "Earnings")), by = "EARNINGS") %>%
  group_by(EARNINGS, Earnings) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
EARNINGS Earnings Nobs
67AW 67% of the Average Wage 124160
AW Average Wage 124160
MIN Minimum Wage 98560

HBTOPUPS - Nobs

Code
METR %>%
  left_join(METR_var$HBTOPUPS %>%
              setNames(c("HBTOPUPS", "Hbtopubs")), by = "HBTOPUPS") %>%
  group_by(HBTOPUPS, Hbtopubs) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
HBTOPUPS Hbtopubs Nobs
0 No 173440
1 Yes 173440

Effective Tax Rates on Increasing Labor Hours SINGLE-AW

Germany

Code
METR %>%
  # HBTOPUPS: Includes Housing Benefits?
  filter(LOCATION == "DEU", 
         FAMILY == "SINGLE", 
         EARNINGS == "AW", 
         HBTOPUPS == 1) %>%
  year_to_date %>%
  left_join(METR_var$TRANSITION %>%
              setNames(c("TRANSITION", "Transition")), by = "TRANSITION") %>%
  mutate(obsValue = obsValue/100) %>%
  ggplot() + ylab("Marginal Effective Tax Rates on Labor (%)") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transition)) + theme_minimal() +
  scale_color_manual(values = viridis(5)[1:4]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = percent_format(accuracy = 1))

France

Code
METR %>%
  # HBTOPUPS: Includes Housing Benefits?
  filter(LOCATION == "FRA", 
         FAMILY == "SINGLE", 
         EARNINGS == "AW", 
         HBTOPUPS == 1) %>%
  year_to_date %>%
  left_join(METR_var$TRANSITION %>%
              setNames(c("TRANSITION", "Transition")), by = "TRANSITION") %>%
  mutate(obsValue = obsValue/100) %>%
  ggplot() + ylab("Marginal Effective Tax Rates on Labor (%)") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transition)) + theme_minimal() +
  scale_color_manual(values = viridis(5)[1:4]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = percent_format(accuracy = 1))

Effective Tax Rates on Increasing Labor Hours - No Housing

Germany

Code
METR %>%
  # HBTOPUPS: Includes Housing Benefits?
  filter(LOCATION == "DEU", 
         FAMILY == "SINGLE", 
         EARNINGS == "AW", 
         HBTOPUPS == 0) %>%
  year_to_date %>%
  left_join(METR_var$TRANSITION %>%
              setNames(c("TRANSITION", "Transition")), by = "TRANSITION") %>%
  mutate(obsValue = obsValue/100) %>%
  ggplot() + ylab("Marginal Effective Tax Rates on Labor (%)") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transition)) + theme_minimal() +
  scale_color_manual(values = viridis(5)[1:4]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.75, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = percent_format(accuracy = 1))

France

Code
METR %>%
  # HBTOPUPS: Includes Housing Benefits?
  filter(LOCATION == "FRA", 
         FAMILY == "SINGLE", 
         EARNINGS == "AW", 
         HBTOPUPS == 0) %>%
  year_to_date %>%
  left_join(METR_var$TRANSITION %>%
              setNames(c("TRANSITION", "Transition")), by = "TRANSITION") %>%
  mutate(obsValue = obsValue/100) %>%
  ggplot() + ylab("Marginal Effective Tax Rates on Labor (%)") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transition)) + theme_minimal() +
  scale_color_manual(values = viridis(5)[1:4]) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = percent_format(accuracy = 1))