So führen sie eine ancova in r durch
Dieses Tutorial bietet ein Beispiel für die Durchführung einer ANCOVA in R.
Beispiel: ANCOVA in R
Wir führen eine ANCOVA durch, um anhand der folgenden Variablen zu testen, ob die Lerntechnik einen Einfluss auf die Prüfungsergebnisse hat:
- Technische Studie : Die unabhängige Variable, die wir analysieren möchten
- Aktuelle Schülernote : Die Kovariate, die wir berücksichtigen möchten
- Bewertungsergebnis : Die Antwortvariablen, die wir analysieren möchten
Der folgende Datensatz enthält Informationen zu 90 Studenten, die zufällig in drei Gruppen zu je 30 Personen aufgeteilt wurden.
Der Datensatz zeigt die Lerntechnik, die jeder Schüler verwendet hat (A, B oder C) , seine aktuelle Note in der Klasse, als er mit der Anwendung der Lerntechnik begonnen hat, und die Note, die er bei der Prüfung erhalten hat, nachdem er die Lerntechnik einen Monat lang zur Vorbereitung angewendet hat für die Prüfung. Prüfung:
#make this example reproducible set.seed(10) #create dataset data <- data.frame(technique = rep(c("A", "B", "C"), each = 30), current_grade = runif(90, 65, 95), exam = c(runif(30, 80, 95), runif(30, 70, 95), runif(30, 70, 90))) #view first six lines of dataset head(data) # technical current_grade exam #1 A 80.22435 87.32759 #2 A 74.20306 90.67114 #3 A 77.80723 88.87902 #4 A 85.79306 87.75735 #5 A 67.55408 85.72442 #6 A 71.76310 92.52167
Schritt 1: Erkunden Sie die Daten
Bevor wir das ANCOVA-Modell anpassen, müssen wir zunächst die Daten untersuchen, um sie besser zu verstehen und sicherzustellen, dass es keine extremen Ausreißer gibt, die die Ergebnisse verzerren könnten.
Zunächst können wir eine Zusammenfassung jeder Variablen im Datensatz anzeigen:
summary(data) # technical current_grade exam #A:30 Min. :65.43 Min. :71.17 # B:30 1st Qu.:71.79 1st Qu.:77.27 # C:30 Median:77.84 Median:84.69 # Mean:78.15 Mean:83.38 # 3rd Qu.:83.65 3rd Qu.:89.22 # Max. :93.84 Max. :94.76
Wir können sehen, dass jeder Studientechnikwert ( A, B und C) 30 Mal in den Daten vorkommt.
Wir können auch sehen, wie die aktuellen Ergebnisse der Studierenden zu Beginn der Studie verteilt waren. Die Mindestpunktzahl in der Klasse lag bei 65,43, die Höchstpunktzahl bei 93,84 und der Durchschnitt bei 78,15.
Ebenso können wir sehen, dass die in der Prüfung erzielte Mindestpunktzahl 71,17 betrug, die Höchstpunktzahl 94,76 und der Durchschnitt 83,38 betrug.
Dann können wir das dplyr- Paket verwenden, um ganz einfach den Mittelwert und die Standardabweichung der aktuellen Noten und Prüfungsergebnisse für jede Lerntechnik zu ermitteln:
#load dplyr library(dplyr) data %>% group_by (technical) %>% summarize (mean_grade = mean(current_grade), sd_grade = sd(current_grade), mean_exam = mean(exam), sd_exam = sd(exam)) # A tibble: 3 x 5 # technique mean_grade sd_grade mean_exam sd_exam #1 A 79.0 7.00 88.5 3.88 #2 B 78.5 8.33 81.8 7.62 #3 C 76.9 8.24 79.9 5.71
Wir können sehen, dass der Mittelwert und die Standardabweichungen der aktuellen Note der Schüler, die jede Lerntechnik anwenden, ungefähr ähnlich sind.
Wir können auch sehen, dass die durchschnittliche Prüfungspunktzahl für Studierende, die Lerntechnik A verwendet haben, im Vergleich zu den Techniken B und C deutlich höher ist.
Wir können die Verteilung der Prüfungsergebnisse basierend auf der Lerntechnik auch mithilfe von Boxplots visualisieren:
boxplot(exam ~ technique, data = data, main = "Exam Score by Studying Technique", xlab = "Studying Technique", ylab = "Exam Score", col = "steelblue", border = "black" )
Ebenso können wir Boxplots verwenden, um die Verteilung der aktuellen Noten basierend auf der Lerntechnik zu visualisieren:
boxplot(current_grade ~ technical, data = data, main = "Current Grade by Studying Technique", xlab = "Studying Technique", ylab = "Current Grade", col = "steelblue", border = "black" )
Schritt 2: Modellannahmen prüfen
Sobald wir einige grundlegende Datenuntersuchungen durchgeführt haben und mit den Daten vertraut sind, müssen wir überprüfen, ob die folgenden Annahmen für ANCOVA erfüllt sind:
- Die Kovariate und die Behandlung sind unabhängig – es muss überprüft werden, ob die Kovariate ( aktuelle Note) und die Behandlung (Studientechnik) unabhängig voneinander sind, da das Hinzufügen eines Kovariatenterms zum Modell nur dann sinnvoll ist, wenn die Kovariate und Die Behandlung wirkt unabhängig von der Antwortvariablen ( Untersuchung ).
- Homogenität der Varianz – wir müssen überprüfen, ob die Varianzen zwischen den Gruppen gleich sind
Um zu überprüfen, ob die Kovariate und die Behandlung unabhängig sind, können wir eine ANOVA durchführen, wobei wir die aktuelle Note als Antwortvariable und die Studientechnik als Prädiktorvariable verwenden:
#fit anova model anova_model <- aov(current_grade ~ technique, data = data) #view summary of anova model summary(anova_model) # Df Sum Sq Mean Sq F value Pr(>F) #technical 2 74 37.21 0.599 0.552 #Residuals 87 5406 62.14
Der p-Wert ist größer als 0,05, sodass die Kovariate ( aktuelle Note) und die Behandlung ( Studientechnik ) unabhängig zu sein scheinen.
Um dann zu überprüfen, ob die Varianz zwischen den Gruppen homogen ist, können wir den Levene-Test durchführen:
#load car library to conduct Levene's Test libary(car) #conduct Levene's Test leveneTest(technical exam, data = data) #Levene's Test for Homogeneity of Variance (center = median) # Df F value Pr(>F) #group 2 9.4324 0.0001961 *** #87
Der p-Wert des Tests beträgt 0,0001961, was darauf hinweist, dass die Varianzen zwischen den Gruppen nicht gleich sind. Obwohl wir eine Transformation der Daten versuchen könnten, um dieses Problem zu beheben, werden wir uns zu diesem Zeitpunkt nicht allzu viele Gedanken über Varianzunterschiede machen.
Schritt 3: Passen Sie das ANCOVA-Modell an
Als nächstes passen wir das ANCOVA-Modell an, indem wir das Prüfungsergebnis als Antwortvariable, die Studientechnik als Prädiktorvariable (oder „Behandlungsvariable“) und die aktuelle Note als Kovariate verwenden.
Wir werden dazu die Funktion Anova() im Paket verwenden, nur um angeben zu können, dass wir die Quadratsumme vom Typ III für das Modell verwenden möchten, da die Quadratsumme vom Typ I von der Reihenfolge abhängt Die Prädiktoren werden in das Modell eingegeben:
#load car library library(car) #fit ANCOVA model ancova_model <- aov(exam ~ technique + current_grade, data = data) #view summary of model Anova(ancova_model, type="III") #Answer: exam # Sum Sq Df F value Pr(>F) #(Intercept) 7161.2 1 201.4621 < 2.2e-16 *** #technical 1242.9 2 17.4830 4.255e-07 *** #current_grade 12.3 1 0.3467 0.5576 #Residuals 3057.0 86
Wir können sehen, dass der p-Wert für die Technik extrem niedrig ist, was darauf hindeutet, dass die Lerntechnik einen statistisch signifikanten Einfluss auf die Prüfungsergebnisse hat, selbst nach Berücksichtigung der aktuellen Note.
Schritt 4: Post-hoc-Tests
Obwohl uns die ANCOVA-Ergebnisse zeigten, dass die Lerntechnik einen statistisch signifikanten Einfluss auf die Prüfungsergebnisse hatte, müssen wir Post-hoc-Tests durchführen, um festzustellen, welche Lerntechniken sich voneinander unterscheiden.
Dazu können wir die Funktion glht() im Paket multcomp in R verwenden, um den Tukey-Test für mehrere Vergleiche durchzuführen:
#load the multcomp library library(multicomp) #fit the ANCOVA model ancova_model <- aov(exam ~ technique + current_grade, data = data) #define the post hoc comparisons to make postHocs <- glht(ancova_model, linfct = mcp(technique = "Tukey")) #view a summary of the post hoc comparisons summary(postHocs) #Multiple Comparisons of Means: Tukey Contrasts # #Fit: aov(formula = exam ~ technique + current_grade, data = data) # #Linear Assumptions: #Estimate Std. Error t value Pr(>|t|) #B - A == 0 -6.711 1.540 -4.358 0.000109 *** #C - A == 0 -8.736 1.549 -5.640 < 1e-04 *** #C - B == 0 -2.025 1.545 -1.311 0.393089 #view the confidence intervals associated with the multiple comparisons confint(postHocs) # Simultaneous Confidence Intervals # #Multiple Comparisons of Means: Tukey Contrasts # #Fit: aov(formula = exam ~ technique + current_grade, data = data) # #Quantile = 2.3845 #95% family-wise confidence level # #Linear Assumptions: # Estimate lwr upr #B - A == 0 -6.7112 -10.3832 -3.0392 #C - A == 0 -8.7364 -12.4302 -5.0426 #C - B == 0 -2.0252 -5.7091 1.6588
Aus dem Ergebnis können wir erkennen, dass es einen statistisch signifikanten Unterschied (bei α = 0,05) in den Prüfungsergebnissen zwischen dem Erlernen von Technik A und dem Erlernen von Technik B (p-Wert: 0,000109) sowie zwischen Technik A und Technik C gibt (p-Wert: <1e-04).
Wir können auch sehen, dass es keinen statistisch signifikanten Unterschied (bei α = 0,05) zwischen den Techniken B und C gibt. Auch die Konfidenzintervalle zwischen den Techniken stützen diese Ergebnisse.
Daraus können wir schließen, dass die Verwendung von Lerntechnik A zu einer statistisch signifikant höheren Prüfungsnote für Studierende im Vergleich zu Techniken B und C führt, selbst nach Berücksichtigung der aktuellen Note des Studierenden in der Klasse.