Hier noch ein zweites Beispiel zur Vertiefung. Anders als im ersten Beispiel sind die Prädiktorvariablen diesmal dichotom. Die Analyse sollen Sie zunächst selbständig machen. Die Lösung laden wir dann später hoch.
In einer Studie wurde untersucht, ob das Mögen von Fisch und/oder Austern das Verlangen nach Qualleneis vorhersagt (wenn Sie mehr Hintergrundinformation über Qualleneis möchten: https://www.stern.de/panorama/wissen/mensch/eiscreme-aus-quallenproteinen-leck-mich-zum-leuchten-3652390.html).
Personen wurden danach befragt, ob sie Fisch mögen (0=nein, 1=ja), ob sie Austern mögen (0=nein, 1=ja), und wie viel sie bereit wären für ein leuchtendes Qualleneis zu bezahlen (pro Kugel in Dollar).
Die Forscher haben folgende Hypothesen aufgestellt:
Das Mögen von Fisch und das Mögen von Austern sind dichotome Variablen. Die Kriteriumsvariable Zahlungsbereitschaft ist eine kontinuierliche Variable.
Die Daten für dieses Beispiel finden Sie in der Datei “04b_JellyfishDaten.csv”.
Erweiterte Aufgaben zur Prüfungsvorbereitung:
Formulieren Sie hier die Hypothesen:
Statistische Hypothesen über die drei erfassten Prädiktoren: H1,1: beta1 > 0, H0,1: beta1 <= 0 H1,2: beta2 > 0, H0,2: beta3 <= 0
Daten einlesen:
EisDaten <- read.csv("JellyfishDaten.csv", sep=";")
Ab hier können Sie jetzt eigenständig weiterarbeiten. Orientieren Sie sich an dem R-Markdown-Script, das es für das Beispiel “Prüfungsleistung” bereits gibt.
R-Commander öffnen:
library(Rcmdr)
Wie immer beginnen wir mit einer grafischen Analyse der Daten. Dazu erstellen wir eine Streudiagramm-Matrix (Scatterplot-Matrix), in der die Zusammenhänge der drei Prädiktoren mit dem Kriterium in einer Abbildung zusammengefasst werden. Eine Streudiagramm-Matrix erlaubt es uns, die folgenden Dinge optisch zu prüfen:
Ziel: Streudiagramm-Matrix erstellen
Vorgehen: R-Commander –> Grafiken –> Streudiagramm Matrix –> All vier Variablen markieren –> Optionen: Kleinst-Quadrat-Linie auswählen –> ok.
Hier auch der entsprechende Code:
scatterplotMatrix(~Austern+Fisch+Qualleneis, regLine=TRUE, smooth=FALSE, diagonal=list(method="density"), data=EisDaten)
Da wir uns für den Zusammenhang zwischen Qualleneis und den anderen zwei Variablen interessieren, reicht es, wenn man in die dritte Zeile dieser Matrix schaut. Die Kleinstquadratlinien zeigen, dass es tatsächlich positive Zusammenhänge zu geben scheint. Frage: Was glauben Sie? durch welche Punkte verlaufen die beiden Regressionslinien in der unteren Zeile?
Als nächstes passen wir ein multiples Regressionsmodell an, um die Daten statistisch zu analysieren und um über die statistsichen Hypothesen zu entscheiden.
Ziel: Multiples Regressionsmodell anpassen und interpretieren
Vorgehen: R-Commander –> Modell anpassen –> Lineare Regression –> Abhängige Variable und Prädiktoren auswählen (beide markieren); man kann auch, wenn man möchte, den Namen des Modells spezifizieren. Wir belassen es bei “RegModel.1”. –> ok.
Hier auch der Code:
RegModel.1 <- lm(Qualleneis~Austern+Fisch, data=EisDaten)
summary(RegModel.1)
##
## Call:
## lm(formula = Qualleneis ~ Austern + Fisch, data = EisDaten)
##
## Residuals:
## Min 1Q Median 3Q Max
## -35.333 -10.215 -1.175 8.910 39.667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 26.175 2.277 11.494 < 2e-16 ***
## Austern 22.500 3.719 6.050 2.71e-08 ***
## Fisch 8.658 3.479 2.489 0.0145 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.4 on 97 degrees of freedom
## Multiple R-squared: 0.4595, Adjusted R-squared: 0.4483
## F-statistic: 41.23 on 2 and 97 DF, p-value: 1.099e-13
Warum sind Fisch und Austern hier als numerische Variablen definiert und nicht als Faktoren? Es handelt sich doch um kategoriale Prädiktoren!
Das liegt pragmatisch erstmal daran, dass das Regressions-Menü, das wir bisher im Commander verwendet haben, nur numerische Variablen als Input nimmt.
Die inhaltliche Erklärung ist folgende: Wenn wir kategoriale Prädiktoren im Modell haben, muss R sie an irgendeiner Stelle sowieso wieder in etwas Numerisches übersetzen, um damit rechnen zu können. Das Programm nimmt im Hintergrund eine sogenannte Dummy-Kodierung vor, es weist den Levels der Faktoren also Nullen und Einsen zu. Wenn wir das selbst machen (also den Levels Nullen und Einsen zuweisen und die Variable als numerisch belassen), nehmen wir R diesen Arbeitsschritt quasi ab. Das müssen wir aber nicht zwingend machen.
Zur Demonstration werden unten (über Datenmanagement, Variablen bearbeiten, konvertiere numerische Variablen in Faktoren; dann bei “Neuer Variablenname oder Präfix…” einen neuen Variablennamen angeben, z.B. “Austern_Faktor”) zwei neue Variablen erstellt, die die beiden Prädiktoren als Faktoren mit Labels beinhalten:
EisDaten <- within(EisDaten, {
Fisch_Faktor <- factor(Fisch, labels=c('ekelhaftig',
'mega'))
})
EisDaten <- within(EisDaten, {
Austern_Faktor <- factor(Austern, labels=c('ekelhaftig',
'mega'))
})
Anschließend wird der lm-Code von oben kopiert, die Prädiktoren manuell durch die neuen Variablen ergänzt und das Modell erneut erstellt (mit einem neuen Namen für das Modell, damit das alte nicht überschrieben wird):
RegModel.2 <- lm(Qualleneis~Austern_Faktor+Fisch_Faktor, data=EisDaten)
summary(RegModel.2)
##
## Call:
## lm(formula = Qualleneis ~ Austern_Faktor + Fisch_Faktor, data = EisDaten)
##
## Residuals:
## Min 1Q Median 3Q Max
## -35.333 -10.215 -1.175 8.910 39.667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 26.175 2.277 11.494 < 2e-16 ***
## Austern_Faktormega 22.500 3.719 6.050 2.71e-08 ***
## Fisch_Faktormega 8.658 3.479 2.489 0.0145 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.4 on 97 degrees of freedom
## Multiple R-squared: 0.4595, Adjusted R-squared: 0.4483
## F-statistic: 41.23 on 2 and 97 DF, p-value: 1.099e-13
Man bekommt genau denselben Output. Der Text neben den Prädiktoren zeigt an, wie man die Estimates interpretieren muss: Wer Austern “mega” statt “ekelhaftig” findet, ist laut Modell bereit, 22.5 Dollar mehr für Qualleneis zu zahlen. Wer Fisch “mega” statt “ekelhaftig” findet, zahlt 8.658 Dollar mehr.
Sowohl “Fischmögen” als auch “Austernmögen” sind signifikante positive Prädiktoren für den Betrag, den Leute bereit sind, für eine Kugel Qualleneis zu bezahlen (beide p < .05). Auch das Gesamtmodell verbessert die Vorhersage im Vgl. zum Nullmodell (p-Wert des F-Tests < .05). Adjusted R-squared zeigt, dass das Modell fast 45% der Unterschiede in der Kriteriumsvariable erklärt.
Wir haben eben angemerkt, dass die einzelnen Prädiktorwerte nicht direkt miteinander vergleichbar sind, weil jeder Prädiktor in seiner eigenen Einheit vorliegt. Dieses Problem kann man lösen (Sie ahnen es sicherlich schon), indem man die einzelnen Prädiktoren standardisiert. Das funktioniert leider nicht mit dem R-Commander. Wir brauchen dazu die “lm.beta()” Funktion aus dem “QuantPsych” Paket.
Ziel: Standardisierung der ermittelten Regressionskoeffizienten
Vorgehen: Via R-Code.
Achtung: Sie müssen das “QuantPsych” Paket ggf. installieren.
# install.packages("QuantPsyc", dependencies = TRUE) Sie müssen mit dieser Code-Zeile das Paket ggf. installieren
library(QuantPsyc) # lädt das Paket
lm.beta(RegModel.1) # Funktion zur Standardisierung der Regressionskoeffizienten. In Klammern muss einfach der Name des Regressionsmodell eingetragen werden. in unserem Fall ist das "RegModel.1".
## Austern Fisch
## 0.5343847 0.2198375
Man sieht, dass Austernmögen der bessere Prädiktor ist.
Zuletzt wollen wir noch Effektstärken berechnen. Zwei mögliche Effektstärken sind:
Cohen’s f² aus R-squared berechnen und anzeigen lassen kann man so:
Cohensf_Reg.Model1 <- 0.4595/(1-0.4595) # Generiert ein Objekt "Cohensf_Reg.Model1" dessen Inhalt das Ergebnis des Bruchs rechts neben dem Pfeil ist.
Cohensf_Reg.Model1 # Zeigt den Inhalt des Objekts an und somit das Ergebnis
## [1] 0.8501388
Wie hoch ist die Teststärke? Dazu benutzen wir das Programm G-Power, das Sie schon aus Quanti-I kennen.
Ziel: Teststärke für das Gesamtmodell mit G-Power berechnen
Vorgehen: G-Power öffnen (das Programm können Sie runterladen unter: https://www.psychologie.hhu.de/arbeitsgruppen/allgemeine-psychologie-und-arbeitspsychologie/gpower.html) –> F-Tests –> Linear multiple regression: Fixed model, R² deviation from zero –> dann Effekt-Size (0.8501388) eintragen, Total Sample Size angeben (100) und Anzahl der Prädiktoren eingeben (2).
Abbildung 2 zeigt einen Screenshot des Ergebnisses:
Die Teststärke beträgt (gerundet) 1.