1 Übersicht

In diesem dritten (letzten) Teil der Einführung wollen wir uns abschließend noch weitere Tests ansehen, die Sie schon aus Quanti I kennen:

  • Korrelationen (Korrelationskoeffizient bestimmen und Korrelation statistisch prüfen)
  • Wilcoxon-Rangsummen-Test
  • Chi-Quadrat-Test

1.1 Der heutige Datensatz

Wir benutzen zwei verschiedene Datensätze (“Uebung3_Korrelationen” und “Uebung3_Rang”), diese natürlich wieder als csv-Dateien in Stud-IP finden.

Der erste Datensatz “Uebung3_Korrelationen”: Enthält Daten einer fiktiven (Beobachtungs-) Untersuchung, in der man sich für den Zusammenhang zwischen der Dauer, die jemand damit verbringt, ein Instrument zu erlernen, und der gemessenen Intelligenz interessiert. Die csv-Datei besteht aus drei Spalten. Die erste Spalte listet die Teilnehmernummer der Personen (50 Personen). Die zweite Spalte (X) listet die Stunden, die jemand im Monat mit Instrumentlernen verbringt. Die letzte Spalte (Y) enthält die gemessenen IQ-Werte.

Der zweite Datensatz “Uebung3_Rang”: Enthält Daten eines fiktiven Experiments in dem untersucht wurde, ob sich der “Kater”, der nach dem Genuss von Alkohol vs. Ecstasy ensteht, unterschiedlich auf die Depressivität der Konsumenten auswirken. Dazu wurden zwei Versuchsgruppen (jeweils 10 Leute) zufällig ausgewählt. Die eine Gruppe bekam eine vorher definierte Dosis Alkohol; die andere eine vorher definierte Dosis Ecstasy. Die erste Spalte enthält die UV Kodierung und die zweite Spalte enthält die gemessenen Depressionswerte gemessen am Morgen nach dem Rauschzustand.

2 Daten einlesen

Beide Datensätze einlesen über “readr”

library(readr)
KorrelDaten_Uebung3 <- read_delim("Uebung3_Korrelationen.csv", ";", escape_double = FALSE, trim_ws = TRUE)
RangDaten_Uebung3 <-  read_delim("Uebung3_Rang.csv", ";", escape_double = FALSE, trim_ws = TRUE)
## 
## -- Column specification --------------------------------------------------------
## cols(
##   drug = col_character(),
##   sundayBDI = col_double()
## )

Ein Blick in die Korrelationsdaten:

head(KorrelDaten_Uebung3, 10) # dieser Code zeigt euch die ersten (deshalb "head") 10 Zeilen des Datensatzes.
## # A tibble: 10 x 3
##    TN_Nr X_Intelligenz Y_Instrumentlernen
##    <dbl>         <dbl>              <dbl>
##  1     1            75                 36
##  2     2           107                 23
##  3     3           114                 81
##  4     4           113                 65
##  5     5            97                 65
##  6     6            96                 40
##  7     7           117                 81
##  8     8           118                 71
##  9     9           126                 70
## 10    10           113                 40

Ein Blick in die Rangdaten:

RangDaten_Uebung3
## # A tibble: 20 x 2
##    drug    sundayBDI
##    <chr>       <dbl>
##  1 Ecstasy        15
##  2 Ecstasy        35
##  3 Ecstasy        16
##  4 Ecstasy        18
##  5 Ecstasy        19
##  6 Ecstasy        17
##  7 Ecstasy        27
##  8 Ecstasy        16
##  9 Ecstasy        13
## 10 Ecstasy        20
## 11 Alcohol        16
## 12 Alcohol        15
## 13 Alcohol        20
## 14 Alcohol        15
## 15 Alcohol        16
## 16 Alcohol        13
## 17 Alcohol        14
## 18 Alcohol        19
## 19 Alcohol        18
## 20 Alcohol        18

3 Teil 1: Datenanalyse Korrelationsdaten

Als erstes den R Commander öffnen und “KorrelDaten_Uebung3” als aktuelle Datenmatrix auswählen.

library(Rcmdr)
#library(RcmdrMisc)

3.1 Grafische Übersicht

Wie immer sollte man sich zunächst einen Überblick über die Daten verschaffen und dazu eine Abbildung erstellen. Überlegen Sie kurz, welche Abbildung hier angemessen ist. Was für Variablen haben wir? Auf welchen Skalenniveaus sind diese gemessen?

Sowohl Prädiktor (IQ-Wert) und Kriterium (Instrumentlernzeit) sind kontinuierliche Variablen die beide mindestens auf Intervallskalenniveau gemessen worden sind. Wie lässt sich deren Zusammenhang grafisch darstellen? Am besten mit einem Streudiagramm.

Ziel: Zusammenhang zwischen Instrumentlerndauer und IQ-Wert grafisch mit Hilfe eines Streudiagramms (“Scatterplot”) abbilden.

Vorgehen: R-Commander –> Grafiken –> Streudiagramm –> X-Variable = “X_Intelligenz” und Y-Variable = “Y_Instrumentlernen” –> Ok

Hier der entsprechende Code:

scatterplot(Y_Instrumentlernen~X_Intelligenz, regLine=FALSE, smooth=FALSE, boxplots=FALSE, data=KorrelDaten_Uebung3)

Gibt es einen Zusammenhang? Ist der Zusammenhang positiv oder negativ?

Mit Hilfe einer “Regressionslinie” (auch Kleinstequadratlinie genannt) lässt sich besser erkennen, ob es einen linearen Zusammenhang zwischen den Variablen gibt. Erstellen Sie die Grafik erneut mit R-Commander und schauen Sie unter “Optionen” nach, wo sich sich die gesuchte Einstellung verbirgt.

Hier der entsprechende Code:

scatterplot(Y_Instrumentlernen~X_Intelligenz, regLine=TRUE, smooth=FALSE, boxplots=FALSE, xlab="IQ-Werte", 
  ylab="Instrumentlerndauer (Stunden pro Monat)", main="Zusammenhang IQ und Instrumentlerndauer", cex=1.5, data=KorrelDaten_Uebung3)

# Wie Sie sehen können, ist der Code fast identisch mit dem Code davor. Die einzige Änderung ist, dass "regLine" von "FALSE" auf "TRUE" gesetzt wurde. "regLine" ist die Regressionslinie. "TRUE" heißt, dass sie nun angezeigt werden soll. 

# Was passiert, wenn Sie auch "smooth" auf "TRUE" setzen?

Mit Hilfe der Regressionslinie ist besser erkennbar, dass es einen positiven Zusammenhang zwischen IQ und Instrumentlerndauer gibt. Je höher der IQ, umso mehr Zeit verbringt eine Person damit, ein Instrument zu erlernen.

3.2 Zusammenhang numerisch beschreiben (Korrelationskoeffizient)

Wie lässt sich dieser grafisch diagnostizierte Zusammenhang nun numerisch beschreiben? Wie bekommt man den Korrelationskoeffizienten? Wie kann man prüfen, ob der gemessene Zusammenhang statistisch von null verschieden ist? Welcher Korrelationskoeffizient muss hier eigentlich berechnent werden?

Ziel: Korrelationskoeffizient berechnen und den Zusammenhang auf Signifikanz prüfen.

Vorgehen: R-Commander –> Statistik –> Deskriptive Statistik –> Test auf Signifikanz der Korrelation –> beide Variablen markieren –> Bei “Typ der Korrelation” “Perasons Produkt-Moment” auswählen. Als letztes noch die Richtung der Hypothese festlegen. Wir belassen es bei “zweiseitig”. –> ok.

Hier auch der Code:

with(KorrelDaten_Uebung3, cor.test(X_Intelligenz, Y_Instrumentlernen, alternative="two.sided", method="pearson"))
## 
##  Pearson's product-moment correlation
## 
## data:  X_Intelligenz and Y_Instrumentlernen
## t = 3.2706, df = 48, p-value = 0.001991
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1685717 0.6303378
## sample estimates:
##       cor 
## 0.4268891

Der Korrelationskoeffizient “r” wird als allerletztes unter “cor” gezeigt: r = 0.427.

Der Output beginnt mit dem Signifikanztest (in diesem Fall ein t-Test) der Korrelation. Dieser Test ist signifikant (p < .05). Darunter wird das 95% KI von r angezeigt (es reicht von 0.169 bis 0.630).

In einem Forschungsbericht könnte man das Ergebnis dieser Analyse wie folgt berichten:

“It was found that IQ-values and training intensity (measured in hours) were positively related: The higher the participants’ IQ-values, the longer they tended to practice with their instruments. The measured correlation coefficient was r = .427, 95% CI [0.167, 0.630], suggesting that the relation is moderate. Since the 95% CI excludes 0 as a plausible value of r, the measured correlation was statistically significant. However, the CI also shows that r was measured rather imprecisely in the present study and that values between r = .167 (small relationship) and r = .630 (strong relationship) are plausible values. Future studies with higher measurement precision (i.e., higher statistical power) need to be conducted to obtain a more precise estimation of the discovered relation.”

Hier wurde auf das KI verwiesen, um zu berichten, dass die H0 zurückgewiesen wurde. Man hätte alternativ auch das t-Test-Ergebnis bereichten können, z.B. so:

“…The measured correlation coefficient was r = .427, 95% CI [0.167, 0.630], suggesting that the relation is moderate. A t-Test confirmed that this relationship was significant, t(48) = 3.27, p < .01…”

3.2.1 r auf andere weise bestimmen

Den Korrelationskoeffizienten haben wir über die Korrelations-Test-Option in R-Commander bekommen. Eine andere Möglichkeit ist:

R-Commander –> Deskriptive Statistik –> Korrelationsmatrix –> beide Variablen auswählen und noch ein Häkchen bei “Paarweise p-Werte” setzen.

Hier der Code:

rcorr.adjust(KorrelDaten_Uebung3[,c("X_Intelligenz","Y_Instrumentlernen")], type="pearson", use="complete")
## 
##  Pearson correlations:
##                    X_Intelligenz Y_Instrumentlernen
## X_Intelligenz             1.0000             0.4269
## Y_Instrumentlernen        0.4269             1.0000
## 
##  Number of observations: 50 
## 
##  Pairwise two-sided p-values:
##                    X_Intelligenz Y_Instrumentlernen
## X_Intelligenz                    0.002             
## Y_Instrumentlernen 0.002                           
## 
##  Adjusted p-values (Holm's method)
##                    X_Intelligenz Y_Instrumentlernen
## X_Intelligenz                    0.002             
## Y_Instrumentlernen 0.002

Der erste Teil des Outputs zeigt eine 2 x 2 Tabelle in der alle Korrelationen gelistet sind. Die Einträge, bei denen “1.0000” steht, sind die Zellen, in denen jede Variable einfach mit sich selbst korreliert wurde. Das muss natürlich immer 1 sein. Der Zusammenhang zwischen Instrumentlernen und IQ ist natürlich wieder 0.427. Die Tabelle enthält die Informationen einfach mehrmals.

Darunter im Output kommt das Ergebnis des Signifikanztests. Auch hier ist die Information wieder doppelt.

Als letztes zeigt der Output noch die p-Werte in adjustierter Form (dazu später im Semester mehr).

Welche Möglichkeit, den Korrelationskoeffizienten zu bestimmen und zu testen, finden Sie besser? Warum?

4 Teil 2: Wilcoxon-Rangsummen-Test

Kommen wir nun zum zweiten Datensatz: Depressionswerte nach Alkohol- vs. Ecstasykonsum.

Wir nehmen an, dass die Depressionswerte lediglich auf Rangskalenniveau gemessen worden sind. Deshalb kann hier kein t-Test gerechnet werden und wir berechnen stattdessen den Wilcoxon-Rangsummen-Test. Schauen Sie in den Quanti-I-Unterlagen nach, wenn Sie nicht mehr wissen, was dabei eigentlich passiert.

Ziel: Rangdaten mittels Rangsummentest statistich analysieren.

Vorgehen: R-Commander –> als Datenmatrix jetzt “Rangdaten_Uebung3” auswählen –> Nichtparametrische Tests –> Wilcoxon-Test für unabhängige Stichproben. Die Variablen sollten bereits ausgewählt sein. Unter Optionen kann noch “Normal Approximation” ausgewählt werden wodurch der Test auf Basis der Normalverteilung berechnet wird. Diese Berechnung ist einfacher als eine Berechnung mit “Exakt”. Eigentlich sollte diese Option aber nur ausgewählt werden, wenn man einen sehr großen Datensatz hat. Ansonsten wäre “Exakt” eigentlich besser. Wir nehmen trotzdem jetzt “Normal Approximation”. –> ok.

Hier der Code:

with(RangDaten_Uebung3, tapply(sundayBDI, drug, median, na.rm=TRUE))
## Alcohol Ecstasy 
##    16.0    17.5
wilcox.test(sundayBDI ~ drug, alternative='two.sided', exact=FALSE, correct=FALSE, data=RangDaten_Uebung3)
## 
##  Wilcoxon rank sum test
## 
## data:  sundayBDI by drug
## W = 35.5, p-value = 0.2692
## alternative hypothesis: true location shift is not equal to 0

Der erste Teil des Outputs zeigt die Mediane der beiden beiden Gruppen. Beide sind sehr ähnlich.

Danach folgt der Outpout des Rangtests. “W” ist die Teststatistik. Der p-Wert zeigt, dass die H0 beibehalten werden muss (p = .27).

4.1 Grafik

Wie kann man eigentlich Rangdaten grafisch veranschaulichen? Mittelwerte sind bei Rangdaten nicht sinnvoll aber Mediane kann man sich anschauen. Eine nette Form der Abbildung sind sogenannte Box-Plots.

Ziel: Erstellen eines Box-Plots mit R-Commander

Vorgehen: R-Commander –> Grafiken –> Boxplot –> Grafik für die Gruppen –> Optionen können so belassen werden –> ok.

Hier der Code:

Boxplot(sundayBDI~drug, data=RangDaten_Uebung3, id=list(method="y"))
## Warning in Boxplot.default(mf[[response]], x, id = list(method = id.method, :
## NAs durch Umwandlung erzeugt

## [1] "2" "7"

Die horizontalen schwarzen Linien sind die Mediane der Werte. Die Boxen innerhalb derer diese Linien liegen sind der Interquartilsabstand. Die “Fehlerbalken” sind keine Fehlerbalken sondern Markierungen für Minimum und Maximum. Punkte mit Zahlen sind “statistsiche Ausreißer” (auch dazu später im Semester mehr). Das Programm hat Person Nr. 2 und Person Nr. 7 als solche statistsichen Ausreißer identifiziert.

5 Chi-Quadrat-Test rechnen

Als letztes noch ein Chi-Quadrat-Test mit dem Therapieabbruch-Beispiel, das sie schon aus Quanti I kennen. Eine genauere Erläuterung finden Sie auch in dem PDF zu dieser Einführungssitzung.

library(abind, pos=23)
.Table <- matrix(c(2,8,11,38,32,33), 2, 3, byrow=TRUE)
dimnames(.Table) <- list("Abbruch"=c("Ja", "Nein"), "Ausbildung"=c("PPT", "MPT", "P"))
.Table  # Counts
##        Ausbildung
## Abbruch PPT MPT  P
##    Ja     2   8 11
##    Nein  38  32 33
rowPercents(.Table) # Row Percentages
##        Ausbildung
## Abbruch  PPT  MPT    P Total Count
##    Ja    9.5 38.1 52.4   100    21
##    Nein 36.9 31.1 32.0   100   103
.Test <- chisq.test(.Table, correct=FALSE)
.Test
## 
##  Pearson's Chi-squared test
## 
## data:  .Table
## X-squared = 6.3519, df = 2, p-value = 0.04175
remove(.Test)
remove(.Table)

Interpretieren Sie das Ergebnis.