Willkommen bei Stats by Randolph. Hier geht es zur Hauptseite mit weiteren Informationen und Inhalten.

Autor:innen dieser Seite: An den Inhalten dieser Seite haben mitgearbeitet: Eva Röttger, Valentin Koob und Markus Janczyk. Der Inhalt dieser Seite wird in der Lehre in den Studiengängen Psychologie von der AG Psychologische Forschungsmethoden und Kognitive Psychologie an der Universität Bremen verwendet, steht aber allen Interessierten zur Verfügung. Rückmeldungen/Fehler/Vorschläge können gesendet werden an .

Inhalte dieser Seite: Diese Seite folgt dem Verlauf der Vorlesung Statistik 1. Anhand eines fiktiven Datensatzes werden in diesem Skript alle für die jeweilige statistische Problemstellung und Auswertung nötigen Befehle, Funktionen, Tests etc. vorgestellt.

Da einige der Teile von Statistik I eher konzeptueller Natur sind, wir aber die Nummerierung beibehalten wollten, sind einige Kapitel dieses Skriptes nur kurz und die eigentlichen Inhalte beginnen bspw. mit Teil 3.

Eine grundlegende Einführung in die Arbeit mit R und RStudio finden Sie hier.

Versionshistory:

  • v1.0: erste online-gestellte Version (27.10.2023)

1 Einführung: Deskriptive Statistik und Inferenzstatistik

In Teil 1 werden Grundlagen der Vorgehensweise erarbeitet. Unter anderem wird eingeführt, was der wichtige Unterschied zwischen Deskriptiver Statistik und Inferenzstatistik ist.

2 Mengen, Schreibweisen und das Summenzeichen

Im Zuge der weiteren Teile werden immer wieder mathematische Schreibweisen benötigt. Dazu werden in Teil 2 ein paar Aspekte der Mengenlehre, die (lineare) Transformation von Variablen sowie das Summenzeichen eingeführt. Die in diesem Zusammenhang benötigten Befehle und Funktionen wie sum() oder length() werden hier detaillierter vorgestellt. Sie summieren die Elemente z.B. eines Vektors auf oder liefern die Anzahl von dessen Elemente zurück:

X <- c(1,2,5,7,4)
sum(X)            # Summe
## [1] 19
length(X)         # Anzahl der Elemente
## [1] 5

3 Deskriptive Statistik 1: Häufigkeiten

Mit Teil 3 geht es nun mit statischen Verfahren der Deskriptiven Statistik los, insbesondere mit Häufigkeiten.

Haben Sie für eine Studie Daten erhoben, liegen diese in den meisten Fällen in digitalisierter Form vor, z.B. als .csv Datei. Zur Illustration der Auswertungsschritte und -verfahren verwenden wir hier den (fiktiven) Datensatz daten_statistik_I.csv, den Sie hier herunterladen können. Wie Sie Daten diverser anderer Formate in R laden, erfahren Sie hier.

Für diesen Datensatz haben 30 jüngere und ältere Versuchspersonen Daten auf verschiedenen Variablen geliefert (s.u.). In der Studie wurden verschiedene Fragestellungen zum Zusammenhang von Bewegung, kognitiven Funktionen (Gedächtnis) und Alter untersucht.

Bevor Sie die Daten einlesen, sollten Sie das aktuelle Arbeitsverzeichnis setzen, damit R weiß, wo sich die Daten befinden. Angenommen, die Daten befinden sich auf dem Laufwerk D im Ordner Studie, dann wird das Arbeitsverzeichnis wie folgt gesetzt:

setwd("D:/Studie")

Die Datei daten_statistik_I.csv können Sie dann folgendermaßen in ein DataFrame namens daten einlesen:

daten <- read.csv(file = "./daten_statistik_I.csv",
                  header = TRUE,      # 1. Zeile = Variablennamen
                  sep = ";")          # Trennzeichen
                                      # (mit deutschen Ländereinstellungen ein Semikolon)

Um einen ersten Überblick über die enthaltenen Variablen zu bekommen, können Sie sich die ersten Zeilen des DataFrames mit head() anzeigen lassen:

head(daten)

In der ersten Spalte befindet sich die Variable vp, die die Versuchspersonen-Nummer enthält. Es folgen die Variablen geschlecht und alter. Die nächste Variable, eigenschaft1, ist eine binäre Variable, die angibt, ob sich die jeweilige Person üblicherweise mehrmals in der Woche sportlich betätigt, oder nicht (ja/nein).

Die nächste Variable, score.in.test1, gibt an, welche Punktzahl die jeweilige Versuchsperson in Test 1 erreicht hat. In Test 1 musste jede Person an 10 Sportgeräten im Fitness Studio jeweils 10 Durchgänge (auf mittlerer Schwierigkeitsstufe) absolvieren. Für jedes erfolgreich absolvierte Gerät gab es einen Punkt (die maximale Punktzahl ist somit 10).

In Test 2 mussten alle Teilnehmer:innen der fiktiven Studie ein halbstündiges Nachrichtenvideo anschauen. Die Variable score.in.test2 enthält die Anzahl frei erinnerter Themen, die in dieser Sendung vorkamen.

Die Variable score.in.test3 enthält die Ergebnisse eines weiteren Gedächtnistests (Test 3), den alle Versuchspersonen gleichermaßen absolvierten. Für diesen Test mussten Wortlisten gelernt und im Anschluss Test-Wörter als “alt” vs. “neu” klassifiziert werden. Für jedes korrekt als “alt” klassifizierte Wort (für jeden Treffer) gab es einen Punkt.

Ein letzter Gedächtnistest (gleicher Art) wurde durchgeführt, nachdem alle Proband:innen ein neues Gedächtnistraining durchlaufen hatten, von dem angenommen wird, es bewirke eine starke Verbesserung der Gedächtnisleistung – insbesondere bei älteren Personen. Es befindet sich also eine weitere Variable, score.in.test4, im Datensatz, die die Werte der zweiten Durchführung des Gedächtnistests enthält, nachdem das neue Training absolviert wurde.

Wenn Sie nun die Stichprobe, z.B. für eine Abschlussarbeit, beschreiben wollen, interessiert v.a. die demographische Struktur dieser Stichprobe, d.h. die Altersstruktur sowie die Anzahl von Frauen, Männern und diversen Personen. Die Funktion table() hilft Ihnen hier für die (nominalskalierte) Variable geschlecht weiter:

table(daten$geschlecht)    # Absolute Häufigkeit von diversen Personen, Männern und Frauen
## 
##  d  m  w 
##  2  8 20
                           # Die absolute Häufigkeit der Personen verschiedenen Alters...
table(daten$alter)         # ...ist weniger gut geeignet zur Beschreibung der Stichprobe.
## 
## 18 19 20 21 22 23 24 25 50 51 52 53 54 55 56 57 60 61 62 
##  1  2  3  2  2  3  1  1  2  1  1  2  1  2  1  1  2  1  1

Sie können mehr über die Stichprobe erfahren, wenn Sie sich Maße anschauen, die (je nach Skalenniveau der jew. Variablen) geeignet sind, die Daten möglichst umfassend in einem Wert auszudrücken: Dies sind Maße der zentralen Tendenz (Lagemaße) und der Variabilität.

4 Deskriptive Statistik 2: Lagemaße und Variabilität

Teil 4 widmet sich entsprechend weiter der Deskriptiven Statistik und behandelt Maße der Zentralen Tendenz und der Variabilität.

4.1 Maße der zentralen Tendenz

Wenn es also zunächst darum geht, die Stichprobe zu beschreiben, ist für die (intervallskalierte) Variable alter als optimales Maß der zentralen Tendenz der arithmetische Mittelwert geeignet:

mean(daten$alter)          # Mittelwert des Alters der Versuchspersonen
## [1] 38.3

Sollte der Median (z.B. auch bei ordinalskalierten Variablen) von Interesse sein, dann kann dieser wie folgt bestimmt werden:

median(daten$alter)        # Median des Alters der Versuchspersonen
## [1] 37.5

Der Modus (optimal v.a. für nominalskalierte Variablen) wird folgendermaßen ermittelt:

alter.tab <- table(daten$alter)          # Häufigkeitstabelle
alter.tab
## 
## 18 19 20 21 22 23 24 25 50 51 52 53 54 55 56 57 60 61 62 
##  1  2  3  2  2  3  1  1  2  1  1  2  1  2  1  1  2  1  1
as.numeric(names(which.max(alter.tab)))  # Modus extrahieren
## [1] 20

Achtung, es gibt hier zwei Modi: 20 und 23. Auf die hier dargestellt Art und Weise wird allerdings nur der erste Modus gefunden.

4.2 Maße der Datenvariabilität

Zu einer umfassenden Beschreibung der Daten gehören auch Maße der Variabilität. Dazu gehören z.B. Minimum und Maximum sowie die Spannbreite.

minimum <- min(daten$alter)        # Minimum = 18 Jahre
minimum                            
## [1] 18
maximum <- max(daten$alter)        # Maximum = 62 Jahre
maximum                            
## [1] 62
spannbreite <- maximum - minimum   # Spannbreite = 44 Jahre
spannbreite                              
## [1] 44
range(daten$alter)                 # Minimum und Maximum mit range()
## [1] 18 62

Für (mindestens) ordinalskalierte Variablen können gleich mehrere Maße der zentralen Tendenz und der Vaiabilität mit der Funktion summary() berechnet werden…

summary(daten$alter)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   21.25   37.50   38.30   54.75   62.00

…sowie verschiedenste Quantile mit der Funktion quantile().

quantile(daten$alter)               # Quartile als Default
##    0%   25%   50%   75%  100% 
## 18.00 21.25 37.50 54.75 62.00
quantile(daten$alter,               # Oder z.B. Quintile
         probs = seq(from = 0, to = 1, by = 0.2),
         type = 6)
##   0%  20%  40%  60%  80% 100% 
## 18.0 20.2 23.0 51.6 55.8 62.0

Für intervallskalierte Variablen ist die Varianz das wichtigste Maß der Variabilität. Wie Sie Teil 4 des Skripts zur Vorlesung Statistik 1 entnehmen können, müssen Sie bei Verwendung der Funktion var() allerdings bedenken, dass diese die korrigierte Stichprobenvarianz berechnet (siehe auch Teil 10).

Seien \(x_1,\ldots ,x_n\) Datenpunkte. Dann wird die korrigierte Stichprobenvarianz mit der Funktion var() folgendermaßen berechnet: \[\hat{S}_X^2:=\frac{1}{n-1}\cdot \sum_{i=1}^n (x_i - M_X)^2 \]

Um die Korrektur quasi “rückgängig” zu machen, wird das Ergebnis der Funktion var() mit \(\frac{n-1}{n}\) multipliziert. Die Stichprobenvarianz der Variablen alter könnten Sie also folgendermaßen berechnen:

n <- length(daten$vp)   # Anzahl der Elemente der Stichprobe (30 Versuchspersonen)
n
## [1] 30
stpr.var <- var(daten$alter)*((n-1)/n)   # Stichprobenvarianz der Variablen 'alter'
stpr.var
## [1] 297.21

Die Standardabweichung der Variablen alter ist dann die Wurzel aus der Stichprobenvarianz:

sqrt(stpr.var)                           # Wurzel aus der Stichprobenvarianz
## [1] 17.23978

Wahlweise können Sie die Stichprobenvarianz sowie die entsprechende Standardabweichung einer Variablen auch “von Hand” in R unter Verwendung dieser Formel berechnen: \[S_X^2:=\frac{1}{n}\cdot \sum_{i=1}^n (x_i - M_X)^2 \]

var.alter <- (1/n) * sum((daten$alter-mean(daten$alter))^2)
var.alter
## [1] 297.21
sd.alter <- sqrt(var.alter)
sd.alter
## [1] 17.23978

Die Beschreibung Ihrer Stichprobe, z.B. in einer Abschlussarbeit, könnte also folgendermaßen lauten:

“30 Studierende und Mitarbeitende der Universität Bremen nahmen an diesem Experiment teil, 8 davon waren männlich, 2 divers. Das durchschnittliche Alter betrug 38,3 Jahre (SD = 17,24).”

5 Zusammenhänge

Teil 5 befasst sich mit Zusammenhängen (oder Beziehungen) zwischen Variablen, was bereits einen großen Teil psychologischer Forschung abdeckt. Grob ist damit gemeint, dass bestimmte Ausprägungen auf einer Variablen eher mit bestimmten Ausprägungen auf einer anderen Variablen einhergehen.

In unserem (fiktiven) Datensatz daten_statistik_I.csv haben 30 jüngere und ältere Versuchspersonen Daten auf verschiedenen Variablen geliefert, die nun auf Zusammenhänge untersucht werden sollen.

Eine Hypothese war z.B., dass es einen Zusammenhang von Altersgruppe (jünger/älter) und Eigenschaft 1 (vorhanden/nicht vorhanden) geben sollte. Eine weitere, dass mit zunehmendem Alter, der erzielte Wert in Test 1 niedriger ausfallen sollte. Diese wäre ein Beispiel für einen negativen Zusammenhang.

Wie diese vermuteten Zusammenhänge analysiert werden können, hängt vom Skalenniveau der beteiligten Variablen ab. Die Variable alter ist, wie bereits angemerkt, intervallskaliert. Die Variable eigenschaft1 ist dichotom (genauer: binär, d.h. mit 0 und 1 codiert) und somit nominalskaliert. Es gibt verschiedene Möglichkeiten, zwischen beiden einen Zusammenhang zu untersuchen.

  • Möglichkeit 1: Sie kodieren die Variable alter um in eine ebenfalls dichotome Variable altersgruppe (d.h. Personen unter 30 und über 30). Damit haben Sie (quasi) zwei nominalskalierte Variablen (genauer: eine nominal- und eine ordinalskalierte Variable) und können den \(\chi^2\)-Koeffizienten berechnen.

  • Möglichkeit 2: …, welche mehr in den Daten enthaltene Information berücksichtigt, folgt weiter unten ;)

5.1 Der \(\chi^2\)-Koeffizient bei nominalskalierten Daten:

Wie bereits angemerkt, muss, um den Zusammenhang zwischen Altersgruppe und Eigenschaft 1 zu untersuchen, zunächst aus der Variablen alter die neue Variable altersgruppe kodiert werden. Dazu weisen wir allen Versuchspersonen die jünger als oder genau 30 Jahre alt sind, den Wert 1 zu, den anderen Versuchspersonen entsprechend den Wert 2:

daten$altersgruppe[daten$alter <= 30] <- 1  # jüngere Versuchspersonen
daten$altersgruppe[daten$alter > 30] <- 2   # ältere Versuchspersonen

table(daten$altersgruppe)                   # Häufigkeit der Ausprägungen (jünger/älter)
## 
##  1  2 
## 15 15

Als nächstes sollte die Variable eigenschaft1, die eine String-Variable ist und mit “ja” und