library(tidyverse)
Ρωτήσαμε τις φοιτήτριες και τους φοιτητές του μαθήματος να μας πουν το ύψος τους. Μπορούμε να δούμε τις απαντήσεις εδώ Μπορούμε να δούμε τις απαντήσεις εδώ
θα χρειαστεί να διαβάσουμε αυτά τα δεδομένα και να αποθηκεύσουμε σε μια μεταβλητή, για παράδειγμα:
answers <- read.table(
"http://stavrakoudis.econ.uoi.gr/stavrakoudis/data/SWH.txt",
sep = ",",
header = TRUE
)
Οι πρώτες εγγραφές του πίνακα είναι:
head(answers)
## sex weight height
## 1 Κορίτσι 59.4 160
## 2 Αγόρι 97.7 176
## 3 Κορίτσι 70.0 160
## 4 Αγόρι 78.0 178
## 5 Κορίτσι 54.5 165
## 6 Αγόρι 86.0 190
Το ύψος σε εκατοστά είναι στη στήλη height, μπορούμε να δούμε το ιστόγραμμα του ύψους
hist(answers$height)
είτε:
answers %>%
ggplot(aes(x = height)) +
geom_histogram(binwidth = 5)
Υπάρχουν τρεις υποθέσεις που μπορούμε να κάνουμε:
Μπορούμε (στον πίνακα δεδομένων) να υπολογίσουμε το μέσο ύψος ως εξής:
mean(answers$height)
## [1] 170.138
Αν θέλουμε το μέσο ύψος ξεχωριστά για τα Αγόρια και τα Κορίτσια θα χρειαστεί να γράψουμε:
answers %>%
group_by(sex) %>%
summarise(m = mean(height))
## # A tibble: 2 × 2
## sex m
## <chr> <dbl>
## 1 Αγόρι 180.
## 2 Κορίτσι 165.
Ή περισσότερο αναλυτικά (και κοπιαστικά):
boy_height <- answers %>%
filter(sex == 'Αγόρι') %>%
pull(height)
girl_height <- answers %>%
filter(sex == 'Κορίτσι') %>%
pull(height)
Οπότε μπορούμε να υπολογίσουμε είτε τις αντίστοιχες μέσες τιμές:
mean(boy_height)
## [1] 180.1883
mean(girl_height)
## [1] 165.0801
είτε τις αντίστοιχες τυπικές αποκλίσεις:
sd(boy_height)
## [1] 6.46334
sd(girl_height)
## [1] 6.19923
Μια πρώτη εικόνα για να δούμε τη διαφορετική κατανομή τους ύψους Αγοριών και Κοριτσιών είναι το θηκόγραμμα:
boxplot(height ~ sex, data = answers)
Μπορούμε επίσης να εξετάσουμε τη διαφορετική πυκνότητα κατανομής:
answers %>%
ggplot(aes(x = height, fill = sex)) +
geom_density(alpha = 0.7) +
labs(x = "Ύψος", y = "Πυκνότητα", fill = "Φύλο") +
scale_fill_manual(breaks = c('Αγόρι', 'Κορίτσι'), values = c('navy', 'firebrick')) +
theme_minimal()
Σημείωση, η χρωματική σήμανση αγοριών/κοριτσιών δεν είναι αθώα επιλογή. Μπορείτε να προτείνετε κάτι καλύτερο από το μπλε/κόκκινο;
Και τα δύο διαγράμματα υποδεικνύουν πως τα Αγόρια είναι ψηλότερα. Υπάρχει ωστόσο μια σημαντική περιοχή επικάλυψης.
Φαίνεται λοιπόν πως ο οπτικός έλεγχος δείχνει πως τα Αγόρια είναι ψηλότερα από τα Κορίτσια. Ας δούμε όμως τι λέει και ο στατιστικός έλεγχος. Για λόγους πληρότητας θα εξετάσουμε και τα 3 ενδεχόμενα.
θα διερευνήσουμε τη μηδενική υπόθεση: \[ H_0 : \mu_1 - \mu_2 \le 0\] σε σχέση με την εναλλακτική υπόθεση: \[ H_1 : \mu_1 - \mu_2 > 0\]
Για να κάνουμε τον έλεγχο στην R γράφουμε:
t.test(
boy_height,
girl_height,
alternative = "greater",
paired = FALSE
)
##
## Welch Two Sample t-test
##
## data: boy_height and girl_height
## t = 23.983, df = 295.67, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 14.06879 Inf
## sample estimates:
## mean of x mean of y
## 180.1883 165.0801
Σημείωση: η επιλογή paired=FALSE είναι εδώ περιττή, μπορούμε να την παραλείψουμε καθώς εξ ορισμού (default) ισχύει paired=FALSE.
Πως ερμηνεύουμε το αποτέλεσμα; Η τιμή p είναι εξαιρετικά μικρή, πολύ μικρότερη από το 0.05. Έχουμε πολύ ισχυρή ένδειξη να απορρίψουμε τη μηδενική υπόθεση: το ύψος των αγοριών είναι μικρότερο από το ύψος των κοριτσιών.
Μια πιο πλήρης και ταυτόχρονα εύκολη επιλογή είναι να κάνουμε το έλεγχο ως εξής, με απευθείας χρήση του πίνακα δεδομένων:
t.test(
height ~ sex,
data = answers,
alternative = "greater"
)
##
## Welch Two Sample t-test
##
## data: height by sex
## t = 23.983, df = 295.67, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group Αγόρι and group Κορίτσι is greater than 0
## 95 percent confidence interval:
## 14.06879 Inf
## sample estimates:
## mean in group Αγόρι mean in group Κορίτσι
## 180.1883 165.0801
Δηλαδή να χρησιμοποιήσουμε απευθείας τα δεδομένα του πίνακα απαντήσεων με τον τύπο (formula) height ~ sex ο οποίος διαβάζεται ως: ύψος ως προς φύλλο. Έτσι θα πάρουμε απευθείας το αποτέλεσμα χωρίς να χρειαστεί να κατασκευάσουμε ενδιάμεσα διανύσματα τιμών. Και οι δύο τρόποι είναι σωστοί και δίνουν του ίδιο αποτέλεσμα. Είναι στην ευχέρεια του χρήστη να επιλέξει.
θα διερευνήσουμε τη μηδενική υπόθεση: \[ H_0 : \mu_1 - \mu_2 \ge 0\] σε σχέση με την εναλλακτική υπόθεση: \[ H_1 : \mu_1 - \mu_2 < 0\]
Στην R γράφουμε:
t.test(
boy_height,
girl_height,
alternative = "less",
paired = FALSE
)
##
## Welch Two Sample t-test
##
## data: boy_height and girl_height
## t = 23.983, df = 295.67, p-value = 1
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
## -Inf 16.1477
## sample estimates:
## mean of x mean of y
## 180.1883 165.0801
Πως ερμηνεύουμε το αποτέλεσμα; Η τιμή p είναι εξαιρετικά μεγάλη, πολύ κοντά στη μονάδα. Έχουμε πολύ ισχυρή ένδειξη να μην απορρίψουμε τη μηδενική υπόθεση: το ύψος των αγοριών είναι μεγαλύτερο από το ύψος των κοριτσιών.
θα διερευνήσουμε τη μηδενική υπόθεση: \[ H_0 : \mu_1 - \mu_2 = 0\] σε σχέση με την εναλλακτική υπόθεση: \[ H_1 : \mu_1 - \mu_2 \neq 0\]
Στην R γράφουμε:
t.test(
boy_height,
girl_height,
alternative = "two.sided",
paired = FALSE
)
##
## Welch Two Sample t-test
##
## data: boy_height and girl_height
## t = 23.983, df = 295.67, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 13.86847 16.34803
## sample estimates:
## mean of x mean of y
## 180.1883 165.0801
Είτε ισοδύναμα με απευθείας χρήση του πίνακα δεδομένων:
t.test(
height ~ sex,
data = answers,
alternative = "two.sided"
)
##
## Welch Two Sample t-test
##
## data: height by sex
## t = 23.983, df = 295.67, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group Αγόρι and group Κορίτσι is not equal to 0
## 95 percent confidence interval:
## 13.86847 16.34803
## sample estimates:
## mean in group Αγόρι mean in group Κορίτσι
## 180.1883 165.0801
Πως ερμηνεύουμε το αποτέλεσμα; Η τιμή p είναι εξαιρετικά μικρή, πολύ κοντά στο μηδέν. Έχουμε πολύ ισχυρή ένδειξη να απορρίψουμε τη μηδενική υπόθεση: τα αγόρια και τα κορίτσια έχουν το ίδιο ύψος
Σύμφωνα με τους ελέγχους που έχουμε πραγματοποιήσει υπάρχει ισχυρή ένδειξη πως τα Αγόρια της τάξης είναι ψηλότερα από τα Κορίτσια.
t_test_result <- t.test(
height ~ sex,
data = answers,
alternative = "two.sided"
)
names(t_test_result)
## [1] "statistic" "parameter" "p.value" "conf.int" "estimate"
## [6] "null.value" "stderr" "alternative" "method" "data.name"
t_test_result$statistic
## t
## 23.98272
t_test_result$parameter
## df
## 295.6742
t_test_result$p.value
## [1] 2.517956e-71
t_test_result$conf.int
## [1] 13.86847 16.34803
## attr(,"conf.level")
## [1] 0.95
t_test_result$estimate
## mean in group Αγόρι mean in group Κορίτσι
## 180.1883 165.0801
t_test_result$null.value
## difference in means between group Αγόρι and group Κορίτσι
## 0
t_test_result$stderr
## [1] 0.6299638
t_test_result$alternative
## [1] "two.sided"
t_test_result$method
## [1] "Welch Two Sample t-test"
t_test_result$data.name
## [1] "height by sex"