Trickle-down economics has clearly failed

This is not a normal election. I want to be clear about that, because I’m going to write about economic policy as though we were comparing a generic Democrat to a generic Republican. Economic policy is not the most important issue in this particular election, but economics is important and an area of major and consistent differences between Republicans and Democrats.

This consistent disagreement means historically Republican presidents have opted for one set of policies, and Democratic presidents for another. Conveniently enough, that means we’ve built up enough history that we can actually compare how the economy has fared under Democrats and under Republicans. Instead of looking just at overall indicators, we can look specifically at how the economy has performed for people at different income levels.

The Census Bureau provides income levels for each 5th of the population, as well as the top 5%. Starting with Reagan, the Republican party embraced the idea that large tax cuts for the wealthy would boost income growth throughout the economy. By contrast, the two Democratic presidents post-Reagan both raised taxes on the wealthy. In the graph, I assume a 1-yr lag for a presidents policies to take effect (e.g. the economy in 1981 had not yet felt the impact of Reagan’s tax cuts, and so on for each President).from-1981

Fittingly, the only group to benefit from trickle-down was the top 5 percent. The bottom 40 percent of the population actually saw their incomes shrink under Republican administrations, as opposed to the modest growth seen under Democrats. The chart also shows that the increase in inequality is not purely a result of technology or globalization, but is also caused by political choices. Under Democrats, the top 20% have done slightly better than the bottom 20%. Under Republicans inequality has skyrocketed, with the top 5% doing well, while incomes shrink for the bottom 40% and stagnate for people with incomes between the 40th and 80th percentiles.

The census bureaus’ measure of income does not include benefits like food stamps, Medicaid, or the Earned Income Tax Credit. These initiatives are expanded under Democrats, and do help the bottom 20 percent, but I want to be clear that what we’re looking at here is the impact of policy on earnings – not government benefits. In other words, if the goal is to decrease the need for government benefits by increasing market earnings, history suggests it’s Democratic policies that have been successful at raising working-class incomes.

Finally, although Reagan does mark the enthusiastic embrace of pro-wealthy Republican economic policy, going back farther in history shows us that this is not simply an accident unique to the 5 presidents the U.S. has had since Reagan. The Census Bureau has another series going back to 1947 – it’s broken down slightly different, with income reported at each quintile (at the 20th percentile instead of for everyone from 0-20 percent of income).

from-1948

Again, there’s stark inequality under Republican presidents with the wealthy doing well and poor and middle-income demographics experiencing little economic growth. It’s also clear that for Democrats to have done better in every single part of the economic ladder, there must have been faster overall economic growth under Democrats. That matches the findings of a pair of economists, Alan Blinder and Mark Watson, who find that:

The U.S. economy not only grows faster, according to real GDP and other measures, during Democratic versus Republican Presidents, it also produces more jobs, lowers the unemployment rate, generates higher corporate profits and investment, and turns in higher stock market returns. Indeed, it outperforms under almost all standard macroeconomic metrics.

Trickle-down economics has historically failed. There’s no reason to expect it to work in the future.

Code is below, including data sources:

library(dplyr)
library(tidyr)
library(ggplot2)
library(ggthemes)

setwd("C:/Users/natek/Google Drive/Rgumentative")

income_data<-read.csv("f01AR 2015.csv", skip=82, header=FALSE)#Accessed table F-1 on 09/13/16 from https://www.census.gov/data/tables/time-series/demo/income-poverty/historical-income-families.html
mean_data<-read.csv("f03AR.csv", skip=65, header=FALSE)#Accessed table F-3 on 09/13/16 from https://www.census.gov/data/tables/time-series/demo/income-poverty/historical-income-families.html
#all numbers in 2015 dollars
income_data<-income_data[1:70,1:7]#subsetting to the data I want
income_data<-income_data[-3,-2]
mean_data<-mean_data[1:51,1:7]#subsetting to the data I want
mean_data<-mean_data[-3,]
#row 2 contains an additional estimate for 2013 based on a smaller sample
#see footnotes 38 and 39: https://www.census.gov/topics/income-poverty/income/guidance/cps-historic-footnotes.html
#and not carrying forward the sample size

income_data$V3<-sub(",","",income_data$V3)#getting rid of the commas
income_data$V4<-sub(",","",income_data$V4)
income_data$V5<-sub(",","",income_data$V5)
income_data$V6<-sub(",","",income_data$V6)
income_data$V7<-sub(",","",income_data$V7)

mean_data$V2<-sub(",","",mean_data$V2)#getting rid of the commas
mean_data$V3<-sub(",","",mean_data$V3)#getting rid of the commas
mean_data$V4<-sub(",","",mean_data$V4)
mean_data$V5<-sub(",","",mean_data$V5)
mean_data$V6<-sub(",","",mean_data$V6)
mean_data$V7<-sub(",","",mean_data$V7)

#generating a year variable to avoid the footnote documentation
income_data$year<-2015:1947
mean_data$year<-2015:1966

#making the variables numeric, renaming them, and dropping the old vars
income_data$q20<-as.numeric(income_data$V3)
income_data$q40<-as.numeric(income_data$V4)
income_data$q60<-as.numeric(income_data$V5)
income_data$q80<-as.numeric(income_data$V6)
income_data$q95<-as.numeric(income_data$V7)
income_data<-income_data[,7:12]

mean_data$bottom<-as.numeric(mean_data$V2)
mean_data$second<-as.numeric(mean_data$V3)
mean_data$third<-as.numeric(mean_data$V4)
mean_data$fourth<-as.numeric(mean_data$V5)
mean_data$fifth<-as.numeric(mean_data$V6)
mean_data$top_5<-as.numeric(mean_data$V7)
mean_data<-mean_data[,8:14]

#calculating percent change
#lead creates a vector that moves everything up a year
#thus subtracting across creates a lag.
income_data% mutate(q20_change=(q20-lead(q20))/lead(q20),
q40_change=(q40-lead(q40))/lead(q40),
q60_change=(q60-lead(q60))/lead(q60),
q80_change=(q80-lead(q80))/lead(q80),
q95_change=(q95-lead(q95))/lead(q95))

mean_data% mutate(bottom_change=(bottom-lead(bottom))/lead(bottom),
second_change=(second-lead(second))/lead(second),
third_change=(third-lead(third))/lead(third),
fourth_change=(fourth-lead(fourth))/lead(fourth),
fifth_change=(fifth-lead(fifth))/lead(fifth),
top_5_change=(top_5-lead(top_5))/lead(top_5))

#Adding in party data
presidents_data<-read.csv("Presidents by year.csv",header=TRUE)
data<-merge(income_data,presidents_data, by="year")
mean_data = merge(mean_data, presidents_data, by = "year")

#arranging by year, and then giving presidents credit (or blame) for the year after they left office
data%
arrange(desc(year)) %>%
mutate(party_lag=lead(party),
president_lag=lead(president),
term_lag=lead(term))

mean_data%
arrange(desc(year)) %>%
mutate(party_lag=lead(party),
president_lag=lead(president),
term_lag=lead(term))

#making first descriptive (lagged) table. Removing the NA of 1947
table1%
group_by(party_lag) %>%
summarise(q20=mean(q20_change,na.rm=TRUE),
q40=mean(q40_change,na.rm=TRUE),
q60=mean(q60_change,na.rm=TRUE),
q80=mean(q80_change,na.rm=TRUE),
q95=mean(q95_change,na.rm=TRUE))

table1<-table1[1:2,]#removing the NA group
table1[,2:6] = table1[,2:6]*100 #multiplying by 100 to report percentages

mean_table1%
group_by(party_lag) %>%
summarise(bottom=mean(bottom_change,na.rm=TRUE),
second=mean(second_change,na.rm=TRUE),
third=mean(third_change,na.rm=TRUE),
fourth=mean(fourth_change,na.rm=TRUE),
fifth=mean(fifth_change,na.rm=TRUE),
top_5=mean(top_5_change, na.rm=TRUE))

mean_table1<-mean_table1[1:2,]#removing the NA group
mean_table1[,2:7] = mean_table1[,2:7]*100 #multiplying by 100 to report percentages
names(mean_table1) = c("Party", "Lowest 5th", "Second 5th", "Third 5th", "Fourth 5th", "Highest 5th", "Top 5 percent") #renaming

#plotting table1
graph_table% gather(variable, value, -party_lag)
p<-ggplot(graph_table, aes(x=variable, y=value, fill=party_lag))+
geom_bar(colour="black",stat="identity",position=position_dodge())
p<-p+theme_bw()
p<-p+scale_x_discrete(labels=c("20th","40th", "60th", "80th", "95th"))
p<-p+labs(title="Income Growth by Party of President with a 1-year lag, 1948-2015",
y="Average Annual Percent Growth\n",
x="\nIncome Percentile")
p<-p+theme(axis.ticks=element_blank())
p<-p+theme(plot.title=element_text(color="black",size=12,face="bold"))
p<-p+theme(axis.text=element_text(size=12))
p<-p+scale_fill_manual(name="Party",values=c("blue","red"))
p

graph_table_mean% gather(variable, value, -Party)
graph_table_mean$variable = factor(graph_table_mean$variable,
levels = c("Lowest 5th", "Second 5th",
"Third 5th", "Fourth 5th",
"Highest 5th", "Top 5 percent"))

p<-ggplot(graph_table_mean, aes(x=variable, y=value, fill=Party))+
geom_bar(colour="black",stat="identity",position=position_dodge())
p<-p+theme_bw()
p<-p+scale_x_discrete(labels=c("Lowest 5th", "Second 5th",
"Third 5th", "Fourth 5th",
"Highest 5th", "Top 5 percent"))
p<-p+labs(title="Income Growth by Party of President with a 1-year lag, 1981-2015",
y="Average Annual Percent Growth\n",
x="\nIncome Percentile")
p<-p+theme(axis.ticks=element_blank())
p<-p+theme(plot.title=element_text(color="black",size=12,face="bold"))
p<-p+theme(axis.text=element_text(size=12))
p<-p+scale_fill_manual(name="Party",values=c("blue","red"))
p
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s