10  Κεφάλαιο: Μοντέλα με μια ποσοτική ανεξάρτητη μεταβλητή


10.1 Χρήση Ποσοτικής Ανεξάρτητης Μεταβλητής σε ένα Μοντέλο

Η μεταβλητή Height2Group είναι ποιοτική. Το μοντέλο με ανεξάρτητη μεταβλητή τηνHeight2Group είναι αυτό που ονομάζουμε μοντέλο ομάδων, καθώς βασίζεται στους μέσους όρους των ομάδων για να προβλέψει το μήκος του αντίχειρα σε κάθε ομάδα (στην προκειμένη περίπτωση, κοντοί και ψηλοί φοιτητές).

Ωστόσο, δεν είναι όλα τα μοντέλα μοντέλα ομάδων. Όταν η ανεξάρτητη μεταβλητή είναι ποσοτική, πρέπει να αλλάξουμε ελαφρώς την προσέγγισή μας. Τα μοντέλα που περιλαμβάνουν ποσοτικές ανεξάρτητες μεταβλητές ονομάζονται συνήθως μοντέλα παλινδρόμησης (regression models).

Το Μοντέλο του Ύψους

Μια ποσοτική μεταβλητή του πλαισίου δεδομένων Fingers που ενδέχεται να εξηγεί μέρος της μεταβλητότητας στο μήκος του αντίχειρα (Thumb) είναι η Height — το ύψος του φοιτητή σε εκατοστά. (Σημείωση: η Height μετριέται σε εκατοστά, ενώ η Thumb σε χιλιοστά.)

Προηγουμένως δημιουργήσαμε ένα διάγραμμα διασποράς που απεικονίζει τη σχέση μεταξύ Thumb και Height. Το επαναλαμβάνουμε παρακάτω:

gf_point(Thumb ~ Height, data = Fingers)
Σχήμα 10.1

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

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

Η ευθεία παλινδρόμησης είναι ο απλούστερος τρόπος να περιγράψουμε τη σχέση μεταξύ δύο ποσοτικών μεταβλητών. Στο παρακάτω διάγραμμα έχουμε προσθέσει τη βέλτιστη ευθεία παλινδρόμησης στο αρχικό διάγραμμα διασποράς. Η γραμμή αυτή δείχνει το προβλεπόμενο μήκος του αντίχειρα ενός φοιτητή με βάση το ύψος του.

Σχήμα 10.2

Θα μάθουμε στη συνέχεια πώς να προσαρμόζουμε ένα μοντέλο παλινδρόμησης — δηλαδή πώς να βρίσκουμε την ευθεία που περιγράφει με τον καλύτερο δυνατό τρόπο τη σχέση μεταξύ δύο μεταβλητών — χρησιμοποιώντας τη R. Πριν το κάνουμε αυτό, αξίζει να τονίσουμε ότι η ευθεία παλινδρόμησης δεν είναι οποιαδήποτε ευθεία, όπως ακριβώς ο μέσος όρος δεν είναι οποιοσδήποτε αριθμός.

Όπως οι μέσοι όροι των ομάδων είναι εκείνα τα σημεία που ελαχιστοποιούν το άθροισμα των τετραγώνων των υπολοίπων σε ένα μοντέλο ομάδων, έτσι και η ευθεία παλινδρόμησης είναι η μοναδική ευθεία — ορισμένη από την κλίση της και το σημείο τομής της με τον άξονα y — για την οποία τα υπόλοιπα είναι ισορροπημένα και το άθροισμα τετραγώνων των υπολοίπων ελαχιστοποιείται.

Ας δούμε πιο αναλυτικά τι σημαίνει αυτό.

Προβλέψεις από το Μοντέλο της Height

Για να προσαρμόσουμε το μοντέλο παλινδρόμησης της Height, θα χρησιμοποιήσουμε τη συνάρτηση lm() με τον ίδιο τρόπο όπως και στα μοντέλα ομάδων. Δεν χρειάζεται να ενημερώσουμε τη R ότι πρόκειται για μοντέλο παλινδρόμησης — θα το αναγνωρίσει αυτόματα, επειδή η ανεξάρτητη μεταβλητή είναι ποσοτική.

Δίνεται ο κώδικας για τη χρήση της lm() για την προσαρμογή του μοντέλου ομάδων με την Height2Group ως ανεξάρτητη μεταβλητή:

lm(Thumb ~ Height2Group, data = Fingers)

Πώς θα το τροποποιούσαμε αν θέλουμε να χρησιμοποιήσουμε την Height αντί για την Height2Group για να εξηγήσουμε τη μεταβλητότητα στην Thumb;

Σωστή απάντηση: Β - lm(Thumb ~ Height, data = Fingers)

Δομή της συνάρτησης lm():

lm(Y ~ X, data = dataset)

Όπου: - Y = Εξαρτημένη μεταβλητή

  • X = Ανεξάρτητη μεταβλητή

  • dataset = Το όνομα του πλαισίου δεδομένων

Η σύνταξη διαβάζεται ως:

«Μοντελοποίησε την Y ως συνάρτηση της X χρησιμοποιώντας δεδομένα από το dataset


10.2 Τι αλλάζει στο ερώτημα;

Αρχικό μοντέλο:

lm(Thumb ~ Height2Group, data = Fingers)
  • Εξαρτημένη (Y): Thumb (μήκος αντίχειρα)

  • Ανεξάρτητη (X): Height2Group (ποιοτική: short/tall)

  • Πλαίσιο δεδομένων: Fingers

Νέο μοντέλο (ζητούμενο):

lm(Thumb ~ Height, data = 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() - Λεπτομέρειες

Γενική μορφή:

model <- lm(outcome ~ predictor, data = dataframe)

Στοιχεία:

  1. outcome (αριστερά του ~):
    • Η εξαρτημένη μεταβλητή

    • Αυτό που θέλουμε να προβλέψουμε ή εξηγήσουμε

    • Στο παράδειγμα: Thumb

  2. predictor (δεξιά του ~):
    • Η ανεξάρτητη μεταβλητή

    • Αυτό που χρησιμοποιούμε για να εξηγήσουμε ή προβλέψουμε

    • Στο αρχικό: Height2Group, στο νέο: Height

  3. data =:
    • Το πλαίσιο δεδομένων που περιέχει τις μεταβλητές

    • Στο παράδειγμα: Fingers

Σύμβολο ~ (tilde):

Διαβάζεται ως “εξηγείται από” ή “ως συνάρτηση του

Thumb ~ Height

Διαβάζεται: - «Η 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: Κατηγορική ανεξάρτητη

model1 <- lm(Thumb ~ Height2Group, data = Fingers)
summary(model1)
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: Ποσοτική ανεξάρτητη

model2 <- lm(Thumb ~ Height, data = Fingers)
summary(model2)
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:

Αντικαθιστούμε μόνο την ανεξάρτητη μεταβλητή (δεξιά του ~)

Σωστή απάντηση:

lm(Thumb ~ Height, data = Fingers)

Γιατί:

✓ Η Thumb παραμένει η εξαρτημένη (outcome) - αυτό που προβλέπουμε

✓ Η Height γίνεται η νέα ανεξάρτητη (predictor) - αντί για την Height2Group

✓ Το Fingers παραμένει το σύνολο δεδομένων

Χρησιμοποιήστε το παρακάτω πλαίσιο κώδικα για να προσαρμόσετε το μοντέλο της Height με τη συνάρτηση lm() και αποθηκεύστε το αποτέλεσμα σε ένα αντικείμενο με όνομα Height_model. Έπειτα, προσθέστε κώδικα που θα δημιουργεί τις τιμές πρόβλεψης του μοντέλου και θα τις αποθηκεύει ως νέα στήλη στο πλαίσιο δεδομένων Fingers. (Υπόδειξη: χρησιμοποιήστε τη συνάρτηση predict() για να δημιουργήσετε τις προβλέψεις.)

Thumb Height Height_predict
1 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")
Σχήμα 10.3

Κάθε τιμή της μεταβλητής 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() στο διάγραμμα διασποράς. Αυτή η συνάρτηση δεν χρειάζεται να της δοθεί κάποιο μοντέλο — το υπολογίζει αυτόματα με βάση τα δεδομένα του διαγράμματος. Ωστόσο, μπορεί να χρησιμοποιηθεί μόνο για μοντέλα παλινδρόμησης.