--- title: Beispiel RMarkdown Dokument CO2 Steuer in Schweden output: html_document --- ```{r "setup", include=FALSE} # Wir laden schonmal alle benutzten Pakete # in diesem setup chunk damit im geknitteten Dokument # keine Meldungen beim laden angzeigt werden library(dplyr) library(ggplot2) library(lfe) library(stargazer) # Dieser Befehl erlaubt das Dokument zu knitten, # auch wenn ein Error im Code auftritt knitr::opts_chunk$set(error = TRUE) # Unterbindet stoerende Nachricht by dplyr summarise options(dplyr.summarise.inform = FALSE) ``` ## 1. Graphen ### Benzinpreisentwicklung Im folgenden soll ein Plot erstellt werden, der die Entwicklung der Benzinpreise in Schweden zwischen 1960 und 2005 visualisiert. Dazu müssen zunächst die Daten geladen werden. Andersson stellt dazu einen Datensatz "descr_Sweden.Rds" zur Verfügung. Um den Datensatz der Variable `dat` zuzuweisen, verwende ich den Befehl `readRDS`: ```{r} dat = readRDS("descr_Sweden.Rds") ``` Mit dem Befehl `head` lassen sich die ersten 6 Zeilen des Datensatzes anzeigen: ```{r} head(dat) ``` Der Datensatz enthält den realen Großhandelspreis für Benzin gegeben in schwedischen Kronen `p_real`, die einzelnen Steuersätze und eine Variable, die die Steuersätze zusammenfasst `total_tax`. Im folgenden soll visualisiert werden, wie sich der Verkaufspreis von Benzin, bestehend aus `p_real` und `total_tax` zwischen 1960 und 2005 entwickelt hat. Zunächst muss dazu eine neue Spalte `pr_real` erstellt werden, die die Werte für `p_real`und `total_tax` addiert: ```{r} #Laden des Pakets dplyr library(dplyr) #Benutzen einer dplyr Kette mit dem Pipe Operator %>% #Speichern des veränderten Datensatzes in dat_new dat_new = dat%>% # Benutzen des mutate() Befehls um die Variable pr_real aus # der Summe von p_real und total_tax zu erstellen mutate(pr_real = c(p_real+total_tax)) ``` Für mehr Übersicht werden nun nur die Variablen ausgewählt, die in diesem Rmarkdown File verwendet werden: ```{r} #mit select können Variablen ausgewählt werden. Hier nutzen wir aus dem Datensatz dat_new die Variablen year, p_real, total_tax, pr_real und CO2_Sweden und speichern das Ergebnis erneut in dat_new: dat_new = select(dat_new, year, p_real, total_tax, pr_real, CO2_Sweden) #erste 6 Zeilen anzeigen: head(dat_new) ``` Dieser Output entspricht der Grafik "Bearbeiteter Datensatz descr_Sweden.Rds" der Präsentation. Um die Entwicklung des Verkaufspreises für Benzin zu plotten, werden die Variablen `year` und `pr_real` benötigt. Dazu benutze ich das Paket `ggplot2`: Der X-Achse sollen die Jahre, der Y-Achse die Benzinpreise zugeordnet werden. Außerdem soll eine vertikale Linie für das Jahr 1990 erscheinen, da hier die CO2-Steuer eingeführt wurde: ```{r} # Paket ggplot2 laden library(ggplot2) # Datensatz (data = dat_new) und Achsen zuordnen aes(x = year, y = pw_real)) ggplot(data = dat_new, aes(x=year, y = pr_real)) + # Linie für die geplotteten Daten in der Farbe "cyan" hinzufügen geom_line(colour = "cyan") + # gestrichelte vertikale Linie für das Jahr 1990 hinzufügen geom_vline(xintercept = 1990, linetype ="dotted") + # Achsenbeschriftung für die y-Achse hinzufügen labs(y="Retail Gasoline Price (SEK/liter)") ``` Der Plot entspricht der Grafik "Benzinpreis gesamt 1960-2005" der Präsentation. ### Emissionen Transportsektor In einem weiteren Plot soll die Entwicklung der CO2 Emissionen dargestellt werden. Dazu dient erneut der Datensatz `descr_Sweden.Rds"`, welcher in der Variable `dat` gespeichert ist. Geplottet werden sollen die Jahre auf der X-Achse und die pro Kopf CO2 Emissionen aus dem Transport `CO2_Sweden`auf der Y-Achse: ```{r} # Datensatz und Achsen zuordnen: ggplot(data = dat_new, aes(x=year, y = CO2_Sweden))+ # Linie für die geplotteten Daten in der Farbe "green4" hinzufügen geom_line(colour = "green4")+ # gestrichelte vertikale Linie für 1990 hinzufügen geom_vline(xintercept = 1990, linetype = "dotted")+ # Achsenbeschriftung für die y-Achse hinzufügen labs(y = "Per capita CO2 Emissions from transport (t CO2) ") ``` Der Plot entspricht der Grafik "Pro Kopf CO2 Emissionen aus dem Transport" der Präsentation. ## 2. Eigene Regression Andersson nutzt den Differenz von Differenzen Schätzer, um zu zeigen, ob die Einführung der CO2-Steuer in Schweden Auswirkungen auf die CO2 Emissionen im Transportsektor hatte. Für die Replikation der Ergebnisse ist ein weiterer Datensatz`carbontax_data.dta` nötig. In ihm sind Emissionswerte für Schweden und 15 OECD Länder enthalten. Der Datensatz soll zunächst in die Variable `CO2_dat` geladen und mit `head()` angezeigt werden. ```{r} # Nutze die Funktion import im Paket rio um die Daten im dta Format # zu lesen. # Dies ist eine sehr flexible Funktion, die es schafft die meisten # Datenformate automatisch einzulesen. library(rio) CO2_dat = import("carbontax_data.dta") # zeigen von head head(CO2_dat) ``` Für die Differenz von Differenzen Regression müssen zunächst dummy Variablen für das Land, in welchem die Intervention (Steuereinführung) stattgefunden hat und den Zeitraum (Vor Intervention und nach Intervention) definiert werden: ```{r} # Erstellen einer Dummy Variable `treated` für das Land mit der Intervention Schweden mit dem Befehl ifelse(). Daten für Schweden erhalten den Wert 1, alle anderen Länder den Wert 0 CO2_dat$treated = ifelse(CO2_dat$country == "Sweden", 1, 0) #Erstellen einer weiteren Dummy Variable `post`, die den Jahren vor 1990 den Wert 0 und ab 1990 den Wert 1 zuweist CO2_dat$post = ifelse(CO2_dat$year >=1990, 1,0) #Erstellen eines Interaktionsterms zwischen `post` und `treated` CO2_dat$Sweden_post = CO2_dat$post * CO2_dat$treated ``` Mit dem `lm()` Befehl können nun die CO2 Emissionen aus dem Transport auf die Dummys und den Interaktionsterm regressiert werden: ```{r} # Schätzung eines linearen Modells mit lm(), Speichern in `did` did = lm(CO2_transport_capita ~ treated + post + Sweden_post, data = CO2_dat) # Anzeigen der Regressionsergebnisse mit summary() summary(did) ``` Andersson benutzt nach Ländern geclusterte Standardfehler. Um dies zu replizieren, kann der Befehl `felm()` aus dem Paket `lfe` benutzt werden: ```{r} #Ladens des Pakets lfe library(lfe) # DID estimation clustered by country did_clustered = felm(CO2_transport_capita ~ treated + post + Sweden_post |0|0| country, data = CO2_dat ) # Anzeigen der Regressionsergebnisse mit summary() summary(did_clustered) ``` Um die Ergebnisse beider Regressionen gegenüberzustellen, eignet sich der Befehl `stargazer()` aus dem `stargazer()` Paket: ```{r results="asis"} # stargazer Paket laden library(stargazer) # definieren der beiden Regressionsmodelle, zuweisen des Darstellungstyps html stargazer(did, did_clustered, type = "html", # Zuweisen von Spaltennamen colums.labels = c("DID", "DID clustered") ) ``` Die Tabelle entspricht der Grafik "Ergebnisse DID-Schätzung" der Präsentation.