invisible header

Dies ist das Dokument mit Lösungen

Klick hier, um die Musterlösungen auszublenden.

 

Zur Vorbereitung

Erster Schritt: 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)
ess <- read_dta("ESS8e02_2.dta")

Ein neues Übungsskript erstellen…

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

Installation und Aktivierung der Packages tidyverse

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

 

I. Daten bereinigen (rekodieren)

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

International Standard Klassifikation of Education, kurz: ES-ISCED ist eine Klassifizierung von Bildungsabschlüssen für den länderübergreifenden Vergleich von Bildungsniveaus. Variablen, die diese Klassifizierung abbilden, haben ordinales Skalenniveau.

2. Bei der Variable eisced gibt es eine Ausprägung, die als Missing verstanden werden könnte. Finde zuerst mit attributes() und summary() heraus, um welche Ausprägung es sich handelt und codiere diese anschliessend in das für R verständliche Missing-Format. Warum und in welchen analytischen Kontexten könnte diese Rekodierungsoperation wichtig sein?

attributes(ess$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(ess$eisced)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   4.000   4.109   5.000  55.000     129
quantile(ess$eisced, c(.10, .20, .80, .90), na.rm=TRUE)
## 10% 20% 80% 90% 
##   2   2   6   7
ess$eisced[ess$eisced == 55] <- NA
summary(ess$eisced)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   4.000   4.007   5.000   7.000     217
quantile(ess$eisced, c(.10, .20, .80, .90), na.rm=TRUE)
## 10% 20% 80% 90% 
##   2   2   6   7

Einige Befragte tragen den Wert ‘55’, der gemäss attributes() für ‘others’ steht. Personen in dieser Kategorie können keiner der ordinalen Klassifikationspunkte zugeordnet werden, daher ergibt es insb. mit Blick auf Übersichtsstatistiken und Quantilsberechnungen Sinn, diese Werte als ‘NA’ zu codieren. Praktisch verändern sich in diesem Fall durch die Korrektur allerdings weder der Median (als für diesen Variablentyp relevanter Mittelwert), noch weiteren Lagemasse.

3. Finde mit attributes(), look_for() oder dem Codebook heraus, um was für eine Variable es sich bei clmchng handelt und wie diese codiert ist.

attributes(ess$clmchng)
## $label
## [1] "Do you think world's climate is changing"
## 
## $format.stata
## [1] "%23.0g"
## 
## $class
## [1] "haven_labelled" "vctrs_vctr"     "double"        
## 
## $labels
##     Definitely changing       Probably changing   Probably not changing 
##                       1                       2                       3 
## Definitely not changing                 Refusal              Don't know 
##                       4                      NA                      NA 
##               No answer 
##                      NA
summary(ess$clmchng)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   1.000   1.000   1.523   2.000   4.000    1098

Die Variable clmchng misst, inwiefern Befragungspersonen glauben, dass sich das Klima verändert. Dabei gibt es die Ausprägungen ‘Definitely changing’ (1), ‘Probably changing’ (2), ‘Probably not changing’ (3) und ‘Definitely not changing’ (4).

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

Wenn wir zum Beispiel herausfinden möchten, wie viele Leute den Klimawandel in Frage stellen bzw. wie viele im Vergleich dazu diesen nicht bestreiten. In diesem Fall würden wir eine Variable bilden, welche die 4 Kategorien entsprechend ihrer Tendenzen zusammenfasst. Weitergehend könnte es Anwendungen geben, in denen radikale Leugner der Profilgruppe “Aluhut” vom Rest der Verteilung abgegrenzt werden sollen.

5. Generiere nun, basierend auf Aufgabe 4, eine dichotome Variable names clmchng_d, die definitive Leugner vom Rest abgrenzt - die also lediglich unterscheidet, ob es sich um einen kategorischen Leugner handelt oder nicht.

ess$clmchng_d[ess$clmchng == 1 |
                      ess$clmchng == 2 |
                      ess$clmchng == 3] <- 0
ess$clmchng_d[ess$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 und die Kategorie 4 als ‘1’, die nur die Klimaleugner beinhaltet.

 

II. Teildatensätze (selektieren und umbenennen)

6. Erstelle einen Teildatensatz, den du ‘soziooekon’ nennst. Dieser soll lediglich die zentralen sozioökonomischen und demografischen Variablen enthalten: Alter, Geschlecht, Land, Beruf, höchster Bildungsabschluss, höchster Bildungsabschluss der Eltern.

soziooekon <- select(ess, idno, 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. Wir haben die Extraktion mit dem Befehl select() umgesetzt, der für diese Operation standardmäßig von uns verwendet wird.

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")

 

III. Daten auswählen - Teilgruppenvergleich

8. Suche im ESS die Variable heraus, die
(a) sich auf das Land (bzw. das Ländersample) bezieht
(b) die emotionale Bindung der Befragten zu diesem Land misst
(c) mit dem Namen brncntr bezeichnet ist
Beschränke den Datensatz auf diese Variablen.

# Erstelle Codebook
library(labelled)
varlist <- look_for(ess)
# Inspiziere Variablen und Variablenauswahl
attributes(ess$cntry)
## $label
## [1] "Country"
## 
## $format.stata
## [1] "%2s"
attributes(ess$atchctr)
## $label
## [1] "How emotionally attached to [country]"
## 
## $format.stata
## [1] "%31.0g"
## 
## $class
## [1] "haven_labelled" "vctrs_vctr"     "double"        
## 
## $labels
## Not at all emotionally attached                               1 
##                               0                               1 
##                               2                               3 
##                               2                               3 
##                               4                               5 
##                               4                               5 
##                               6                               7 
##                               6                               7 
##                               8                               9 
##                               8                               9 
##       Very emotionally attached                         Refusal 
##                              10                              NA 
##                      Don't know                       No answer 
##                              NA                              NA
attributes(ess$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
ess <- select(ess, idno, cntry, atchctr, brncntr)

Die Variable cntry zeigt das Ländersample der befragten Person an: das Land in dem sie wohnt, das Land in dem sie interviewt wurde. brncntr zeigt an, ob eine Person in diesem Land geboren (oder zugezogen) ist. Die Variable atchctr gibt an, wie stark sich die Befragte mit diesem Land emotional verbunden fühlt. Die Werte gehen dabei von 0 (keine emotionalen Bindung) bis 10 (sehr starke emotionale Bindung). An dem Platzhalter “[country]” und dem damit verbundenen Verweis auf die Variable cntry wird jeweils deutlich, dass sich die Variablen nicht zwingend auf das Heimatland einer Person, sondern ihr Aufenthaltsland beziehen.

9. Generiere zwei separate Teildatensätze (‘ess_ch’ und ‘ess_de’), welche jeweils ausschliesslich Befragte aus der Schweiz und aus Deutschland enthalten.

table(ess$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(ess, cntry == "CH")
ess_de <- filter(ess, 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.

10. Generiere einen weiteren Teildatensatz (‘ess_scand’) mit Personen aus den skandinavischen Staaten Finnland, Schweden, Norwegen, Island.

ess_scand <- filter(ess, 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”. Der Verknüpfungsoperator | ist hier angezeigt, da eine Person nicht in allen vier Ländern, sondern in einem der vier beheimatet sein muss (entweder Finnland oder Norwegen oder Island oder Schweden) um zur Analysegruppe zu gehören.

11. 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
sd (ess_ch$atchctr, na.rm = TRUE)
## [1] 1.897375
mean(ess_de$atchctr, na.rm = TRUE)
## [1] 7.475053
sd (ess_de$atchctr, na.rm = TRUE)
## [1] 2.179125
mean(ess_scand$atchctr, na.rm = TRUE)
## [1] 8.237853
sd (ess_scand$atchctr, na.rm = TRUE)
## [1] 1.851267

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 an ihr Heimatland. Es fällt weiterhin auf, dass die Variation der heimatlichen Bindung in Deutschland substanziell grösser ist als in der Schweiz und in Skandinavien.

12. Erstelle einen Teildatensatz mit Befragten der Schweiz (Zusatzaufgabe: und/oder Deutschland bzw. Schweden). Vergleiche nun die emotionale Bindung der beiden Kategorien der Variable brncntr. Welche Gruppe hat eine stärkere emotionale Bindung an das Land - Personen, die seit Geburt im Land leben oder zugezogene? (Zusatzaufgabe: Unterscheidet sich diese Differenz zwischen Deutschland, der Schweiz und Schweden?)

# Beschränke die Daten auf die Schweiz
ess_ch <- filter(ess, cntry == "CH")

# Bilde zwei Analysegruppen: In der Schweiz geborene sowie Zugezogene
ess_bornincountry <- filter(ess_ch, brncntr == 1)
ess_notbornincountry <- filter(ess_ch, brncntr == 2)

# Mittelwertvergleich
mean(ess_bornincountry$atchctr, na.rm = TRUE)
## [1] 8.033575
mean(ess_notbornincountry$atchctr, na.rm =TRUE)
## [1] 7.492857
Unter den in der Schweiz Lebenden haben die in der Schweiz Geborenen eine höhere emotionale Bindung an die Schweiz als nicht in der Schweiz geborene.

 

logo.knit

Conforti, E., Siefart, F., De Min, N., Dürr, R., Moos, M., Senn, S., Strassmann-Rocha, D., Giesselmann, M. (2022): “R für das Soziologiestudium an der UZH”