invisible header

Dies ist das Dokument mit Lösungen

Klick hier, um die Musterlösungen auszublenden.

 

Zur Vorbereitung

ESS-Daten der Welle 8 (2016) im Stata-Format (.dta) einlesen. Bei Mac usern kann es zu einer Fehlermeldung kommen, dann einfach die Daten im SPSS-Format (.sav) einlesen

# Working directory setzen (z.B. "c:\daten")
setwd("mein_laufwerk/mein_datenverzeichnis")
# Daten einlesen
library(haven)
ess8 <- read_dta("ESS8e02_2.dta")

Ein neues Übungsskript erstellen.

# Statistik 1: R Tutorat
# Übungsskript zum Datenmanagement
# Datum: 26.10.2021
# AutorIn: XXX

Installation und Aktivierung der Packages tidyverse.

#install.packages("tidyverse")
library(tidyverse)

 

I. Daten bereinigen (löschen und filtern)

1. Suche im Datensatz die Variablen heraus, die sich auf die Nationalität und den Migrationshintergrund der Befragten beziehen. Verwende hierfür den look_for() Befehl aus dem labelled Package. Alternativ kannst du auch auf das Codebook zurückgreifen.

library(labelled)
## Warning: package 'labelled' was built under R version 3.6.3
varlist <- look_for(ess8)

attributes(ess8$cntry)
## $label
## [1] "Country"
## 
## $format.stata
## [1] "%2s"
attributes(ess8$brncntr)
## $label
## [1] "Born in country"
## 
## $format.stata
## [1] "%12.0g"
## 
## $class
## [1] "haven_labelled" "vctrs_vctr"     "double"        
## 
## $labels
##        Yes         No    Refusal Don't know  No answer 
##          1          2         NA         NA         NA

Die Variable cntry zeigt das Länderkürzel der befragten Person an, die Variable brncntr hat zwei Ausprägungen (1, 2) und zeigt an, ob die befragte Person im selben Land geboren ist (1), in dem sie jetzt lebt, oder nicht (2).

2. Generiere zwei separate Teildatensätze (“ess_ch” und “ess_de”), welche jeweils ausschliesslich Befragte aus der Schweiz bzw. aus Deutschland enthalten.

table(ess8$cntry)
## 
##   AT   BE   CH   CZ   DE   EE   ES   FI   FR   GB   HU   IE   IL   IS   IT   LT 
## 2010 1766 1525 2269 2852 2019 1958 1925 2070 1959 1614 2757 2557  880 2626 2122 
##   NL   NO   PL   PT   RU   SE   SI 
## 1681 1545 1694 1270 2430 1551 1307
ess_ch <- filter(ess8, cntry == "CH")
ess_de <- filter(ess8, cntry == "DE")

Mit dem Länderkürzel ‘CH’ können Befragte aus der Schweiz herausgefiltert werden, mit ‘DE’ Befragte aus Deutschland. “ess_ch” enthält 1525 Befragte, “ess_de” 2852 Befragte.

3. Generiere einen weiteren Teildatensatz (“ess_scand”), mit den Personen aus den skandinavischen Staaten Finnland, Schweden, Norwegen, Island.

ess_scand <- filter(ess8, cntry == "FI" |
                      cntry == "NO" |
                      cntry == "IS" | 
                      cntry == "SE")

Der Datensatz mit Befragten aus den vier genannten skandinavischen Ländern enthält 5901 Merkmalsträger. Der Operator | im Filterbefehl filter() steht für “oder”. Der Operator & steht für “und”. Damit können mehrere Bedingungen spezifiziert werden.

4. Vergleiche die durchschnittliche emotionale Bindung von Befragten aus Deutschland, der Schweiz und den skandinavischen Staaten. Was fällt auf?

mean(ess_ch$atchctr, na.rm = TRUE)
## [1] 7.884363
mean(ess_de$atchctr, na.rm = TRUE)
## [1] 7.475053
mean(ess_scand$atchctr, na.rm = TRUE)
## [1] 8.237853

Die Variable atchctr fragt nach der emotionalen Bindung der Befragungsperson zum Land, in dem sie wohnt. Der mean()Befehl ermittelt den Mittelwert dieser Bindung. Befragte aus der Schweiz haben eine durchschnittliche Bindung von 7.88, Befragte aus Deutschland 7.48, Befragte aus Skandinavien 8.24; somit haben letztere deutlich die durchschnittlich stärkste Bindung.

5. Lösche die in den Aufgaben 2. und 3. erstellten Teildatensätze aus dem Environment.

library(dplyr) 
remove(ess_ch, ess_de, ess_scand)

Mit dem Befehl remove() können Objekte aus dem Environment entfernt werden.

6. Erstelle mit dem select() Befehl einen Teildatensatz, den du “soziooekon” nennst. Dieser soll die sozioökonomischen und demografischen Angaben der Befragten enthalten: Alter, Geschlecht, Land, Beruf, höchster Bildungsabschluss, höchster Bildungsabschluss der Eltern.

soziooekon <- select(ess8, agea, gndr, cntry, isco08, eisced, eiscedm, eiscedf)

Der Teildatensatz “soziooekon” enthält nun 7 Variablen, die Anzahl Befragungsperson bleibt konstant wie beim ursprünglichen Datensatz. Er kann z.B. mit dem Befehl select() erstellt werden. Die folgenden Variablen erfassen die sozioökonomischen und demografischen Angaben: agea ist Alter, gndr ist Geschlecht, cntry ist Land, isco08 ist der Beruf bzw. die Berufsgruppe, eisced ist der höchste Bildungsabschluss der Befragungsperson, eiscedm ist der höchste Bildungsabschluss der Mutter, eiscedf ist der höchste Bildungsabschluss des Vaters.

7. Gib den Variablen im Datensatz “soziooekon” folgende neue Namen: agea –> neu: “age”; gndr –> neu: “gender”; cntry –> neu: “country”.

soziooekon <- rename(soziooekon, "age" = "agea","gender" = "gndr", "country" = "cntry")

8. Bei der Variable eisced gibt es eine Ausprägung, die als Missing verstanden werden könnte. Finde zuerst mit dem attributes()-Befehl heraus, um welche Ausprägung es sich handelt und verwandle diese anschliessend in ein Missing.

attributes(ess8$eisced)
## $label
## [1] "Highest level of education, ES - ISCED"
## 
## $format.stata
## [1] "%51.0g"
## 
## $class
## [1] "haven_labelled" "vctrs_vctr"     "double"        
## 
## $labels
##             Not possible to harmonise into ES-ISCED 
##                                                   0 
##              ES-ISCED I , less than lower secondary 
##                                                   1 
##                        ES-ISCED II, lower secondary 
##                                                   2 
##           ES-ISCED IIIb, lower tier upper secondary 
##                                                   3 
##           ES-ISCED IIIa, upper tier upper secondary 
##                                                   4 
##        ES-ISCED IV, advanced vocational, sub-degree 
##                                                   5 
##     ES-ISCED V1, lower tertiary education, BA level 
##                                                   6 
## ES-ISCED V2, higher tertiary education, >= MA level 
##                                                   7 
##                                               Other 
##                                                  55 
##                                             Refusal 
##                                                  NA 
##                                          Don't know 
##                                                  NA 
##                                           No answer 
##                                                  NA
summary(ess8$eisced)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   4.000   4.109   5.000  55.000     129
ess8$eisced[ess8$eisced == 55] <- NA
summary(ess8$eisced)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   4.000   4.007   5.000   7.000     217

Einige Befragte erhalten den Wert (55), der gemäss attributes()-Befehl für ‘others’ steht. Da die Kategorien in der EISCED-Klassifikation von 1-7 reichen, werden diese ebenfalls als Missings in den Datensatz kodiert. Dadurch verändern sich auch die Übersichtsstatistiken.

 

II. Daten bereinigen (rekodieren)

9. Recherchiere den Begriff ES-ISCED. Worum handelt es sich?

International Standard Classification of Education, kurz: ES-ISCED ist eine Variable zur Klassifizierung von Schulsystemen für den länderübergreifenden Vergleich von Bildungsniveaus.

10. Wann wäre es sinnvoll, die Variable clmchng (Einstellung zum Klimawandel) zu rekodieren?

Wenn man zum Beispiel herausfinden möchte, wie viele Leute den Klimawandel in Frage stellen bzw. wie viele im Vergleich dazu diesen nicht bestreiten. Die Einstellung zum Klimawandel wird in vier Kategorien erfasst: Kategorie (1) für Befragte, die sagen, das Klima ändere sich definitiv; Kategorie (2) für Befragte, die sagen, das Klima ändere sich wahrscheinlich; Kategorie (3) für Befragte, die sagen, das Klima ändere sich wahrscheinlich nicht und Kategorie (4) für Befragte, die sagen, das Klima ändere sich definitiv nicht. Letztere können als Personen betrachtet werden, die den Klimawandel leugnen.

11. Generiere nun, basierend auf Aufgabe 10, eine dichotome Variable names clmchng_d. Eine der beiden Ausprägungen soll dabei nur Personen beinhalten, die den Klimawandel komplett leugnen.

ess8$clmchng_d[ess8$clmchng == 1 |
                 ess8$clmchng == 2 |
                 ess8$clmchng == 3] <- 0
ess8$clmchng_d[ess8$clmchng == 4] <- 1
Eine neue Variable kann bspw. mit dem oben erstellten Code generiert werden. Dabei werden die Kategorien 1 bis 3 neu unter (0) zusammengefasst, die Kategorie 4 als (1), die nur KlimaleugnerInnen enthaltet.

 

III. Bonusfragen

12. Erstelle einen Teildatensatz mit Befragten eines Landes deiner Wahl. Vergleiche nun die emotionale Bindung der beiden Kategorien der Variable brncntr. Welche Gruppe hat eine stärkere emotionale Bindung?

ess_ru <- filter(ess8, cntry == "RU")

ess_bornincountry <- filter(ess_ru, brncntr == 1)
ess_notbornincountry <- filter(ess_ru, brncntr == 2)

mean(ess_bornincountry$atchctr, na.rm = TRUE)
## [1] 7.245467
mean(ess_notbornincountry$atchctr, na.rm =TRUE)
## [1] 6.879032

Mit dem Länderkürzel kann zuerst ein Land ausgewählt werden, für das Beispiel wurde hier ‘RU’ für Russland gewählt. Die Befragten aus Russland wurden mit dem Befehl filter() herausgefiltert.

In einem zweiten Schritt wurden die Befragten in zwei Gruppen unterteilt; eine Gruppe “ess_bornincountry” besteht aus Personen, die im Land geboren wurden (1), die andere “ess_notbornincountry” besteht aus Personen, die nicht im Land geboren wurden (2).

Im letzten Schritt wurde die durchschnittliche Bindung der beiden Gruppen mit dem mean() Befehl ermittelt. Die erste Gruppe hat einen Mittelwert von 7.25, die zweite einen Mittelwert von 6.88. Befragte, die in Russland geboren wurden, haben also eine stärkere Bindung zu Russland als Personen, die nicht in Russland geboren wurden.

13. Dem Datensatz fehlt die Variable nach dem Geburtsjahr. Erstelle diese mithilfe der Variable des Alters und füge sie in den Datensatz ein. Hinweis: Dies kann mithilfe der Grundrechenoperationen gemacht werden. Wie gross ist die Standardabweichung der Altersvariable?

ess8$dateofbirth <- 2016 - ess8$agea

sd(ess8$agea, na.rm = TRUE)
## [1] 18.61333

Eine neue Variable dateofbirth kann dem Datensatz nach dem $ hinzugefügt werden. Das Geburtsjahr kann aus dem Jahr der Befragung 2016 abzüglich des Alters einer Befragungsperson ermittelt werden. Die Standardabweichung, sprich die durchschnittliche Abweichung vom Mittelwert des Alters aller Befragten, beträgt 18.61 Jahre und kann mit dem Befehl sd() ermittelt werden.

14. Füge eine zusätzliche Variable in den Datensatz, welche das quadrierte Alter erfasst.

ess8$age_squared <- ess8$agea ^2

Die zusätzliche Variable kann mit derselben Befehlslogik wie die Variable in Aufgabe 13 erstellt werden. age_squared ist das Quadrat der Variable agea.

logo.knit

Conforti, E., Dürr, R., Siefart, F., Strassmann Rocha, D., Giesselmann, M. (2021): “Regressionsanalysen mit R”
Unter Mitarbeit von Norma De Min und Sebastian Senn