Installieren/Laden Sie die hier benötigten Pakete (Tipp: Nach der Installation eines Pakets mit install.packages() kommentieren Sie diese Zeile am besten aus, da sonst bei jedem Rendering Durchlauf das jeweilige Paket neu installiert wird)
Kopieren Sie die lrscale mit der subjektiven Positionierung im politischen Links-Rechts-Spektrum in eine neue Variable lrscale_r und labeln Sie diese neue Variable mittels labelled::set_variable_labels() mit Positionierung im Links-Rechts-Spektrum und die beiden extremen Ausprägungen (Pole) 0 und 10 mittels labelled::set_value_labels() mit Links und Rechts. Prüfen Sie das Ergebnis mit einer Häufigkeitsauszählung mit sjmisc::frq() mit der ursprünglichen und der neu erzeugten Variable.
Rekodieren Sie die Altersvariable agea in eine neue Variable agea_r mit den Alterskategorien bis 29 J, 30 bis 49 J, 50 bis 69 J, ab 70 J. Labeln Sie die neue Variable in der Pipe auch gleich mittels labelled::set_variable_labels() (“Alter (kat.)”) und die Ausprägungen mittels set_value_labels() entsprechend der obigen Alterskategorien (“bis 29 J”, etc.). Um zu überprüfen, ob die Rekodierung korrekt funktioniert hat, erstellen Sie bitte eine Häufigkeitsauszählung beider Variablen (mit sjmisc::frq()) und kreuztabulieren Sie die neue mit der ursprünglichen Variable - am besten mit der ursprünglichen Variable in der Zeile und der neuen Variable in der Spalte (mit gtsummary::tbl_cross()). So erkennen wir schnell, ob z.B. Ausprägungen nicht berücksichtigt wurden etc.
Rekodieren Sie die Variable mit der zuletzt (bei der letzten bundesweiten Wahl) gewählten Partei (prtvtcat) in eine neue Variable prtvtcat_r so, dass die Codes für fehlende Werte (66, 77, 88, 99) auf NA gesetzt werden, alle Parteien unter 1% Stimmenanteil der Kategorie Other hinzugefügt werden, und sonst alle Parteien den Code behalten (Anm.: Beurteilen Sie dies anhand der Häufigkeitsauszählung und rekodieren Sie entsprechend). Labeln Sie die neue Variable Gewählte Partei und benennen Sie die die Kategorie “Other” mithilfe von labelled::add_value_labels() (s. https://cran.r-project.org/web/packages/labelled/vignettes/intro_labelled.html) in “Andere” um. Prüfen Sie wiederum mittels Häufigkeitstabelle und Kreuztabelle, ob die Rekodierung geklappt hat.
2.7 Löschen der nicht benötigten Labels und Umwandlung zu einer Faktorvariable
Ihnen ist beim vorigen Punkt vielleicht aufgefallen, dass a) bei der Häufigkeitsauszählung mit sjmisc::frq() die Labels trotz der Umkodierung der Codes für fehlende Werte noch immer sichtbar waren und dass b) die Kreuztabelle (mit gtsummary::tbl_cross()) keine Labels, sondern nur die Zahlenwerte anzeigt. Der Grund für a) ist, dass die Labels nicht verschwinden, wenn die Beobachtungen in eine andere Kategorie codiert werden, sondern auch wenn diese unbesetzt sind, weiter bestehen – wir sollten die Labels noch löschen, damit nicht der Eindruck erweckt wird, dass die Fallzahlen in diesen Kategorien tatsächlich 0 sind. Der Grund für b) ist, dass gtsummary::tbl_cross() (und viele andere Funktionen) die numerischen gelabelten Variablen als numerische Variablen behandeln (also als Variablen, mit denen gerechnet werden kann und bei denen Berechnungen des Mittelwerts, der Standardaweichung etc. Sinn machen), und nicht eine kategoriale Variable – wir sollten die gelabelten Variablen, die wir als kategoriale Variablen betrachten in Faktorvariablen (factor ist in R der Datentyp für kategoriale Variablen, s. https://r4ds.hadley.nz/factors.html) umwandeln.
Erzeugen Sie eine Übersichtstabelle der hier verwendeten Variablen agea_r, lrscale_r, prtvtcat_r mit gtsummary::tbl_summary(). Beachten Sie die erscheinende Anmerkung (ℹ Column(s) lrscale and prtvtcat_r are class “haven_labelled”.) und fügen Sie in die Pipe noch die Funktion labelled::to_factor() ein, die die gelabelten numerischen Variablen in Faktorvariablen umwandelt.
Erzeugen Sie mit {ggplot} folgende Grafik mit geom_boxplot(). Stellen Sie lrscale_r auf der x-Achse und prtvtcat_r auf der y-Achse dar und verwenden Sie zur Darstellung geom_boxplot()
Code
ess %>%ggplot(aes(x = lrscale_r, y = prtvtcat_r)) +geom_boxplot()
4.2 Box-Plot 2
Grafiken mit ggplot2 lassen sich schichtweise aufbauen: Ersetzen Sie den Layer geom_boxplot() mit geom_violin() und setzen Sie einen Layer mit geom_boxplot(width = 0.05) darüber (Anm. width legt fest, dass der Boxplot nur sehr schmal (1/20 der maximalen Breite) dargestellt werden soll), sodass Sie folgenden Plot erhalten:
Code
ess %>%ggplot(aes(x = lrscale_r, y = prtvtcat_r)) +geom_violin() +geom_boxplot(width =0.05)
4.3 Interpretation von bestehenden Code mittels
Wir können diesen Plot noch weiter bearbeiten. Bitte gehen Sie die folgenden Zeilen durch, finden Sie heraus, was dort geschieht und kommentieren Sie ganz kurz.
Uns interessiert, ob die Selbsteinordnung innerhalb der Parteien mit dem Alter variiert, also ob sich die Links-Rechts-Einordnung unter den SPÖ Wähler:innen zwischen den Altersgruppen unterscheidet. Mit {ggplot2} können wir sehr einfach sog. “small multiples” erzeugen, also den selben Plot für unterschiedliche Gruppen (s. https://ggplot2-book.org/facet.html). Bitte kopieren Sie den Code für den vorherigen Plot und fügen Sie eine Zeile mit facet_wrap() hinzu, mit der Sie die Grafik nach Altersgruppe facettieren, sodass Sie folgenden Plot erhalten:
Bitte speichern Sie die beiden letzten Grafiken mit ggsave() ab, als “selbsteinordnung_lr_01.png” bzw. “selbsteinordnung_lr_02.png”, beide im A4 Querformat (also Breite = 297, Höhe = 210mm), mit einer Auflösung von 300dpi (dots per inch) und weißem Hintergrund (Tipp: Option bg = …). Öffnen Sie die Dateien und prüfen Sie, ob die Speicherung korrekt funktioniert hat.
Abschließend berechnen wir noch ein lineares Modelle mit der Links-Rechts-Einstufung als abhängiger Variable und der Partei und dem Alter als erklärender Variable, also einen Mittelwertsvergleich zwischen den Selbsteinstufungen nach Partei unter Kontrolle des Alterseffekts. Verwenden Sie dazu die Funktion lm() und geben Sie das Modell als Formel ein (s.a. https://r4ds.had.co.nz/model-basics.html). Speichern Sie das Modell als Objekt mod1 ab und erzeugen Sie mit summary() eine Modellzusammenfassung:
Code
mod1 <-lm(lrscale_r ~ agea_r + prtvtcat_r, data = ess)mod1summary(mod1)
5.2 Tabellarische und grafische Darstellung des Models
In R stehen viele unterschiedliche Funktionen zur Verfügung, mit denen Modelle tabellarisch und grafisch dargestellt werden können, z.B. sjPlot::tab_model() und sjPlot::plot_model(), sowie gtsummary::tbl_regression(). Erzeugen Sie auf diese Weise folgende zwei übersichtliche Koeffiziententabelle mit sjPlot::tab_model() und gtsummary::tbl_regression():
Erzeugen Sie nun abschließend einen Bericht in Form einer html-Seite. Verwende Sie dazu folgende YAML Optionen (s.a. https://quarto.org/docs/output-formats/html-basics.html) und kommentieren Sie hier für jede Zeile (mit # …), was die jeweilige Option bewirkt.