10  Auswerten: Grundlagen

10.1 Lernsteuerung

10.1.1 Lernziele

  • Sie können die typischen Schritte einer Datenanalyse (von Forschungsdaten der Psychologie) benennen.
  • Sie können grundlegende Forschungsdesigns auswerten (mit R).
  • Sie können Grenzen Ihrer Auswertungsmethodik nennen.

10.1.2 Position im Lernpfad

Sie befinden sich im Abschnitt “Auswertung” in Abbildung 1.2. Behalten Sie Ihren Fortschritt im Projektplan im Blick, s. Abbildung 1.3.

10.1.3 Benötigte R-Pakete und Daten

In diesem Kapitel benötigen Sie die folgenden R-Pakete und Datensätze.

data_url <- "https://raw.githubusercontent.com/sebastiansauer/modar/master/datasets/extra.csv"
extra <- data_read(data_url)  # aus `{easystats}`

Anstelle der Funktion data_read könnten Sie auch read_csv (Tidyverse) oder read.csv (Standard-R) verwenden.

10.2 Überblick zur Datenanalyse

Mühsam haben Sie Ihre Studie geplant, minutiös den Versuchsplan ausgeheckt, pedantisch die Messinstrumente bestimmt. Dann! Die Datenerhebung! Versuchspersonen, manche nervig, manche freundlich. Ist Forschung denn so anstrengend? Endlich! Geschafft - die Daten sind im Sack, sozusagen. Die Datenerhebung ist abgeschlossen. Was jetzt?

10.2.1 Wozu ist das gut?

Würden Sie einem Medikament trauen, von dem es heißt, das Forschungsteam hatten keinen Bock, Statistik ist zu stressig, aber sie hätten da so ein Gefühl, könnte schon was bringen, die Pille, immer rein damit. Was?! Sie zögern sich das Medikament einzuwerfen? Sie hätten es lieber genauer, sicherer, belastbarer? Es ginge schließlich um ihre Gesundheit?

Also gut, Sie haben es so gewollt: Gehen Sie geradeaus weiter zur Statistik.

10.2.2 Über 7 Brücken musst du gehen: Die Schritte der Datenanalyse

flowchart TD
  A[Einlesen und Aufbereiten] --> Z[Zusammenfassen]
  Z --> V[Visualisieren]
  V --> M[Modellieren]
  M --> I[Interpretieren]
  I --> K[Kritisieren]
  K --> Ü[Amüsieren]
  Ü --> A

In etwas mehr Detail sieht der Fortgang Ihrer Datenanalyse so aus:

  1. Einlesen und Aufbereiten: Nachdem Sie die Daten in R importiert haben, bereiten Sie sie auf. Das klingt läppisch, langweilig fast und nicht so cool wie Modellieren. Schon richtig. Fakt ist aber, dass dieser Teil der Analyse häufig ein Großteil der Zeit benötigt. Wahr ist: Das Daten aufbereiten ist enorm wichtig. Typische Beispiele für solche Tätigkeiten sind das Behandeln fehlender Werte, das Umformen von Tabellen und das Zähmen von Extremwerten

  2. Zusammenfassen: Nachdem Sie die in Ordnung gebracht haben, fassen Sie sie zusammen, um zentrale Trends zu versethen. Praktisch gesprochen berechnen Sie Maße der Lage, der Streuung und des Zusammenhangs.

  3. Visualisieren: Der Mensch ist halt ein Augentier. So ein schönes Diagramm macht einfach was her und besticht auch den strengsten Gutachter.

  4. Modellieren: Ah, hier kommt der Teil, in dem der Connaisseur seine Muskeln spielen lassen kann: Bayes-Inferenz, multiple Regression, Moderation, Mediation, Kausalanalyse… Ich weiß, Sie können Ihre Freude kaum noch zügeln, aber geduldigen Sie sich noch einen kleinen Augenblick.

  5. Interpretieren: So ein Modell bzw. die entsprechende Funktion in R spuckt einige Zahlen aus. Aber was sagt uns das jetzt? Das würden Sie auch gerne wissen? Prima! Finden wir es zusammen raus.

  6. Kritisieren: Jetzt müssen Sie stark sein. Keine Analyse ist perfekt. Keine Studie ist abschließend. Niemand hat den goldenen Gral gefunden. Okay, aber bisher haben Sie sich auch noch nicht an der Sache versucht! Jedenfalls bricht niemanden ein Zacken aus der Krone, wenn man aufzeigt, wo noch Forschungslücken sind, auch nach der eigenen Studie. Oder sogar, welche Schwächen die eigene Studie bzw. Analyse hat und was man beim nächsten Mal noch berücksichtigen könnte.

  7. Amüsieren: So, irgendwann ist auch gut. Jetzt belohnen Sie sich mal für die ganze harte Arbeit des Studierens.

10.3 Reproduzierbarkeit

Wichtig

Transparenz (vgl. Definition 2.4) ist ein zentrales oder das zentrale Gütemaße der Wissenschaft. Darum sollten Sie alles dran setzen, dass Ihre Studie bzw. die Analyse Ihrer Daten nachvollziehbar ist. \(\square\)

Wesentliche Faktoren für Reproduzierbarkeit sind:

  • Sie reichen Ihre Rohdaten ein (inkl. Codebook)
  • Sie reichen Ihr Analyseskript ein
  • Sie reichen Ihre Stimuli ein (sofern nicht öffentlich verfügbar)
  • Sie reichen Ihre Messinstrumente ein (sofern nicht öffentlich verfügbar)
  • Sie dokumentieren Ihr Vorgehen und reichen es ein

10.4 Codebook

Ein Teil der Dokumentation ist ein Codebook (auch Data-Dictionary genannt). Ein Codebook erläutert die Namen der Variablen in Ihrer (Roh-)Datentabelle, s. Abbildung 10.1.

Abbildung 10.1: Beispiel für ein Codebook

Quelle

10.5 Wir brauchen brave Daten

Wie muss eine Tabelle aufgebaut sein, damit man sie gut in R importieren kann, bzw. gut damit weiterarbeiten kann?

Im Überblick sollten Sie auf Folgendes achten:

  • Wenn Sie händisch Daten eintragen, hacken Sie das einfach in Excel sein.
  • CSV-Dateien bieten sich als Datenformat an.
  • Alternativ kann man auch Excel-Dateien in R importieren.
  • Es muss genau eine Kopfzeile geben.
  • Es darf keine Lücken geben (leere Zeilen oder Spalten oder Zellen).
  • Vermeiden Sie Umlaute und Leerzeichen in den Variablennamen.
  • Die Daten sollten dem Prinzip von “tidy data” folgen.
Tidy Data

Beachten Sie das Prinzip von “tidy data”:

  • In jeder Zeile steht eine Beobachtung.
  • In jeder Spalte steht eine Variable.
  • In jeder Zelle steht eine Wert. \(\square\)

Hier ist eine gute Quelle für weitere Erläuterung zu diesem Thema.

10.6 Checkliste zur Datenanalyse

Hier sehen Sie im Überblick die Schritte, die in vielen Fällen sinnvoll sind, um Daten auf einem guten Niveau auszuwerten.

  1. Vorverarbeitung
    1. Importieren
    2. Aufbereiten (Umkodieren, fehlende Wert versorgen, Transformieren, neue Spalten berechnen)
  2. Explorative Analyse
    1. Daten zusammenfassen (zentrale Tendenz, Streuung, Zusammenhang)
    2. Daten visualisieren
  3. Modellierung
    1. Modell berechnen
    2. Parameter berichten (Punkt- und Intervallschätzer)
    3. Parameter visualisieren
    4. Nullhypothesen testen (z. B. ROPE)
    5. Modellgüte berichten (z. B. R-Quadrat)

10.7 Rostlöser

Ihre R-Skills sind etwas eingerostet? Flutscht nicht so? Keine Sorge! Es gibt Rostlöser, der Sie schnell wieder in Schwung bringt. 🧴

10.7.1 Grundlagen der Statistik

Das Kursbuch Statistik1 beinhaltet einen Überblick über Datenaufbereitung und -visualierung sowie Modellierung mit dem linearen Modell, alles mit R.

10.7.2 Grundlagen der Inferenzstatistik

Das Kursbuch Start:Bayes! stellt einen Einstieg in die Inferenzstatistik mit der Bayes-Statistik bereit.

10.7.3 Wie man Umfragedaten auswertet

Hier finden Sie (m)eine Anleitung zur Auswertung von Umfragedaten.

10.8 Skriptbasierte vs. klickbasierte Software zur Datenanalyse

Man kann grob zwei Arten von Software-Programmen für Datenanalyse unterscheiden:

  1. Skriptbasierte: Man schreibt seine Befehle in einer Programmiersprache (z. B. R)
  2. Klickbasierte: Man klickt in einer Gui, um Befehle auszulösen (z. B. Jamovi)

Die gängigen Beispiele für skriptbasierte Software für Datenanalyse sind R und Python.

Einige empfehlenswerte(re) Programme für die klickbasierte Datenanalyse sind:

  1. Jamovi
  2. JASP
  3. Exploratory

Im Folgenden sind die Vorteile der oben genannten klickbasierten Software-Programmen den Vorteilen der oben genannten skriptbasierten Software-Programmen gegenüber gestellt

10.8.1 Vorteile klickbasierter Software

JASPJamoviExploratory

  • eher kostenlos (es gibt kostenpflichtige Premium-Versionen wie Jamovi Cloud)
  • aktuell
  • flachere Lernkurve
  • R-Code integriert

10.8.2 Vorteile skriptbasierter Software

RPython

  • kostenlos
  • aktueller
  • umfassend (klickbasierte Software kann nicht alles, was man braucht)
  • steilere Lernkurve

10.9 Daten zusammenfassen (deskriptive Analyse)

Damit es einfach bleibt, begrenzen wir uns auf ein paar Variablen.

Sagen wir, das sind die Variablen, die uns interessieren:

extra_corr_names <- 
extra %>% 
  select(n_facebook_friends, n_hangover, age, extra_single_item, n_party, extra_mean) %>% 
  names()

extra_corr_names
## [1] "n_facebook_friends" "n_hangover"         "age"               
## [4] "extra_single_item"  "n_party"            "extra_mean"

10.9.1 Deskriptive Ergebnisse für metrische Variablen

Sie können deskriptive Ergebnisse (Ihrer relevanten Variablen) für metrische Variablen z. B. so darstellen.

extra %>% 
  select(any_of(extra_corr_names)) %>% 
  describe_distribution() %>% 
  kable(digits = 2)
Variable Mean SD IQR Min Max Skewness Kurtosis n n_Missing
n_facebook_friends 532.61 3704.48 300.0 0.0 96055 25.67 662.76 671 155
n_hangover 9.47 30.72 9.0 0.0 738 17.54 399.53 800 26
age 25.50 5.75 6.0 18.0 54 1.81 4.39 813 13
extra_single_item 2.79 0.86 1.0 1.0 4 -0.27 -0.60 816 10
n_party 17.38 19.32 19.0 0.0 150 3.27 16.10 793 33
extra_mean 2.89 0.45 0.6 1.2 4 -0.43 -0.11 822 4

kable() macht aus dem drögen Output in der R-Konsole eine schicke HTML-Tabelle1, wenn man das Quarto-Dokument rendert.

Statt select(any_of(extra_corr_names)) könnten Sie natürlich auch schreiben select(n_facebook_friends, ...), wobei Sie für die drei Punkte alle Variablen von Interesse nennen würden.

Praktischerweise kann man describe_distribution auch für gruppierte Datensätze nutzen, um so gruppierte Verteilungsmaße zu bekommen:

extra |> 
  group_by(sex) |> 
  describe_distribution(extra_mean)

10.9.2 Deskriptive Ergebnisse für nominale Variablen

10.9.2.1 Univariate Häufigkeiten

Lassen wir uns die Häufigkeiten für sex und für smoker ausgeben, also für jede Variable separat (univariat).

Mit tidyverse kann man das in vertrauter Manier bewerkstelligen:

extra |> 
  count(sex)

Etwas schicker sieht es aus mit data_tabulate aus easystats:

extra |> 
  select(sex, smoker) |> 
  #drop_na() |>  ggf. ohne fehlende Werte
  data_tabulate()
## sex (sex) <character>
## # total N=826 valid N=815
## 
## Value |   N | Raw % | Valid % | Cumulative %
## ------+-----+-------+---------+-------------
## Frau  | 529 | 64.04 |   64.91 |        64.91
## Mann  | 286 | 34.62 |   35.09 |       100.00
## <NA>  |  11 |  1.33 |    <NA> |         <NA>
## 
## smoker (smoker) <character>
## # total N=826 valid N=12
## 
## Value                           |   N | Raw % | Valid % | Cumulative %
## --------------------------------+-----+-------+---------+-------------
## Gelegentlich (z. B. auf Partys) |   1 |  0.12 |    8.33 |         8.33
## Ja                              |   3 |  0.36 |   25.00 |        33.33
## Nein                            |   8 |  0.97 |   66.67 |       100.00
## <NA>                            | 814 | 98.55 |    <NA> |         <NA>

Wir können uns auch die bivariaten Häufigkeiten ausgeben lassen.

extra |> 
  drop_na(sex, smoker) |>  # fehlende Werte entfernt
  group_by(sex) |> 
  data_tabulate("smoker")
## smoker (smoker) <character>
## Grouped by sex (Frau)
## # total N=10 valid N=10
## 
## Value                           | N | Raw % | Valid % | Cumulative %
## --------------------------------+---+-------+---------+-------------
## Gelegentlich (z. B. auf Partys) | 1 | 10.00 |   10.00 |        10.00
## Ja                              | 1 | 10.00 |   10.00 |        20.00
## Nein                            | 8 | 80.00 |   80.00 |       100.00
## <NA>                            | 0 |  0.00 |    <NA> |         <NA>
## 
## smoker (smoker) <character>
## Grouped by sex (Mann)
## # total N=2 valid N=2
## 
## Value | N |  Raw % | Valid % | Cumulative %
## ------+---+--------+---------+-------------
## Ja    | 2 | 100.00 |  100.00 |       100.00
## <NA>  | 0 |   0.00 |    <NA> |         <NA>

10.9.3 Korrelationen darstellen

In einer Umfrage erhebt man häufig mehrere Variablen, ein Teil davon oft Konstrukte. Es bietet sich in einem ersten Schritt an, die Korrelationen dieser Variablen untereinander darzustellen.

10.9.3.1 Korrelationsmatrix

extra %>% 
  select(any_of(extra_corr_names)) %>%  
  correlation() %>% 
  summary() %>% 
  kable(digits = 2)
Parameter extra_mean n_party extra_single_item age n_hangover
n_facebook_friends 0.05 0.08 0.07 -0.03 0.13
n_hangover 0.06 0.34 -0.02 -0.06 NA
age -0.14 -0.21 -0.03 NA NA
extra_single_item 0.57 0.06 NA NA NA
n_party 0.25 NA NA NA NA

Sie möchten das Ergebnis als normalen R-Dataframe? Sie haben keine Lust auf dieses Rumgetue, sondern wollen das lieber als selber gerade ziehen. Also gut:

cor_results <- 
extra %>% 
  select(any_of(extra_corr_names)) %>%  
  correlation() %>% 
  summary()

cor_results

Man kann sich die Korrelationsmatrix auch in der Bayes-Geschmacksrichtung ausgeben lassen:

extra %>% 
  select(any_of(extra_corr_names)) %>%  
  correlation(bayesian = TRUE) %>% 
  summary() %>% 
  kable(digits = 2)
Parameter extra_mean n_party extra_single_item age n_hangover
n_facebook_friends 0.04 0.08 0.07 -0.04 0.13
n_hangover 0.05 0.33 -0.02 -0.06 NA
age -0.14 -0.21 -0.03 NA NA
extra_single_item 0.57 0.06 NA NA NA
n_party 0.25 NA NA NA NA

10.9.3.2 Korrelationsmatrizen visualisieren

Viele R-Pakete bieten sich an. Nehmen wir easystats.

extra %>% 
  select(any_of(extra_corr_names)) %>%  
  correlation() %>% 
  summary() %>% 
  plot() +
  labs(title = "Korrelationsmatrix, boa")

10.10 Aufgaben

Auf dem Datenwerk finden Sie eine Anzahl an Aufgaben zum Thema Datenanalyse. Schauen Sie sich mal die folgenden Tags an:

10.11 Fallstudien

Fallstudien zur explorativen Datenanalyse (EDA; d. h. deskriptive Statistik und Datenvisualisierung) finden Sie z. B. im Datenwerk:


  1. funktioniert auch in Word und PDF↩︎