gf_point(Thumb ~ Height, data = Fingers)
10 Κεφάλαιο: Μοντέλα με μια ποσοτική ανεξάρτητη μεταβλητή
10.1 Χρήση Ποσοτικής Ανεξάρτητης Μεταβλητής σε ένα Μοντέλο
Η μεταβλητή Height2Group
είναι ποιοτική. Το μοντέλο με ανεξάρτητη μεταβλητή τηνHeight2Group
είναι αυτό που ονομάζουμε μοντέλο ομάδων, καθώς βασίζεται στους μέσους όρους των ομάδων για να προβλέψει το μήκος του αντίχειρα σε κάθε ομάδα (στην προκειμένη περίπτωση, κοντοί και ψηλοί φοιτητές).
Ωστόσο, δεν είναι όλα τα μοντέλα μοντέλα ομάδων. Όταν η ανεξάρτητη μεταβλητή είναι ποσοτική, πρέπει να αλλάξουμε ελαφρώς την προσέγγισή μας. Τα μοντέλα που περιλαμβάνουν ποσοτικές ανεξάρτητες μεταβλητές ονομάζονται συνήθως μοντέλα παλινδρόμησης (regression models).
Το Μοντέλο του Ύψους
Μια ποσοτική μεταβλητή του πλαισίου δεδομένων Fingers
που ενδέχεται να εξηγεί μέρος της μεταβλητότητας στο μήκος του αντίχειρα (Thumb
) είναι η Height
— το ύψος του φοιτητή σε εκατοστά. (Σημείωση: η Height
μετριέται σε εκατοστά, ενώ η Thumb
σε χιλιοστά.)
Προηγουμένως δημιουργήσαμε ένα διάγραμμα διασποράς που απεικονίζει τη σχέση μεταξύ Thumb
και Height
. Το επαναλαμβάνουμε παρακάτω:

Όπως φαίνεται, γνωρίζοντας το ύψος ενός φοιτητή μπορούμε να κάνουμε πιο ακριβή πρόβλεψη για το μήκος του αντίχειρά του σε σχέση με το να μην είχαμε αυτή την πληροφορία. Οι ψηλότεροι φοιτητές τείνουν να έχουν μεγαλύτερους αντίχειρες, ενώ οι κοντύτεροι μικρότερους. Πρόκειται για μια θετική συσχέτιση, καθώς η αύξηση της μιας μεταβλητής συνοδεύεται από αύξηση της άλλης.
Αν θέλουμε να κάνουμε συγκεκριμένες προβλέψεις και να συγκρίνουμε ποσοτικά το μοντέλο της Height
με άλλα μοντέλα, πρέπει να το μετατρέψουμε σε στατιστικό μοντέλο, όπως κάναμε και με το μοντέλο της Height2Group
. Αυτή τη φορά, όμως, δεν μπορούμε να βασιστούμε σε μέσους όρους ομάδων — γιατί δεν υπάρχουν ομάδες! Αντί για αυτό, θα χρησιμοποιήσουμε μια ευθεία γραμμή, γνωστή ως ευθεία παλινδρόμησης, για να κάνουμε τις προβλέψεις.
Η ευθεία παλινδρόμησης είναι ο απλούστερος τρόπος να περιγράψουμε τη σχέση μεταξύ δύο ποσοτικών μεταβλητών. Στο παρακάτω διάγραμμα έχουμε προσθέσει τη βέλτιστη ευθεία παλινδρόμησης στο αρχικό διάγραμμα διασποράς. Η γραμμή αυτή δείχνει το προβλεπόμενο μήκος του αντίχειρα ενός φοιτητή με βάση το ύψος του.

Θα μάθουμε στη συνέχεια πώς να προσαρμόζουμε ένα μοντέλο παλινδρόμησης — δηλαδή πώς να βρίσκουμε την ευθεία που περιγράφει με τον καλύτερο δυνατό τρόπο τη σχέση μεταξύ δύο μεταβλητών — χρησιμοποιώντας τη R. Πριν το κάνουμε αυτό, αξίζει να τονίσουμε ότι η ευθεία παλινδρόμησης δεν είναι οποιαδήποτε ευθεία, όπως ακριβώς ο μέσος όρος δεν είναι οποιοσδήποτε αριθμός.
Όπως οι μέσοι όροι των ομάδων είναι εκείνα τα σημεία που ελαχιστοποιούν το άθροισμα των τετραγώνων των υπολοίπων σε ένα μοντέλο ομάδων, έτσι και η ευθεία παλινδρόμησης είναι η μοναδική ευθεία — ορισμένη από την κλίση της και το σημείο τομής της με τον άξονα y — για την οποία τα υπόλοιπα είναι ισορροπημένα και το άθροισμα τετραγώνων των υπολοίπων ελαχιστοποιείται.
Ας δούμε πιο αναλυτικά τι σημαίνει αυτό.
Προβλέψεις από το Μοντέλο της Height
Για να προσαρμόσουμε το μοντέλο παλινδρόμησης της Height
, θα χρησιμοποιήσουμε τη συνάρτηση lm()
με τον ίδιο τρόπο όπως και στα μοντέλα ομάδων. Δεν χρειάζεται να ενημερώσουμε τη R ότι πρόκειται για μοντέλο παλινδρόμησης — θα το αναγνωρίσει αυτόματα, επειδή η ανεξάρτητη μεταβλητή είναι ποσοτική.
Δίνεται ο κώδικας για τη χρήση της lm()
για την προσαρμογή του μοντέλου ομάδων με την Height2Group
ως ανεξάρτητη μεταβλητή:
Πώς θα το τροποποιούσαμε αν θέλουμε να χρησιμοποιήσουμε την Height
αντί για την Height2Group
για να εξηγήσουμε τη μεταβλητότητα στην Thumb
;
Σωστή απάντηση: Β - lm(Thumb ~ Height, data = Fingers)
Δομή της συνάρτησης lm()
:
Όπου: - Y = Εξαρτημένη μεταβλητή
X = Ανεξάρτητη μεταβλητή
dataset = Το όνομα του πλαισίου δεδομένων
Η σύνταξη διαβάζεται ως:
«Μοντελοποίησε την Y ως συνάρτηση της X χρησιμοποιώντας δεδομένα από το dataset.»
10.2 Τι αλλάζει στο ερώτημα;
Αρχικό μοντέλο:
Εξαρτημένη (Y):
Thumb
(μήκος αντίχειρα)Ανεξάρτητη (X):
Height2Group
(ποιοτική: short/tall)Πλαίσιο δεδομένων:
Fingers
Νέο μοντέλο (ζητούμενο):
Εξαρτημένη (Y):
Thumb
(ίδια! ✓)Ανεξάρτητη (X):
Height
(ποσοτική/συνεχής μεταβλητή)Δεδομένα:
Fingers
(ίδιο! ✓)
Τι αλλάζει: Μόνο η ανεξάρτητη μεταβλητή (από Height2Group σε Height)
Τι παραμένει ίδιο: - Η εξαρτημένη μεταβλητή (Thumb)
- Το πλαίσιο δεδομένων (Fingers)
10.3 Διαφορά μεταξύ Height2Group
και Height
Height2Group
(ποιοτική μεταβλητή):
Τύπος: Factor με 2 επίπεδα (short, tall)
Τιμές: “short” ή “tall”
Μοντέλο: \(\text{Thumb}_i = b_0 + b_1 \times \text{Height2Group}_{\text{tall},i}\)
Ερμηνεία: Διαφορά μέσων όρων μεταξύ ομάδων
Height
(ποσοτική μεταβλητή):
Τύπος: Αριθμητική μεταβλητή (numeric)
Τιμές: Ύψος σε cm (π.χ., 165, 170, 175, …)
Μοντέλο: \(\text{Thumb}_i = b_0 + b_1 \times \text{Height}_i\)
Ερμηνεία: Γραμμική σχέση (για κάθε 1 cm ύψος, αλλαγή \(b_1\) στην Thumb)
10.4 Γιατί οι άλλες είναι λάθος;
Α. lm(Height ~ Height2Group, data = Fingers)
- ΛΑΘΟΣ
Αυτό αντιστρέφει την εξαρτημένη και ανεξάρτητη μεταβλητή
Μοντελοποιεί την
Height
(ύψος) ως εξαρτημένηΧρησιμοποιεί την
Height2Group
ως ανεξάρτητη
Τι μοντελοποιεί:
«Πρόβλεψη του ύψους από την ομάδα ύψους»
Το ζητούμενο:
«Πρόβλεψη του μήκους αντίχειρα από το ύψος»
Σύγκριση:
Στοιχείο | Επιλογή Α | Ζητούμενο |
---|---|---|
Εξαρτημένη (Y) | Height ✗ | Thumb ✓ |
Ανεξάρτητη (X) | Height2Group | Height |
Πλαίσιο δεδομένων | Fingers ✓ | Fingers ✓ |
Γ. lm(Thumb ~ Height2Group, data = Height)
- ΛΑΘΟΣ
Αυτό αλλάζει το πλαίσιο δεδομένων από
Fingers
σεHeight
Το
Height
δεν είναι πλαίσιο δεδομένων - είναι μεταβλητή!Θα προκαλέσει σφάλμα στην R:
lm(Thumb ~ Height2Group, data = Height)
# Error: object 'Height' not found
# (Εκτός αν υπάρχει πλαίσιο δεδομένων με όνομα "Height")
Σύγχυση:
Height
(μεταβλητή) ≠Fingers
(σύνολο δεδομένων)Το
data =
χρειάζεται το όνομα του πλαισίου δεδομένων, όχι μεταβλητής
Δ. lm(Height ~ Thumb, data = Fingers)
- ΛΑΘΟΣ
Αυτό αντιστρέφει πλήρως το μοντέλο
Μοντελοποιεί την Height ως εξαρτημένη
Χρησιμοποιεί την Thumb ως ανεξάρτητη
Τι μοντελοποιεί:
«Πρόβλεψη του ύψους από το μήκος αντίχειρα»
Το ζητούμενο:
«Πρόβλεψη του μήκους αντίχειρα από το ύψος»
Σύγκριση:
Στοιχείο | Επιλογή Δ | Ζητούμενο |
---|---|---|
Εξαρτημένη (Y) | Height ✗ | Thumb ✓ |
Ανεξάρτητη (X) | Thumb ✗ | Height ✓ |
Πλαίσιο δεδομένων | Fingers ✓ | Fingers ✓ |
10.5 Σύνταξη της lm() - Λεπτομέρειες
Γενική μορφή:
Στοιχεία:
-
outcome
(αριστερά του ~):Η εξαρτημένη μεταβλητή
Αυτό που θέλουμε να προβλέψουμε ή εξηγήσουμε
Στο παράδειγμα: Thumb
-
predictor
(δεξιά του ~):Η ανεξάρτητη μεταβλητή
Αυτό που χρησιμοποιούμε για να εξηγήσουμε ή προβλέψουμε
Στο αρχικό: Height2Group, στο νέο: Height
-
data =
:Το πλαίσιο δεδομένων που περιέχει τις μεταβλητές
Στο παράδειγμα: Fingers
Σύμβολο ~
(tilde):
Διαβάζεται ως “εξηγείται από” ή “ως συνάρτηση του”
Διαβάζεται: - «Η Thumb μοντελοποιείται ως συνάρτηση της Height»
«Η Thumb εξηγείται από την Height»
«Η Thumb εξαρτάται από την Height»
10.6 Παραδείγματα μετατροπών
Αλλαγή ανεξάρτητης μεταβλητής:
# Αρχικό: Η Thumb εξηγείται από την Height2Group (ποιοτική)
lm(Thumb ~ Height2Group, data = Fingers)
# Νέο: Η Thumb εξηγείται από την Height (ποσοτική)
lm(Thumb ~ Height, data = Fingers) ← ΣΩΣΤΟ!
# Άλλη επιλογή: Η Thumb εξηγείται από την Gender
lm(Thumb ~ Sex, data = Fingers)
Αλλαγή εξαρτημένης μεταβλητής:
# Η Thumb εξηγείται από την Height
lm(Thumb ~ Height, data = Fingers)
# Η Index εξηγείται από την Height
lm(Index ~ Height, data = Fingers)
# Η Middle εξηγείται από την Height
lm(Middle ~ Height, data = Fingers)
Αλλαγή συνόλου δεδομένων:
# Χρήση πλαισίου δεδομένων Fingers
lm(Thumb ~ Height, data = Fingers)
# Χρήση άλλου πλαισίου δεδομένων (αν υπάρχει)
lm(Thumb ~ Height, data = AnotherDataset)
10.7 Σύγκριση των δύο μοντέλων
Μοντέλο 1: Κατηγορική ανεξάρτητη
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 57.263 0.512 111.86 <2e-16 ***
Height2Grouptall 5.192 0.685 7.58 2.4e-13 ***
Ερμηνεία: - Μέσο Thumb για short: 57.26 mm
Μέσο Thumb για tall: 57.26 + 5.19 = 62.45 mm
Διαφορά: 5.19 mm
Μοντέλο 2: Ποσοτική ανεξάρτητη
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21.4536 4.0232 5.33 1.6e-07 ***
Height 0.2363 0.0236 10.01 < 2e-16 ***
Ερμηνεία: - Για κάθε 1 cm αύξηση στο ύψος, το Thumb αυξάνεται κατά 0.236 mm
- Γραμμική σχέση: \(\text{Thumb} = 21.45 + 0.236 \times \text{Height}\)
10.8 Πρακτική εφαρμογή
# Φόρτωση δεδομένων (παράδειγμα)
library(mosaic)
data(Fingers)
# Αρχικό μοντέλο
model_group <- lm(Thumb ~ Height2Group, data = Fingers)
# Τροποποιημένο μοντέλο (ζητούμενο)
model_height <- lm(Thumb ~ Height, data = Fingers)
# Σύγκριση
summary(model_group)
summary(model_height)
# Οπτικοποίηση
gf_point(Thumb ~ Height, data = Fingers) %>%
gf_lm()
10.9 Συμπέρασμα
Για να αλλάξουμε από Height2Group
σε Height
:
Αντικαθιστούμε μόνο την ανεξάρτητη μεταβλητή (δεξιά του ~)
Σωστή απάντηση:
Γιατί:
✓ Η Thumb παραμένει η εξαρτημένη (outcome) - αυτό που προβλέπουμε
✓ Η Height γίνεται η νέα ανεξάρτητη (predictor) - αντί για την Height2Group
✓ Το Fingers παραμένει το σύνολο δεδομένων
Χρησιμοποιήστε το παρακάτω πλαίσιο κώδικα για να προσαρμόσετε το μοντέλο της Height
με τη συνάρτηση lm()
και αποθηκεύστε το αποτέλεσμα σε ένα αντικείμενο με όνομα Height_model
. Έπειτα, προσθέστε κώδικα που θα δημιουργεί τις τιμές πρόβλεψης του μοντέλου και θα τις αποθηκεύει ως νέα στήλη στο πλαίσιο δεδομένων Fingers
. (Υπόδειξη: χρησιμοποιήστε τη συνάρτηση predict()
για να δημιουργήσετε τις προβλέψεις.)
Thumb Height Height_predict1 66.00 70.5 64.48330
2 64.00 64.8 59.00056
3 56.00 64.0 58.23105
4 58.42 70.0 64.00235
5 74.00 68.0 62.07859
6 60.00 68.0 62.07859
Ας εξετάσουμε τις προβλέψεις του μοντέλου της
Height
(παραπάνω).
Με ποιον τρόπο οι προβλέψεις του μοντέλου της
Height
διαφέρουν από τις προβλέψεις που παράγει το μοντέλο τηςHeight2Group
;
Εκτελέσαμε τον παρακάτω κώδικα για να προσθέσουμε στο αρχικό διάγραμμα διασποράς — το οποίο απεικονίζει τα πραγματικά μήκη αντίχειρα — και τις τιμές πρόβλεψης του μοντέλου της Height
. Οι προβλέψεις εμφανίζονται με κόκκινους κύκλους, κάτι που επιτεύχθηκε με την προσθήκη των κατάλληλων ορισμάτων για το σχήμα και το χρώμα στη συνάρτηση gf_point()
.
Fingers$prediction <- predict(Height_model)
gf_point(Thumb ~ Height, data = Fingers) %>%
gf_point(prediction ~ Height, shape = 1, size = 3, color = "firebrick")

Κάθε τιμή της μεταβλητής Height
(π.χ. 61, 62, 63) στο σύνολο δεδομένων αντιστοιχεί σε μια μοναδική προβλεπόμενη τιμή του μοντέλου — που απεικονίζεται με κόκκινο κύκλο. Παρατηρείτε ότι όλες οι προβλέψεις σχηματίζουν μια ευθεία γραμμή; Αυτό δεν είναι τυχαίο! Συμβαίνει επειδή οι προβλέψεις προέρχονται από την ευθεία παλινδρόμησης που προσαρμόστηκε στα δεδομένα μέσω της R.
Αν προσθέσουμε τη συνάρτηση gf_model()
στο διάγραμμα διασποράς, η καλύτερα προσαρμοσμένη ευθεία του μοντέλου θα συμπέσει ακριβώς με τις προβλεπόμενες τιμές (τους κόκκινους κύκλους).
gf_point(Thumb ~ Height, data = Fingers) %>%
gf_point(prediction ~ Height, shape = 1, size = 3, color = "firebrick") %>%
gf_model(Height_model, color="red")
Σημειώστε ότι υπάρχουν δύο βασικοί τρόποι για να προβάλετε ένα μοντέλο παλινδρόμησης σε ένα διάγραμμα διασποράς. Ο πρώτος τρόπος είναι με τη χρήση της συνάρτησης
gf_model()
, η οποία απαιτεί να καθορίσουμε ρητά το μοντέλο που θέλουμε να εμφανίσουμε στο διάγραμμα (π.χ. gf_model(Height_model))
. Το πλεονέκτημα της gf_model()
είναι ότι μπορεί να χρησιμοποιηθεί τόσο για μοντέλα ομάδων όσο και για μοντέλα παλινδρόμησης.
Ο δεύτερος τρόπος είναι να προσθέσουμε τη συνάρτηση gf_lm()
στο διάγραμμα διασποράς. Αυτή η συνάρτηση δεν χρειάζεται να της δοθεί κάποιο μοντέλο — το υπολογίζει αυτόματα με βάση τα δεδομένα του διαγράμματος. Ωστόσο, μπορεί να χρησιμοποιηθεί μόνο για μοντέλα παλινδρόμησης.