Εκμάθηση R ANOVA: Μονόδρομος & Αμφίδρομος (με παραδείγματα)
Τι είναι το ANOVA;
Ανάλυση της διακύμανσης (ANOVA) είναι μια στατιστική τεχνική, που χρησιμοποιείται συνήθως για τη μελέτη διαφορών μεταξύ δύο ή περισσότερων μέσων ομάδων. Η δοκιμή ANOVA επικεντρώνεται στις διαφορετικές πηγές διακύμανσης σε μια τυπική μεταβλητή. Η ANOVA στο R παρέχει κυρίως στοιχεία για την ύπαρξη της μέσης ισότητας μεταξύ των ομάδων. Αυτή η στατιστική μέθοδος είναι μια επέκταση του τεστ t. Χρησιμοποιείται σε μια κατάσταση όπου η μεταβλητή παράγοντα έχει περισσότερες από μία ομάδες.
Μονόδρομος ANOVA
Υπάρχουν πολλές περιπτώσεις όπου πρέπει να συγκρίνετε τον μέσο όρο μεταξύ πολλών ομάδων. Για παράδειγμα, το τμήμα μάρκετινγκ θέλει να μάθει εάν τρεις ομάδες έχουν την ίδια απόδοση πωλήσεων.
- Ομάδα: Παράγοντες 3 επιπέδων: Α, Β και Γ
- Πώληση: Μέτρο απόδοσης
Το τεστ ANOVA μπορεί να πει αν οι τρεις ομάδες έχουν παρόμοιες επιδόσεις.
Για να διευκρινίσετε εάν τα δεδομένα προέρχονται από τον ίδιο πληθυσμό, μπορείτε να εκτελέσετε α μονόδρομη ανάλυση διασποράς (μονόδρομη ANOVA εφεξής). Αυτό το τεστ, όπως και κάθε άλλο στατιστικό τεστ, αποδεικνύει εάν η υπόθεση H0 μπορεί να γίνει αποδεκτή ή να απορριφθεί.
Υπόθεση σε μονόδρομο τεστ ANOVA
- H0: Τα μέσα μεταξύ των ομάδων είναι πανομοιότυπα
- Η3: Τουλάχιστον, ο μέσος όρος μιας ομάδας είναι διαφορετικός
Με άλλα λόγια, η υπόθεση H0 υπονοεί ότι δεν υπάρχουν αρκετά στοιχεία που να αποδεικνύουν ότι ο μέσος όρος της ομάδας (παράγοντας) είναι διαφορετικός από έναν άλλο.
Αυτό το τεστ είναι παρόμοιο με το t-test, αν και το τεστ ANOVA συνιστάται σε καταστάσεις με περισσότερες από 2 ομάδες. Εκτός αυτού, το t-test και το ANOVA παρέχουν παρόμοια αποτελέσματα.
Υποθέσεις
Υποθέτουμε ότι κάθε παράγοντας είναι τυχαία δειγματοληπτικός, ανεξάρτητος και προέρχεται από έναν κανονικά κατανεμημένο πληθυσμό με άγνωστες αλλά ίσες διακυμάνσεις.
Ερμηνεύστε το τεστ ANOVA
Η στατιστική F χρησιμοποιείται για να ελεγχθεί εάν τα δεδομένα προέρχονται από σημαντικά διαφορετικούς πληθυσμούς, δηλαδή από διαφορετικούς μέσους όρους δείγματος.
Για να υπολογίσετε τη στατιστική F, πρέπει να διαιρέσετε το μεταβλητότητα μεταξύ ομάδων πάνω από το μεταβλητότητα εντός της ομάδας.
The μεταξύ-ομάδας Η μεταβλητότητα αντανακλά τις διαφορές μεταξύ των ομάδων μέσα σε όλο τον πληθυσμό. Κοιτάξτε τα δύο γραφήματα παρακάτω για να κατανοήσετε την έννοια της διακύμανσης μεταξύ ομάδων.
Το αριστερό γράφημα δείχνει πολύ μικρή διακύμανση μεταξύ των τριών ομάδων και είναι πολύ πιθανό ότι οι τρεις μέσοι τείνουν προς το φόρμες μέσος όρος (δηλαδή, μέσος όρος για τις τρεις ομάδες).
Το δεξί γράφημα απεικονίζει τρεις κατανομές σε απόσταση μεταξύ τους και καμία από αυτές δεν επικαλύπτεται. Υπάρχει μεγάλη πιθανότητα η διαφορά μεταξύ του συνολικού μέσου όρου και του μέσου όρου των ομάδων να είναι μεγάλη.
The εντός ομάδας Η μεταβλητότητα λαμβάνει υπόψη τη διαφορά μεταξύ των ομάδων. Η παραλλαγή προέρχεται από τις επιμέρους παρατηρήσεις. ορισμένα σημεία μπορεί να είναι τελείως διαφορετικά από αυτά που σημαίνει η ομάδα. ο εντός ομάδας η μεταβλητότητα ανακτά αυτό το φαινόμενο και ανατρέξτε στο σφάλμα δειγματοληψίας.
Για να κατανοήσετε οπτικά την έννοια της μεταβλητότητας εντός ομάδας, δείτε το παρακάτω γράφημα.
Το αριστερό μέρος απεικονίζει την κατανομή τριών διαφορετικών ομάδων. Αυξήσατε την εξάπλωση κάθε δείγματος και είναι σαφές ότι η μεμονωμένη διακύμανση είναι μεγάλη. Το F-test θα μειωθεί, που σημαίνει ότι έχετε την τάση να αποδεχτείτε τη μηδενική υπόθεση
Το δεξί μέρος δείχνει ακριβώς τα ίδια δείγματα (πανομοιότυπος μέσος όρος) αλλά με μικρότερη μεταβλητότητα. Οδηγεί σε αύξηση του F-test και τείνει υπέρ της εναλλακτικής υπόθεσης.
Μπορείτε να χρησιμοποιήσετε και τα δύο μέτρα για την κατασκευή των στατιστικών F. Είναι πολύ διαισθητικό να κατανοήσουμε τη στατιστική F. Εάν ο αριθμητής αυξάνεται, σημαίνει ότι η μεταβλητότητα μεταξύ των ομάδων είναι υψηλή και είναι πιθανό οι ομάδες στο δείγμα να προέρχονται από εντελώς διαφορετικές κατανομές.
Με άλλα λόγια, ένα χαμηλό στατιστικό F υποδηλώνει μικρή ή καθόλου σημαντική διαφορά μεταξύ του μέσου όρου της ομάδας.
Παράδειγμα One way ANOVA Test
Θα χρησιμοποιήσετε το σύνολο δεδομένων δηλητηρίου για να εφαρμόσετε τη δοκιμή ANOVA μονής κατεύθυνσης. Το σύνολο δεδομένων περιέχει 48 σειρές και 3 μεταβλητές:
- Χρόνος: Χρόνος επιβίωσης του ζώου
- δηλητήριο: Τύπος δηλητηρίου που χρησιμοποιείται: επίπεδο παράγοντα: 1,2 και 3
- θεραπεία: Τύπος θεραπείας που χρησιμοποιείται: επίπεδο παράγοντα: 1,2 και 3
Πριν ξεκινήσετε να υπολογίζετε τη δοκιμή ANOVA, πρέπει να προετοιμάσετε τα δεδομένα ως εξής:
- Βήμα 1: Εισαγάγετε τα δεδομένα
- Βήμα 2: Καταργήστε την περιττή μεταβλητή
- Βήμα 3: Μετατρέψτε το μεταβλητό poison ως διατεταγμένο επίπεδο
library(dplyr) PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv" df <- read.csv(PATH) %>% select(-X) %>% mutate(poison = factor(poison, ordered = TRUE)) glimpse(df)
Παραγωγή:
## Observations: 48 ## Variables: 3 ## $ time <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0... ## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2... ## $ treat <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...
Στόχος μας είναι να ελέγξουμε την ακόλουθη υπόθεση:
- H0: Δεν υπάρχει διαφορά στο μέσο χρόνο επιβίωσης μεταξύ της ομάδας
- Η3: Ο μέσος όρος χρόνου επιβίωσης είναι διαφορετικός για τουλάχιστον μία ομάδα.
Με άλλα λόγια, θέλετε να μάθετε εάν υπάρχει στατιστική διαφορά μεταξύ του μέσου όρου του χρόνου επιβίωσης ανάλογα με το είδος του δηλητηρίου που δίνεται στο ινδικό χοιρίδιο.
Θα προχωρήσετε ως εξής:
- Βήμα 1: Ελέγξτε τη μορφή του μεταβλητού δηλητηρίου
- Βήμα 2: Εκτυπώστε τη συνοπτική στατιστική: μέτρηση, μέσος όρος και τυπική απόκλιση
- Βήμα 3: Σχεδιάστε ένα οικόπεδο κουτιού
- Βήμα 4: Υπολογίστε τη δοκιμή ANOVA μονής κατεύθυνσης
- Βήμα 5: Εκτελέστε ένα τεστ t-ζευγών
Βήμα 1) Μπορείτε να ελέγξετε το επίπεδο του δηλητηρίου με τον παρακάτω κωδικό. Θα πρέπει να δείτε τρεις τιμές χαρακτήρων επειδή τις μετατρέπετε σε συντελεστή με το ρήμα μετάλλαξης.
levels(df$poison)
Παραγωγή:
## [1] "1" "2" "3"
Βήμα 2) Υπολογίζετε τη μέση και τυπική απόκλιση.
df % > % group_by(poison) % > % summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Παραγωγή:
## # A tibble: 3 x 4 ## poison count_poison mean_time sd_time ## <ord> <int> <dbl> <dbl> ## 1 1 16 0.617500 0.20942779 ## 2 2 16 0.544375 0.28936641 ## 3 3 16 0.276250 0.06227627
Βήμα 3) Στο τρίτο βήμα, μπορείτε να ελέγξετε γραφικά εάν υπάρχει διαφορά μεταξύ της διανομής. Σημειώστε ότι συμπεριλαμβάνετε την κουκκίδα.
ggplot(df, aes(x = poison, y = time, fill = poison)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_classic()
Παραγωγή:
Βήμα 4) Μπορείτε να εκτελέσετε τη δοκιμή ANOVA μονής κατεύθυνσης με την εντολή aov. Η βασική σύνταξη για μια δοκιμή ANOVA είναι:
aov(formula, data) Arguments: - formula: The equation you want to estimate - data: The dataset used
Η σύνταξη του τύπου είναι:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Μπορείτε να απαντήσετε στην ερώτησή μας: Υπάρχει διαφορά στον χρόνο επιβίωσης μεταξύ του ινδικού χοιριδίου, γνωρίζοντας το είδος του δηλητηρίου που δίνεται.
Σημειώστε ότι, συνιστάται να αποθηκεύσετε το μοντέλο και να χρησιμοποιήσετε τη συνάρτηση summary() για να έχετε καλύτερη εκτύπωση των αποτελεσμάτων.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Επεξήγηση κώδικα
- aov(time ~ poison, data = df): Εκτελέστε τη δοκιμή ANOVA με τον ακόλουθο τύπο
- summary(anova_one_way): Εκτυπώστε την περίληψη του τεστ
Παραγωγή:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.033 0.5165 11.79 7.66e-05 *** ## Residuals 45 1.972 0.0438 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Η τιμή p είναι χαμηλότερη από το συνηθισμένο όριο του 0.05. Μπορείτε να πείτε με βεβαιότητα ότι υπάρχει μια στατιστική διαφορά μεταξύ των ομάδων, που υποδεικνύεται με το "*".
Σύγκριση κατά ζεύγη
Η μονόδρομη δοκιμή ANOVA δεν ενημερώνει ποια ομάδα έχει διαφορετικό μέσο όρο. Αντίθετα, μπορείτε να εκτελέσετε μια δοκιμή Tukey με τη συνάρτηση TukeyHSD().
TukeyHSD(anova_one_way)
Παραγωγή:
Αμφίδρομη ANOVA
Μια αμφίδρομη δοκιμή ANOVA προσθέτει μια άλλη μεταβλητή ομάδας στον τύπο. Είναι πανομοιότυπο με το μονόδρομο τεστ ANOVA, αν και ο τύπος αλλάζει ελαφρώς:
y=x1+x2
με είναι μια ποσοτική μεταβλητή και και είναι κατηγορικές μεταβλητές.
Υπόθεση σε αμφίδρομη δοκιμασία ANOVA
- H0: Οι μέσοι όροι είναι ίσοι και για τις δύο μεταβλητές (δηλαδή, μεταβλητή παράγοντα)
- H3: Οι μέσοι όροι είναι διαφορετικοί και για τις δύο μεταβλητές
Προσθέτετε μεταβλητή θεραπεία στο μοντέλο μας. Αυτή η μεταβλητή υποδεικνύει τη θεραπεία που δόθηκε στο ινδικό χοιρίδιο. Σας ενδιαφέρει να δείτε εάν υπάρχει στατιστική εξάρτηση μεταξύ του δηλητηρίου και της θεραπείας που χορηγείται στο ινδικό χοιρίδιο.
Προσαρμόζουμε τον κώδικά μας προσθέτοντας θεραπεία με την άλλη ανεξάρτητη μεταβλητή.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Παραγωγή:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.0330 0.5165 20.64 5.7e-07 *** ## treat 3 0.9212 0.3071 12.27 6.7e-06 *** ## Residuals 42 1.0509 0.0250 ## ---
Μπορείτε να συμπεράνετε ότι τόσο το δηλητήριο όσο και η θεραπεία διαφέρουν στατιστικά από το 0. Μπορείτε να απορρίψετε την υπόθεση NULL και να επιβεβαιώσετε ότι η αλλαγή της θεραπείας ή του δηλητηρίου επηρεάζει το χρόνο επιβίωσης.
Περίληψη
Μπορούμε να συνοψίσουμε το τεστ στον παρακάτω πίνακα:
| Δοκιμή | Κώδικας | Υπόθεση | P-τιμή |
|---|---|---|---|
| Μονόδρομος ANOVA |
aov(y ~ X, data = df) |
Η3: Ο μέσος όρος είναι διαφορετικός για τουλάχιστον μία ομάδα | 0.05 |
| Κατά ζεύγη |
TukeyHSD(ANOVA summary) |
0.05 | |
| Αμφίδρομη ANOVA |
aov(y ~ X1 + X2, data = df) |
Η3: Ο μέσος όρος είναι διαφορετικός και για τις δύο ομάδες | 0.05 |




