--- title: "Executives in Politics" date: "2024-03-16" output: html_document: theme: cosmo keep_md: yes --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE, results='asis') ``` ```{r pakete laden, include = FALSE,echo=FALSE} library(tidyverse) library(haven) library(ggplot2) library(patchwork) # To display 2 charts together library(hrbrthemes) library(RColorBrewer) library(stargazer) library(kableExtra) library(lfe) library(DescTools) ``` # Allgemeines Die Autoren Ilona Babenko, Viktar Fedaseyeu und Song Zhang untersuchen den Einfluss von sogenannten "Business Politicians" (BP) auf Unternehmen, Industrien und die föderale Gesetzgebung in den USA in den vergangenen 40 Jahren (1980 - 2018). Konkret analysieren sie, ob BP einen Vorteil haben, ihre Wahlkampagnen zu finanzieren, den Einfluss eines BP bei gewonnenener Wahl auf das ehemalige Unternehmen und dessen Industrie, sowie den Einfluss von BP auf die föderale U.S. Gesetzgebung. Dafür sammlen die Autoren Daten über die Biographien von U.S. Representanten, Senatoren sowie dem (Vize-)Präsidenten, über deren Stimmenabgabe bei Abstimmungen sowie über die Kampagnenfinanzierung von Kandidaten, die sich in der Zeit zwischen 1980 und 2018 zur Wahl für föderale Ämter haben aufstellen lassen. Sie kommen zu dem Ergebnis, dass BP einen Vorteil gegenüber Nicht-BP bei der Finanzierung ihres Wahlkampfes haben. Außerdem stellen die Autoren fest, dass die Firmen, in denen ein BP, der die Wahl gewonnen hat, zuletzt in führender Position tätig war, positive abnormale Aktienrenditen erzielen. Zuletzt stellen sie fest, dass BP relativ zu Nicht-BP bei Gesetzesentscheidung eher im Interesse der Unternehmen und entgegen den Interessen von Gewerkschaften und Konsumenten abstimmen. # Daten Definition *federal office holder*: gewähltes Mitglied des US Repräsentantenhauses, des US Senats oder (Vize-)Präsident der USA. Obwohl im Paper immer auch die Rede vom (Vize-)Präsident ist, sind diese *nicht* in den Datensätzen enthalten. Definition *Business Politician* aus dem Paper: "federal office holder, who prior to being elected, held at least one position as the CEO, president, chairman/chairwoman, or founder/owner of any private or public for-profit nonagricultural firm." Daten über Amtsträger wurden von Babenko et al. (2022) auf https://www.govtrack.us und https://bioguide.congress.gov/biosearch/biosearch.asp entnommen. Insgesamt wurden 2045 Amtsträger auf föderaler Ebene identifiziert (1711 Repräsentanten, 323 Senatoren und 11 (Vize-)Präsidenten). Daten zu sog. "bills" (Gesetzesvorschlägen) wurden ebenfalls von https://www.govtrack.us entnommen. In den Daten, die zur Verfügung gestellt werden, fehlen jeweils der Präsident und der Vizepräsident. ```{r Deskriptive Analyse, echo=FALSE} #Table1 Summary Statistics replizieren Deskript1 <- read_dta("./Dta-Dateien/Table1_Part2_SampleOfPoliticiansBasedOnOfficialBiographies.dta")%>% mutate(x = "Number of unique Members of Congress")%>% group_by(x)%>% summarise(N = n()) Deskript2 <- read_dta("./Dta-Dateien/Table1_Part2_SampleOfPoliticiansBasedOnOfficialBiographies.dta")%>% mutate(x = ifelse(CAND_OFFICE == "S","U.S. Senators","U.S. Representatives")) %>% group_by(x)%>% summarise(N = n()) Deskript3 <- read_dta("./Dta-Dateien/Table1_Part2_SampleOfPoliticiansBasedOnOfficialBiographies.dta")%>% filter(BsnsPolitician==1)%>% mutate(x = "Number of unique Members of Congress (Business Politicians)")%>% group_by(x)%>% summarise(N = n()) Deskript4 <- read_dta("./Dta-Dateien/Table1_Part2_SampleOfPoliticiansBasedOnOfficialBiographies.dta")%>% filter(BsnsPolitician==1)%>% mutate(x = ifelse(CAND_OFFICE == "S","U.S. Senators (Business Politicians)","U.S. Representatives (Business Politicians)")) %>% group_by(x)%>% summarise(N = n()) Table1 <- rbind(Deskript1,Deskript2,Deskript3,Deskript4) colnames(Table1) <- c("","N") Table1 <- Table1 %>% kbl(caption = "
Summary Statistics Based on Official Biographies
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Quelle: In Anlehnung an Babenko et al.(2022)") Table1 rm(Deskript1,Deskript2,Deskript3,Deskript4) #Auszug aus LegislativeImpact_AllElections erstellen LegislativeImpact_AllElections <- read_dta("./Dta-Dateien/Table7_TableB7_LegislativeImpact_AllElections.dta")%>% head() colnames(LegislativeImpact_AllElections) <- c("PoliticianID","Year","Republican Vote Share","CCUS","CFA","COPE","Business Politician","DW-NOMINATE","Republikaner","Election Cyle") LegislativeImpact_AllElections <- LegislativeImpact_AllElections %>% kbl(caption = "
Auszug aus LegislativeImpact_AllElections
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Original Datensatz LegislativeImpact_AllElections.dta, Eigene Darstellung") LegislativeImpact_AllElections rm(Deskript1,Deskript2,Deskript3,Deskript4) ``` Die obere Tabelle ist ein Auszug aus Table 1 aus Babenko et al. (2022). Sie zeigt die Anzahl an Beobachtungen, d.h. die Anzahl an verschiedenen Politikern (auf föderaler Ebene) zwischen 1980 und 2018 ausgenommen den 11 (Vize-)Präsidenten. Die untere Tabelle zeigt einen Auszug aus dem Datensatz LegislativeImpact_AllElections.dta. Die Scorings CCUS, CFA, COPE und DW-Nominate stammen von den entsprechenden Institutionen. Die Scores werden weiter unten genauer erläutert. ```{r DatensätzeHeadBoardEx, echo=FALSE} #Auszug aus ContributionsFromPACs_and_Individuals erstellen ContributionsFromPACs_and_Individuals <- read_dta("./Dta-Dateien/Table2_PanelA_ContributionsFromPACs_and_Individuals.dta")%>% head() colnames(ContributionsFromPACs_and_Individuals) <- c("Election Year","CandidateID","Business Politician","Primary Winner","General Winner","Cumulative Total Amount") ContributionsFromPACs_and_Individuals <- ContributionsFromPACs_and_Individuals %>% kbl(caption = "
Auszug aus ContributionsFromPACs_and_Individuals
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Original Datensatz ContributionsFromPACs_and_Individuals.dta, Eigene Darstellung") ContributionsFromPACs_and_Individuals #Auszug aus Table2_PanelA_Self_Funding erstellen Self_Funding <- read_dta("./Dta-Dateien/Table2_PanelA_Self_Funding.dta")%>% head() colnames(Self_Funding) <- c("CandidateID","Election Year","Total Contribution","Total Loan","Business Politician","Total Contribution Loan","Contribution above 1 Mio","Primary Winner") Self_Funding <- Self_Funding %>% kbl(caption = "
Auszug aus Table2_PanelA_Self_Funding
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Original Datensatz Table2_PanelA_Self_Funding.dta, Eigene Darstellung") Self_Funding ``` Da die Daten aus den Biographien nur über das Verhalten von BPs und Nicht-BPs während ihrer Amtszeit informieren, sammeln Babenko et al. (2022) ebenfalls Daten über die Wahlkampfphase. Sie konnten mit Hilfe von BoardEx (Datenbank über Geschäftsführer von S&P1500 Unternehmen) und Internetrecherchen 167 Kampagnen von BoardEx executive (BPs) für ein föderales Amt identifiziert. Die Daten zu Selbstfinazierung und Spenden von Kampagnen werden seit 1984 gesammelt und sind ab diesem Zeitpunkt verfügbar. In der oberen Tabelle sieht man Informationen über die kumulierte Menge von Spenden an die Kampagne eines Kandidaten. Ebenfalls wird informiert, ob der Kandidat ein BP ist, die Primary Election gewonnen hat und ob er die eigentliche Wahl gewonnen hat. Sie ist ein Auszug aus dem Datensatz ContributionsFromPACs_and_Individuals.dta. Die untere Tabelle ist ein Auszug aus Table2_PanelA_Self_Funding.dta. Man sieht, wie viel Geld ein Kandidat aus der eigenen Tasche in seine Kampagne investiert hat, sei es eine Spende oder ein Darlehen an die eigene Kampagne. Ebenfalls sieht man, ob es sich um einen BP handelt und ob der Kandidat die Primary Election gewonnen hat. Manche Tabellen wurden am Ende doch nicht in die Präsentation mit aufgenommen. ```{r BoardExSummary} ContributionsFromPACs_and_Individuals <- read_dta("./Dta-Dateien/Table2_PanelA_ContributionsFromPACs_and_Individuals.dta") #Anzahl Kampagnen berechnen NumberofCampaigns <- ContributionsFromPACs_and_Individuals %>% mutate(x = "Number of Campaigns")%>% group_by(x)%>% summarize(N = n()) #Anzahl nach BP und Nicht-BP ContributionsFromPACs_and_Individuals <- ContributionsFromPACs_and_Individuals %>% mutate(x = ifelse(businessPoliticianFlag==1,"Number of unique electoral campaigns by business politician","Number of unique electoral campaigns by nonbusiness politician"))%>% group_by(x)%>% summarize(N = n()) #Zeilen zusammenführen ContributionsFromPACs_and_Individuals <- rbind(NumberofCampaigns,ContributionsFromPACs_and_Individuals) colnames(ContributionsFromPACs_and_Individuals) <- c("","N") ContributionsFromPACs_and_Individuals <- ContributionsFromPACs_and_Individuals %>% kbl(caption = "
Summary Statistics based on BoardEx
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Quelle: In Anlehnung an Babenko et al.(2022)") ContributionsFromPACs_and_Individuals rm(NumberofCampaigns) ``` Auch hier stimmen die Zahlen aus der Replikation mit Table1, Panel B nicht überein. # Einleitung ```{r Figure1, echo=FALSE} # #Daten einlesen figure1CC <- read_dta("./Dta-Dateien/Figure1_FECCampaignCosts.dta") figure1Politicians <- read_dta("./Dta-Dateien/Figure1_Figure2_PoliticiansInFederalOffice.dta") coeff <- 1200000/0.15 #Koeffizient definieren für zweite Y-Achse figure1CC <- figure1CC %>% filter(CAND_ELECTION_YR < 2020)%>%#Durchschnittliche Kampagnenkosten (CC) pro Jahr ausrechnen und runterskalieren group_by(CAND_ELECTION_YR)%>% summarize(AverageCC_ShareBp = mean(TotalSpending_AllCandFiles)/coeff)%>% mutate(Gruppe = "Average Campaign Cost") figure1Politicians <- figure1Politicians%>% #Anteil Business Politicians (BP) pro Jahr ausrechnen group_by(CAND_ELECTION_YR)%>% summarize(AverageCC_ShareBp = sum(SeniorExecutiveVerified)/n())%>% mutate(Gruppe = "Share of Business Politicians") figure1 <- rbind(figure1Politicians,figure1CC) #Datensätze zusammenfügen #Figure1 plotten figure1 <- figure1 %>% ggplot() + geom_line(aes(x = CAND_ELECTION_YR, y = AverageCC_ShareBp, color = Gruppe)) + geom_point(aes(x = CAND_ELECTION_YR, y = AverageCC_ShareBp, color = Gruppe)) + labs(x = "Election Cycle") + scale_y_continuous(name = "Share of Business Politicians", sec.axis = sec_axis(~.*coeff, name="Average Campaign Cost (in USD)", breaks = seq(0, 2000000, by = 200000))) + scale_x_continuous(breaks = seq(min(figure1$CAND_ELECTION_YR), max(figure1$CAND_ELECTION_YR), by = 2))+ scale_color_manual(values=c("blue", "red"))+ theme_classic() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1), legend.title = element_blank(), legend.position = "bottom")+ labs(caption = "Quelle: In Anlehnung an Babenko et al. (2022)")+ ggtitle("Business Politicians in Congress and Average Campaign Cost") figure1 rm(figure1CC,figure1Politicians,coeff) #Ich mag meine work environment aufgeräumt und übersichtlich ``` Die Grafik ist eine Replikation von Figure 1 aus Babenko et al. (2022). Man sieht in der Grafik, dass der Anteil von BP an den föderalen Ämtern seit 1980 gestiegen ist. Außerdem sind auch die durchschnittlichen Kampagnenkosten gestiegen über den Beobachtungszeitraum. Wichtig ist hier darauf hinzuweisen, dass Babenko et al. (2022) *keinen* kausalen Zusammenhang zwischen dem Anteil an BP und den durchschnittlichen Kampagnenkosten herstellen. ```{r Figure1_alternative, echo=FALSE} figure1Politicians <- read_dta("./Dta-Dateien/Figure1_Figure2_PoliticiansInFederalOffice.dta") figure1PoliticiansALL <- figure1Politicians%>% #Anteil Business Politicians (BP) pro Jahr ausrechnen, überparteilich group_by(CAND_ELECTION_YR)%>% summarize(ShareBp = sum(SeniorExecutiveVerified)/n())%>% mutate(Gruppe = "Share of Business Politicians among Members of Congress") figure1PoliticiansParty <- figure1Politicians%>% #Anteil BP pro Jahr ausrechnen, auf Parteiebene group_by(CAND_ELECTION_YR, termsparty) %>% summarize(ShareBp = sum(SeniorExecutiveVerified)/n())%>% filter(termsparty=="Democrat"|termsparty=="Republican") %>% mutate(Gruppe = termsparty)%>% select(-c("termsparty")) #Figure plotten figure1 <- ggplot() + geom_bar(data = figure1PoliticiansParty, aes(x = CAND_ELECTION_YR, y= ShareBp, fill = Gruppe), stat = "identity", position = "dodge") + geom_line(data = figure1PoliticiansALL, aes(x = CAND_ELECTION_YR, y = ShareBp, color = Gruppe)) + geom_point(data = figure1PoliticiansALL,aes(x = CAND_ELECTION_YR, y = ShareBp, color = Gruppe)) + labs(x = "Election Cycle") + scale_x_continuous(breaks = seq(min(figure1PoliticiansALL$CAND_ELECTION_YR), max(figure1PoliticiansALL$CAND_ELECTION_YR), by = 2))+ scale_y_continuous(breaks = seq(0, 0.3, by = 0.05))+ theme_classic() + scale_color_manual(values=c("black"))+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1), legend.title = element_blank(), legend.position = "bottom")+ scale_fill_brewer(palette = "Set1")+ scale_fill_manual(values=c("#377EB8", "#E41A1C"))+ ggtitle("Business Politicians in Congress") + labs(caption = "Quelle: In Anlehnung aus Babenko et al. (2022)")+ ylab("Share of Business Politicians") figure1 rm(figure1Politicians, figure1PoliticiansALL,figure1PoliticiansParty) #Ich mag meine work environment aufgeräumt und übersichtlich ``` Diese Grafik wurde mit den Daten für Figure 2 aus Babenko et al. (2022) erstellt. Man sieht hier, dass der Anteil von BP sowohl bei den Demokraten als auch bei den Republikanern gestiegen ist, wobei dieser Anstieg nicht gleich stark bei beiden Parteien ist. Der Anteil von BP bei den Republikanern ist stärker gestiegen als bei den Demokraten. # Fundraising Advantage ```{r Figure1_CC, echo=FALSE} # #Daten einlesen figure1CC <- read_dta("./Dta-Dateien/Figure1_FECCampaignCosts.dta") figure1 <- figure1CC %>% filter(CAND_ELECTION_YR < 2020)%>%#Durchschnittliche Kampagnenkosten (CC) pro Jahr ausrechnen und runterskalieren group_by(CAND_ELECTION_YR)%>% summarize(AverageCC = mean(TotalSpending_AllCandFiles))%>% mutate(Gruppe = "Average Campaign Cost") #Figure1 plotten figure1 <- figure1 %>% ggplot() + geom_line(aes(x = CAND_ELECTION_YR, y = AverageCC, color = Gruppe)) + geom_point(aes(x = CAND_ELECTION_YR, y = AverageCC, color = Gruppe)) + labs(x = "Election Cycle", y = "Average Campaign Cost") + scale_x_continuous(breaks = seq(min(figure1$CAND_ELECTION_YR), max(figure1$CAND_ELECTION_YR), by = 2))+ scale_y_continuous(breaks = seq(0,1200000, by = 200000))+ scale_color_manual(values=c("blue"))+ theme_classic() + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1), legend.title = element_blank(), legend.position = "bottom")+ ggtitle("Average Cost of a Campaign")+ labs(caption = "Quelle: In Anlehnung an Babenko et al. (2022)") figure1 rm(figure1CC) #Ich mag meine work environment aufgeräumt und übersichtlich ``` Diese Grafik wurde mit den Daten von Figure 1 aus Babenko et al. (2022) erstellt. Sie zeigt noch einmal, dass die durchschnittlichen Kosten für eine Kampagne im Beobachtungszeitraum gestiegen sind. ```{r Figure4, echo=FALSE} #Daten einlesen Figure4 <- read_dta("./Dta-Dateien/Figure4_CampaignFundraising.dta") Figure4 <- Figure4 %>% #Faktorvariable hinzufügen für die richtige Beschriftung mutate(CampaignStage = as.factor(case_when( tertile_ID == 1 ~ "Beginning of Campaign", tertile_ID ==2 ~ "Middle of Campaign", tertile_ID == 3 ~ "End of Campaign" )))%>% mutate(businessPoliticianFlag = as.factor(ifelse(businessPoliticianFlag==1,"Business Politician","Non-Business Politician"))) Figure4$CampaignStage <- fct_relevel(Figure4$CampaignStage, "Beginning of Campaign","Middle of Campaign","End of Campaign")#Faktorvariable releveln Figure4_Final <- Figure4 %>% #Fundraising gruppiert nach Zeitpunkt und BP group_by(CampaignStage, businessPoliticianFlag)%>% summarize( AverageFundraising = mean(tot_cand_amt)) %>% mutate(ALL_Candidates = "All Candidates") Figure4 <- Figure4 %>% #Fundraising gruppiert nach Zeitpunkt und BP nur für PrimaryWinners filter(primaryWinnerFlag == 1)%>% group_by(CampaignStage, businessPoliticianFlag)%>% summarize( AverageFundraising = mean(tot_cand_amt))%>% mutate(ALL_Candidates = "Primary Winners Only") Figure4_Final <- rbind(Figure4_Final,Figure4) #beide Dataframes in einen bringen Figure4<- Figure4_Final%>% ggplot(aes(x=CampaignStage,y=AverageFundraising*1000, fill = businessPoliticianFlag)) + geom_bar(stat="identity", position = "dodge", width = 1)+ facet_wrap(~ALL_Candidates, strip.position = "top", scales = "free_x") + theme_classic()+ theme(panel.spacing = unit(0, "lines"), #allerlei kosmetische Dinge mit theme() strip.background = element_blank(), strip.placement = "outside", legend.position = "right", legend.title = element_blank(), axis.title.x =element_blank(), axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1 ))+ ylab("Average Fundrasing")+ scale_fill_brewer(palette = "Set1")+ labs(caption = "Quelle: In Anlehnung an Babenko et al. (2022)")+ ggtitle("Fundraising by Business Politician and Their Opponents") Figure4 rm(Figure4_Final) ``` Diese Grafik ist eine Replikation von Figure 4 aus Babenko et al. (2022). Lediglich der "BP cumulative fundraising advantage" wurde nicht explizit abgebildet. Um die Finanzierung/Spenden einer Kampagne den drei Zeitabschnitt Beginning, Middle und End zuzuschreiben, wurde für jeden Kandidaten die Zeit in Tagen von Einreichung seiner "Statement of Candidacy" bis zum Wahltag gemessen und in drei gleich lange Abschnitte (Beginning, Middle, End) unterteilt. Man sieht, dass im Durchschnitt unter allen Kandidaten, die BP in jeder Phase ihrer Wahlkampagne einen Finanzierungsvorteil über Nicht-BP haben. Betrachtet man nun nur die Primary Winner (Gewinner der Vorwahl), haben BP in der frühen und mittleren Phase des Wahlkampfes immernoch einen Vorteil über Nicht-BP. Lediglich in der letzten Phase, haben im Durchschnitt Nicht-BP einen Finanzierungsvorteil über BP. ```{r Table2, echo =FALSE} #Daten einlesen Table2PACsandIndividuals <- read_dta("./Dta-Dateien/Table2_PanelA_ContributionsFromPACs_and_Individuals.dta") Table2SelfFunding <- read_dta("./Dta-Dateien/Table2_PanelA_Self_Funding.dta") #Anteil der BP berechnen mit self contribution größer gleich 1 Mio, alle Kandidaten Table2a <- Table2SelfFunding %>% group_by(businessPoliticianFlag)%>% summarize(`Share of candidates giving 1 Mio or more of their personal funds (all candidates)`= round(sum(above1Million_contri_loan)/n(),3)*100) #Anteil der BP berechnen mit self contribution größer gleich 1 Mio, primary winners Table2b <- Table2SelfFunding %>% filter(primaryWinner==1)%>% group_by(businessPoliticianFlag)%>% summarize(`Share of candidates giving 1 Mio or more of their personal funds (primary winners only)`= round(sum(above1Million_contri_loan)/n(),3)*100) #Contributions from PAC and individuals, alle Kandidaten Table2c <- Table2PACsandIndividuals%>% group_by(businessPoliticianFlag)%>% summarize(`Contributions from PAC and individuals (all candidates)`= round(mean(cum_total_daily_amt),1)) #Contributions from PAC and individuals, alle Kandidaten Table2d <- Table2PACsandIndividuals%>% filter(primaryWinnerFlag==1)%>% group_by(businessPoliticianFlag)%>% summarize(`Contributions from PAC and individuals (primary winners only)`= round(mean(cum_total_daily_amt),1)) #Alle 4 Tabellen joinen über businessPoliticianFlag Table2 <- left_join(Table2a, Table2b, by="businessPoliticianFlag")%>% left_join(.,Table2c, by = "businessPoliticianFlag")%>% left_join(., Table2d, by = "businessPoliticianFlag")%>% select(-c("businessPoliticianFlag")) #Tabelle transponieren und konvertieren in Dataframe Table2 <- as.data.frame(t(Table2)) #Spalten benennen colnames(Table2) <- c("Nonbusiness Politicians","Business Politicians") #Tabelle mit kable extra bearbeiten Table2 <- Table2 %>% kbl(caption = "
Self-funding and Contributions from Political Action Committees (PACs) and Individuals
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) %>% add_footnote("Quelle: In Anlehnung an Babenko et al. (2022)")#%>% #save_kable("./Executives-in-Politics_files/figure-html/Table2.png") Table2 rm(Table2a,Table2b,Table2c,Table2d,Table2PACsandIndividuals,Table2SelfFunding) ``` Diese Tabelle ist eine Replikation von Table 2 aus Babenko et al. (2022). Aus Gründen der Übersichtlichkeit wurden gewisse Spalten und Zeilen weggelassen. Wichtig zu erwähnen ist, dass es in den USA Gesetze und Restriktionen für Kampagnenspenden gibt, die aber weniger streng sind, wenn der Kandidat seiner Kampagne das Geld selbst spendet oder leiht. Auch hier sieht man, dass BP einen Finanzierungsvorteil bei ihren Wahlkampagnen haben. Der Anteil an BP, die 1 Mio US Dollar oder mehr aus ihrem eigenen Vermögen für die Kampagne zur Verfügung stellen, ist sowohl im gesamten als auch im auf die Primary Winners reduzierten Datensatz, deutlich größer. Ebenfalls sieht man, dass BP im Durchschnitt von allen Kandidaten mehr Kampagnenspenden erhalten als Nicht-BP. Babenko et al. (2022) vermuten dahinter, dass die ehemaligen Unternehmen der BP wesentlich zu diesen Spenden beitragen könnten. In der folgenden Regressionstabelle wird dies näher untersucht. ```{r Table6, results='asis', echo =FALSE} #Daten einlesen Table6 <- read_dta("./Dta-Dateien/Table3_TablesB1_B2_ContributionsReceivedFromFirms.dta") #Zuerst alle Firmen entfernen, die keinen eigenen aktuellen oder ehemaligen CEO, etc. unterstützen Table6Firms <- Table6 %>% filter(bsns_POL_Flag ==1)%>% group_by(CompanyID)%>% summarize(Indikator = 1)%>% na.omit() Table6 <- left_join(Table6,Table6Firms, by = "CompanyID")%>% filter(is.na(Indikator)==FALSE) #Regression mit election cycle fixed effects reg1 <- felm(transactionAmt_ALL ~ bsns_POL_Flag + logSize + roa + tobinQ + capexRatio + rdExpenseRatio | CAND_ELECTION_YR | 0 | CAND_ID ,data = Table6) #Regression mit Election Cyle, Firm und Politician Fixed Effects reg2 <- felm( transactionAmt_ALL ~ bsns_POL_Flag + logSize + roa + tobinQ + capexRatio + rdExpenseRatio | CAND_ELECTION_YR + CompanyID + CAND_ID | 0 | CAND_ID ,data = Table6) Table6 <- stargazer(reg1, reg2, type = "html", out = "./Executives-in-Politics_files/figure-html/Table6.html", align = F, title = "Contributions from Firms to Politicians", add.lines=list( c('Election cycle fixed effects', 'Yes','Yes'), c('Firm fixed effects', 'No','Yes'), c('Politician fixed effects', 'No','Yes')), covariate.labels = c("Business politician running for office indicator","Firm size (log of 1 + Assets)","ROA","Tobin's Q","Capital expenditures","R&D"), column.labels = "Contribution from firms to politicians", digits = 3, dep.var.labels.include = FALSE, model.names = FALSE, model.numbers = FALSE, column.separate = c(2), notes = "Quelle: In Anlehnung an Babenko et al. (2022)", style="aer" ) rm(Table6Firms,reg1,reg2) ``` Diese Regressionstabelle repliziert die Regressionen (2) und (4) aus Table 3 aus Babenko et al. (2022). Erklärung Variablen (aus ReadMe): - Business politician running for office indicator: indicator variable equal to 1 if the business politician previously worked at a given firm - ROA: return on assets - Tobin’s Q: Tobin’s Q (Marktwert einer Firma/ Wiederbeschaffungskosten) - Capital expenditures: firm capital expenditures normalized by assets - R&D: firm research and development expenses normalized by assets - Firm Size: logarithm of total assets Es werden Fixed Effects einmal nur für den Election cycle und einmal für den Election cycle, die Firma und den Politiker betrachtet. Standardfehler werden jeweils auf Politiker geclustert. Beide Regressionen schätzen den Effekt des BP-Indikators (mit diversen Kontrollvariablen der Firma) auf die Spenden einer Firma an einen Kandidaten. In der linken Regression ist der Effekt signifikant auf dem 1% Niveau. Durch die Hinzunahme von Unternehmen und Kandidaten Fixed Effects ist der Koeffizient nur noch signifikant auf dem 5% Niveau. Dennoch unterstützen die Regressionsergebnisse die Vermutung, dass Firmen mehr an BPs, die in der Firma tätig waren, spenden als an Nicht-BPs/ BPs aus anderen Firmen. Babenko et al. (2022) begründen den Vorteil der BP bei der Kampagnenfinanzierung dadurch, dass BP im Schnitt mehr finanzielle Mittel haben, um die Kampagne selbst zu finanzieren, und dass Firmen mehr Geld an ihre ehemalige Führungskräfte spenden, als an andere Politiker. # Aggregated Impact on Legislative Impact ```{r Figure5, echo=FALSE} #Daten einlesen Figure5 <- read_dta("./Dta-Dateien/Figure5_LegislativeImpact.dta") Figure5 <- Figure5 %>% #Spalte DW Score transformieren und umbenennen mutate(`DW (liberal/conservativ)` = dwnom1*100)%>% mutate(`COPE (prolabor)` = COPE)%>% mutate(`CFA (proconsumer)` = CFA)%>% mutate(`CCUS (probusiness)` = CCUS)%>% select(-c("dwnom1","CCUS","CFA","COPE")) #Daten in das Long Format überführen; damit ist es leichter weiterzuarbeiten; LegislativeImpact ist das Rating. Figure5Long <- Figure5 %>% pivot_longer(cols = c("CCUS (probusiness)","CFA (proconsumer)","COPE (prolabor)","DW (liberal/conservativ)"), names_to = "LegislativeImpact", values_to = "Value") # durchschnittlichen Score pro Jahr und interest group ratings Figure5Long <- Figure5Long %>% group_by(YearsRelativeToTurnover,LegislativeImpact)%>% summarize(Score = mean(Value, na.rm = TRUE)) #LegislativeImpact in Factor variable überführen und releveln, um die richtige Anordnung in der Grafik zu erhalten Figure5Long$LegislativeImpact <- factor(Figure5Long$LegislativeImpact, levels = c("COPE (prolabor)","CFA (proconsumer)","CCUS (probusiness)","DW (liberal/conservativ)")) #Grafik erstellen und plotten Figure5 <- Figure5Long %>% ggplot() + geom_line(aes(x=YearsRelativeToTurnover, y=Score, color = LegislativeImpact, linetype = LegislativeImpact))+ geom_point(aes(x=YearsRelativeToTurnover, y=Score, color = LegislativeImpact))+ facet_wrap(~ LegislativeImpact, ncol=2, scales = "free")+ scale_color_manual(values=c("#377EB8","#377EB8","#E41A1C","#E41A1C"))+ scale_linetype_manual(values=c("dashed","dashed","solid","solid"))+ geom_vline(xintercept = 0)+ geom_vline(xintercept = 2)+ labs(caption = "Quelle: Repliziert aus Babenko et al. (2022)")+ xlab("Years Relative to Turnover")+ #ylim(c(0,100))+ theme_classic()+ theme(legend.title = element_blank(), legend.position = "none") Figure5 rm(Figure5Long) ``` Diese Grafik ist eine Replikation von Figure 5, Babenko et al. (2022). Folgend werden die Scores, die auf der y-Achse abgebildet werden, erklärt. Diese Scores bilden ab, wie sehr das Abstimmungsverhalten des Politikers die Interessen einer bestimmten Gruppe widerspiegelt. - COPE: prolabor rating bereitgestellt vom Committee on Political Education. - CCUS: probusiness rating bereitgestellt von der Chamber of Commerce of the United States. - CFA: proconsumer rating bereitgestellt von der Consumer Federation of America. - DW(-NOMINATE): liberal/conservative score entwickelt von Pole and Rosenthal (1991). Ursprünglich auf einer Skala von -1 bis 1, hier multipliziert mit 100, um auf einer vergleichbaren Skala wie die anderen Scores (alle von 0 bis 100) zu liegen. -1 ist maximal liberal und +1 ist maximal konservativ. In dieser Grafik sollen den Unterschied im Abstimmungsverhalten von BP zu Nicht-BP zeigen. Auf der x-Achse wird die Zeit normalisiert zum Event (Wahlsieg) abgebildet. Dadurch wird berücksichtigt, dass Amtszeiten durch Wiederwahl oder Rüchtritt verschieden lang sein können. Zeitpunkt 0 ist das erste Jahr im Amt eines BP, Zeitpunkt 2 das letzte Jahr. Zeitpunkt 1 ist der Durchschnitt über alle Jahre im Amt dazwischen. -2 und -1 sind die durchschnittlichen Scores des Vorgängers und 3 und 4 sind die durschnittlichen Scores des Nachfolgers im jeweiligen Wahlkreis. Man sieht, dass nach Amtsübernahme eines BP die Scores COPE und CFA sinken, was bedeutet, dass das Abstimmungsverhalten von BP weniger mit den Interessen von prolabor und proconsumer übereinstimmt. Nach der Amtszeit des BP steigen diese Scores wieder. CCUS und DW Scores dagegen steigen, was auf ein Abstimmverhalten hindeutet, dass sich mehr mit den Interessen von Unternehmen deckt. Nach der Amtszeit des BP sinken die beiden Scores wieder. Die Ergebnisse der Grafik deuten auch darauf hin, dass das Abstimmverhalten von BP nicht gänzlich durch langfristige Änderungen der politischen Präferenzen des Wahlkreises zu erklären ist. Die grafische Analyse zeigt aber nicht, welchen Einfluss kurzfristige Änderungen der Präferenzen der Wähler auf das Verhalten von BP hat. Außerdem gibt die Grafik keinen Aufschluss über mögliche Effekte durch die Parteizugehörigkeit. Diese Fragen sollen durch die folgenenden zwei Regressionstabellen gezeigt werden. ```{r Table9+10, results='asis', echo= FALSE} Table9 <- read_dta("./Dta-Dateien/Table6_TableB6_LegislativeImpact_CloseElections.dta") #Daten wurden nur von 1980 bis 2016 verwendet #Table9 <- Table9 %>% # filter(Year <= 2016) #Alle Regressionen durchführen reg1 <- felm(CFA~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table9) reg2 <- felm(COPE~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table9) reg3 <- felm(CCUS~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table9) reg4 <- felm(dwnom1~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table9) #Mit Stargazer ausgeben Table9 <- stargazer(reg1,reg2,reg3,reg4, type = "html", out = "./Executives-in-Politics_files/figure-html/Table9.html",align = F, title = " Impact of Business Politicians on U.S. Legislation: Evidence from Close Elections", add.lines=list( c('Election cycle fixed effects', 'Yes','Yes','Yes','Yes')), covariate.labels = c("Business politician indicator","Republican indicator","Republican vote share"), column.labels = c("CFA (proconsumer)","COPE (prolabor)","CCUS (probusiness)","DW-NOMINATE (liberal/conservativ)"), digits = 3, dep.var.labels.include = FALSE, model.names = FALSE, model.numbers = FALSE, notes = "Quelle: In Anlehnung an Babenko et al.(2022)", style="aer" ) rm(reg1,reg2,reg3,reg4) ``` Die Regressionstabelle repliziert jeweils die Regressionen (2) und (4) aus Table 9 und Table 10 aus Babenko et al. (2022). Es werden jeweils die verschiedenen Scores auf den BP-Indikator, eine Indikatorvariable, ob es sich um einen Republikaner oder Demokraten handelt, und den Stimmenanteil der Republikaner regressiert. Der Datensatz ist auf knappe Wahlsiege beschränkt, d.h. nur Wahlen, bei denen ein BP mit einem Unterschied von maximal 10% gewonnen oder verloren hat. Durch diese Eingrenzung soll der reine Effekt von BP gegenüber Nicht-BP gezeigt werden, da die Veränderung des Abstimmverhaltens nicht auf eine Veränderung der Präferenzen der Wähler zurückzuführen ist. Es werden Fixed Effects nach Election cyle berücksichtigt und Standardfehler sind nach Politiker geclustert. Man sieht, dass der BP-Indikator bei COPE, CFA und DW signifikant ist auf verschiedenen Niveaus. Einzig bei CCUS ist der Koeffizient unsignifikant. Diese Regression stützt die Ergebnisse aus der grafischen Analyse, dass BP wahrscheinlicher gegen proconsumer und prolabor, also gegen Gewerkschafts und Konsumenten Interessen handeln als Nicht-BP. ```{r Table11+12, results='asis', echo= FALSE} Table11 <- read_dta("./Dta-Dateien/Table7_TableB7_LegislativeImpact_AllElections.dta") #Alle Regressionen durchführen reg1 <- felm(CFA~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table11) reg2 <- felm(COPE~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table11) reg3 <- felm(CCUS~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table11) reg4 <- felm(dwnom1~ SeniorExecutiveVerified + repFlag + RepublicanVoteShare | Cycle |0| idbioguide , data = Table11) #Mit Stargazer ausgeben Table11 <- stargazer(reg1,reg2,reg3,reg4, type = "html", out = "./Executives-in-Politics_files/figure-html/Table11.html", align = F, title = "Impact of Business Politicians on U.S. Legislation: Large Sample Evidence", add.lines=list( c('Election cycle fixed effects', 'Yes','Yes','Yes','Yes')), covariate.labels = c("Business politician indicator","Republican indicator","Republican vote share"), column.labels = c("CFA (proconsumer)","COPE (prolabor)","CCUS (probusiness)","DW-NOMINATE (liberal/conservativ)"), digits = 3, dep.var.labels.include = FALSE, model.names = FALSE, model.numbers = FALSE, notes = "Quelle: In Anlehnung an Babenko et al. (2022)", style="aer" ) rm(reg1,reg2,reg3,reg4) ``` Die Regressionstabelle repliziert jeweils die Regressionen (2) und (4) aus Table 11 und Table 12 aus Babenko et al. (2022). Die Regressionstabelle zeigt die gleichen Regressionen für den gesamten Datensatz und nicht nur für knappe Wahlen. Man sieht, dass die Koeffizienten kleiner sind als zuvor, dafür aber all signifikant auf dem 1% Niveau. Laut Babenko et al. (2022) stützt dies ihre Vermutung, dass BP eher im Interesse von Unternehmen und entgegen den Interessen von Gewerkschaften und Konsumenten handeln. Dieses Verhalten kann auch nicht einzig auf sich ändernde Präferenzen der Wähler zurückgeführt werden. # Appendix Firm-Value Implications ```{r Table7, echo=FALSE} #Daten einlesen Table7 <- read_dta("./Dta-Dateien/Table4_TablesB3_B4_B5_CARs.dta") #Ich hab mir jetzt nicht die Mühe gemacht, alle Panel in einer Tabelle darzustellen, da das hier eh nur im Appendix landet #Daten in Long-Format überführen Table7Long <- Table7 %>% pivot_longer(cols= c("CAR_Window_1","CAR_Window_2","CAR_Window_3","CAR_Window_4"), names_to = "Event_Window", values_to = "CAR") #Gruppieren und pro CAR Window/sample zusammenfassen, Panel A Table7LongA <- Table7Long %>% filter(sample == "Tab4 Panel A B") %>% group_by(Event_Window, sample)%>% summarize(CAR = round(mean(CAR)*100,1), count = n()) #Tabelle mit kable extra bearbeiten Table7LongA <- Table7LongA %>% select(-c("sample"))%>% kbl(caption = "
Panel A: CARs of firms whose executives win political office (baseline)
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) #winsorizing, gruppieren und zusammenfassen, Panel B Table7LongB <- Table7Long%>% filter(sample== "Tab4 Panel A B") Table7LongB$CAR <- Winsorize(Table7LongB$CAR,probs=c(0.05,0.95)) Table7LongB <- Table7LongB%>% group_by(Event_Window, sample)%>% summarize(CAR = round(mean(CAR)*100,1), count = n()) #Tabelle mit kable extra bearbeiten Table7LongB <- Table7LongB %>% select(-c("sample"))%>% kbl(caption = "
Panel B: CARs of firms whose executives win political office (returns winsorized at 5%)
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) #Gruppieren und pro CAR Window/sample zusammenfassen, Panel C Table7LongC <- Table7Long %>% filter(sample== "Tab4 Panel C D") %>% group_by(Event_Window, sample)%>% summarize(CAR = round(mean(CAR)*100,1), count = n()) #Tabelle mit kable extra bearbeiten Table7LongC <- Table7LongC %>% select(-c("sample"))%>% kbl(caption = "
Panel C: CARs of up to 10 closest firms by market cap in the same four-digit SIC industry (baseline)
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T) #winsorizing, gruppieren und zusammenfassen, Panel D Table7LongD <- Table7Long%>% filter(sample== "Tab4 Panel C D") Table7LongD$CAR <- Winsorize(Table7LongD$CAR,probs=c(0.05,0.95)) Table7LongD <- Table7LongD%>% group_by(Event_Window, sample)%>% summarize(CAR = round(mean(CAR)*100,1), count = n()) #Tabelle mit kable extra bearbeiten Table7LongD <- Table7LongD %>% select(-c("sample"))%>% kbl(caption = "
Panel D: CARs of up to 10 closest firms by market cap in the same four-digit SIC industry (returns winsorized at 5%)
",format = "html",align="c") %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), position = "float_left") %>% kable_paper(full_width = T)%>% add_footnote("Quelle: In Anlehnung an Babenko et al. (2022)") #Tabellen ausgeben Table7LongA Table7LongB Table7LongC Table7LongD ``` Diese Tabelle ist eine Replikation von Table 7 aus Babenko et al. (2022). Da der Fokus auf dem Finanzierungsvorteil und der Abstimmungsverhalten von BP liegen soll, sind diese Tabelle und die folgende Regressionstabelle im Appendix. Alle Zahlen haben bis hierher mit denen aus dem Paper übereingestimmt. Panel D dagegen hat andere Werte als Panel D im Paper und es gibt keinen Hinweis woran es liegen könnte. Babenko et al. (2022) berechnen den cumulativ abnormal return (CAR) für verschiedene Zeiträume um die Wahl eines BP für die Firma und weitere Firmen, in der der BP zuvor tätig war. Die Zeitfenster ergeben sich relativ zum Wahltag (0) wie folgt: Window 1: -1;+1 Window 2: -1;+3 Window 3: -1;+5 Window 4: -1;+7 Sie argumentieren, dass die positiven CARs (Panel A und B) anzeigen, dass Marktteilnehmer erwarten, dass das ehemalige Unternehmen eines BP Vorteile durch dessen Wahl haben könnte. Auch beobachten sie, dass es Hinweise gibt, dass es einen spillover effect auf ähnliche Unternehmen in der Industrie gibt (Panel C und D). Die Ergebnisse sind auch robust, wenn sie "winsorized" (Ausreißer werden nicht ausgelassen, sondern durch einen bestimmten Wert ersetzt) werden. ```{r Table8, echo=FALSE} Table8 <- read_dta("./Dta-Dateien/Table5_CommitteeAssignments.dta") #Regression durchführen reg1 <- felm(assignment_cmts~same_industry_exp+seniority | Congress |0| idbioguide ,data = Table8) reg2 <- felm(assignment_cmts~same_industry_exp+powerful_cmt | Congress + idbioguide |0| idbioguide,data = Table8) Table8 <- stargazer(reg1,reg2,type = "html", out = "./Executives-in-Politics_files/figure-html/Table8.html", align = F, title = "Business Politicians’ Service on Congressional Committees", add.lines=list( c('Election cycle fixed effects', 'Yes','Yes'), c('Politican fixed effects', 'No','Yes')), covariate.labels = c("Relevant industry indicator","Seniority","Powerful committee indicator"), column.labels = "Committee assignment indicator", digits = 3, dep.var.labels.include = FALSE, model.names = FALSE, model.numbers = FALSE, column.separate = c(2), notes = "Quelle: In Anlehnung an Babenko et al. (2022)", style="aer" ) rm(reg1,reg2) ``` Die Regressionstabelle repliziert die Regressionen (2) und (4) aus Table 8 aus Babenko et al (2022). Standardfehler sind wieder geclustert nach Politiker. Die abhänigige Variable Committee assignment indicator gibt an, ob der BP Teil eines Kommittees ist oder nicht. Der Datensatz besteht dementsprechend nur aus BPs. Relevant industry indicator gibt an, ob das Kommittee zuständig für die Industrie ist, in der der BP zuvor tätig war. Seniority gibt die Anzahl an Amtszeit des Politikers an. Powerful committee indicator gibt an, ob es sich um eines der folgenden Kommittees handelt: House committees: appropriations, budget, commerce, rules, ways and means, Senate committees: appropriations, armed services, commerce, finance, foreign relations Die Ergebnisse legen nahe, dass sich die Wahrscheinlichkeit, das ein BP einem Kommittee beitritt, das Zuständigkeit über seine ehemalige Industrie hat, mehr als verdoppelt. ```{r Figure3, echo=FALSE} #Daten einlesen und bearbeiten Figure3 <- read_dta("./Dta-Dateien/Figure3_BusinessPoliticiansFromBoardex.dta")%>% select(c("CAND_ELECTION_YR","CAND_ID","businessPoliticianFlag"))%>% filter(businessPoliticianFlag==1)%>% group_by(CAND_ELECTION_YR)%>% summarize(N = n()) Figure3$CAND_ELECTION_YR <- as.numeric(Figure3$CAND_ELECTION_YR) colnames(Figure3)<- c("Election Cycle","Number of BoardEx executives running for office") Figure3 <- Figure3 %>% ggplot(aes(x=`Election Cycle`,y=`Number of BoardEx executives running for office`,color="red")) + geom_line()+ geom_point() + theme_classic()+ theme(legend.title = element_blank(), legend.position = "none", axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1 ))+ ggtitle("Likelihood of Business Politician Running for Office") Figure3 ``` Die Grafik repliziert Figure 3 aus Babenko et al (2022). Man sieht, dass der Antei von BP im BoardEx Datensatz bis 2000 schwankt und dann ansteigt.