Η παρούσα εργασία εξετάζει τη δυνατότητα πρόβλεψης υψηλών ιατρικών δαπανών ενός ασφαλισμένου με βάση προσωπικά και ιατρικά χαρακτηριστικά όπως η ηλικία, το φύλο, το κάπνισμα και ο Δείκτης Μάζας Σώματος. Το dataset που χρησιμοποιείται προέρχεται από ασφαλιστικό φορέα των ΗΠΑ και περιλαμβάνει 1338 παρατηρήσεις.
## 'data.frame': 1338 obs. of 7 variables:
## $ age : int 19 18 28 33 32 31 46 37 37 60 ...
## $ sex : chr "female" "male" "male" "male" ...
## $ bmi : num 27.9 33.8 33 22.7 28.9 ...
## $ children: int 0 1 3 0 0 0 1 3 2 0 ...
## $ smoker : chr "yes" "no" "no" "no" ...
## $ region : chr "southwest" "southeast" "southeast" "northwest" ...
## $ charges : num 16885 1726 4449 21984 3867 ...
## age sex bmi children
## Min. :18.00 Length:1338 Min. :15.96 Min. :0.000
## 1st Qu.:27.00 Class :character 1st Qu.:26.30 1st Qu.:0.000
## Median :39.00 Mode :character Median :30.40 Median :1.000
## Mean :39.21 Mean :30.66 Mean :1.095
## 3rd Qu.:51.00 3rd Qu.:34.69 3rd Qu.:2.000
## Max. :64.00 Max. :53.13 Max. :5.000
## smoker region charges
## Length:1338 Length:1338 Min. : 1122
## Class :character Class :character 1st Qu.: 4740
## Mode :character Mode :character Median : 9382
## Mean :13270
## 3rd Qu.:16640
## Max. :63770
## age sex bmi children smoker region charges
## 1 19 female 27.900 0 yes southwest 16884.924
## 2 18 male 33.770 1 no southeast 1725.552
## 3 28 male 33.000 3 no southeast 4449.462
## 4 33 male 22.705 0 no northwest 21984.471
## 5 32 male 28.880 0 no northwest 3866.855
## 6 31 female 25.740 0 no southeast 3756.622
Το dataset περιλαμβάνει τις εξής μεταβλητές:
age: Ηλικία του ασφαλισμένου
sex: Φύλο (male/female)
bmi: Δείκτης Μάζας Σώματος
children: Αριθμός παιδιών
smoker: Αν είναι καπνιστής (yes/no)
region: Περιοχή διαμονής
charges: Ιατρικές δαπάνες σε δολάρια
Προετοιμασία του συνόλου δεδομένων
Για την εφαρμογή λογιστικής παλινδρόμησης απαιτείται η ύπαρξη μιας
δυαδικής εξαρτημένης μεταβλητής. Στο αρχικό dataset, η μεταβλητή
charges περιέχει τις ιατρικές δαπάνες κάθε ασφαλισμένου σε
συνεχή μορφή (numeric), χωρίς προκαθορισμένες κατηγορίες.
Ως εκ τούτου, δημιουργήθηκε μια νέα δυαδική μεταβλητή
(highCharges), η οποία λαμβάνει τιμή: - 1 όταν
οι ιατρικές δαπάνες υπερβαίνουν τα 15.000$ -
0 σε κάθε άλλη περίπτωση
Η επιλογή του ορίου των 15.000$ βασίστηκε στην
κατανομή των τιμών της charges, όπως φαίνεται από την
περιγραφική στατιστική ανάλυση:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1122 4740 9382 13270 16640 63770
Η μέση τιμή (mean) των δαπανών ανέρχεται σε περίπου 13.270, ενώ η διάμεσος (median) ειναι γύρω στις 9.380.Το ποσό των 15.000 αντιπροσωπεύει ένα ανώτερο ποσοστιαίο σημείο (άνω του 70ου percentile), συνεπώς μπορεί να θεωρηθεί ως λογικό και συντηρητικό όριο για την κατηγοριοποίηση μιας δαπάνης ως “υψηλής”.
Με αυτόν τον τρόπο, εξασφαλίζουμε ότι η νέα μεταβλητή δεν είναι ούτε υπερβολικά σπάνια (θα οδηγούσε σε μοντέλο χωρίς επαρκή “1”), ούτε πολύ κοινή (οπότε δε θα υπήρχε νόημα διάκρισης).
##
## 0 1
## 980 358
Για την εκπαίδευση και αξιολόγηση του μοντέλου, τα δεδομένα διαχωρίζονται σε training και test sets σε αναλογία 65%-35%.. Το seed ορίζεται σε 904 (σύμφωνα με το iis22104).
library(caTools)
set.seed(904)
split <- sample.split(data$highCharges, SplitRatio = 0.65)
train <- subset(data, split == TRUE)
test <- subset(data, split == FALSE)
nrow(train)## [1] 870
## [1] 468
Στο στάδιο αυτό δημιουργείται μοντέλο λογιστικής παλινδρόμησης στο
training set, στο οποίο περιλαμβάνονται όλες οι ανεξάρτητες
μεταβλητές. Η εξαρτημένη μεταβλητή είναι η
highCharges και η ανάλυση πραγματοποιείται με τη χρήση της
glm() με οικογένεια binomial.
##
## Call:
## glm(formula = highCharges ~ . - charges, family = "binomial",
## data = train)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.21659 0.89068 -4.734 2.2e-06 ***
## age 0.02442 0.01049 2.327 0.01995 *
## sexmale -0.21111 0.27996 -0.754 0.45082
## bmi 0.01539 0.02390 0.644 0.51957
## children 0.30900 0.10344 2.987 0.00281 **
## smokeryes 6.98255 0.63575 10.983 < 2e-16 ***
## regionnorthwest 0.19498 0.37628 0.518 0.60434
## regionsoutheast 0.24215 0.37822 0.640 0.52201
## regionsouthwest -0.95855 0.49433 -1.939 0.05249 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1011.07 on 869 degrees of freedom
## Residual deviance: 393.77 on 861 degrees of freedom
## AIC: 411.77
##
## Number of Fisher Scoring iterations: 6
Από το αποτέλεσμα του summary(model_full), παρατηρούμε
τις p-values (Pr(>|z|)) για κάθε ανεξάρτητη
μεταβλητή. Οι μεταβλητές με p-value μικρότερο του 0.05 θεωρούνται
στατιστικά σημαντικές, δηλαδή έχουν ισχυρή
συσχέτιση με την εξαρτημένη highCharges.
Οι μεταβλητές που παρουσιάζουν στατιστικά σημαντική συσχέτιση είναι οι εξής:
smokeryes: p < 2e-16 (*), πολύ
ισχυρή θετική συσχέτιση.children: p = 0.00281 (), δηλώνει ότι
ο αριθμός παιδιών επηρεάζει την πιθανότητα υψηλών δαπανών.age: **p = 0.01995 (*)**, δείχνει ότι όσο αυξάνεται η
ηλικία, αυξάνεται η πιθανότητα υψηλών δαπανών.Οι υπόλοιπες μεταβλητές (sexmale, bmi,
region) έχουν p-value > 0.05 και δεν θεωρούνται
στατιστικά σημαντικές στο παρόν μοντέλο. Αυτό σημαίνει ότι η
συσχέτισή τους με την εξαρτημένη μεταβλητή πιθανόν να είναι τυχαία.
| Μεταβλητή | Συντελεστής | p-value | Σημαντικότητα |
|---|---|---|---|
smokeryes |
6.93 | < 2e-16 | *** (πολύ ισχυρή) |
children |
0.30 | 0.00281 | ** (ισχυρή) |
age |
0.0244 | 0.01995 | * (μέτρια-ισχυρή) |
Σε αυτό το βήμα, χρησιμοποιούμε το μοντέλο λογιστικής παλινδρόμησης που δημιουργήσαμε (στο train set) για να κάνουμε προβλέψεις στο test set. Στη συνέχεια, αξιολογούμε την απόδοσή του με βάση:
Confusion Matrix
Ακρίβεια (Accuracy)
Σε αυτό το βήμα εφαρμόζουμε το μοντέλο στο test set και προβλέπουμε τις πιθανότητες να ισχύει η κατηγορία 1, δηλαδή να έχει κάποιος υψηλές ιατρικές δαπάνες.
# Πρόβλεψη πιθανοτήτων στο test set
predictTest <- predict(model_full, type = "response", newdata = test)
# Εμφάνιση πρώτων τιμών
head(predictTest)## 1 3 4 5 6 12
## 0.93707496 0.11236170 0.04405172 0.04712277 0.05618973 0.99280347
Η συνάρτηση predict() επιστρέφει τις εκτιμώμενες
πιθανότητες να ανήκει κάθε παρατήρηση στην κατηγορία 1
(δηλαδή highCharges = 1). Οι τιμές αυτές κυμαίνονται από 0
έως 1.
Για να μετατραπούν σε κατηγορική πρόβλεψη (0 ή 1), εφαρμόζεται ένα κατώφλι (threshold), το οποίο ορίζεται εδώ ως 0.5: ## 3.2 Μετατροπή σε Κατηγορίες (0/1)
## Actual
## Predicted 0 1
## 0 339 35
## 1 4 90
| Από τον παραπάνω πίνακα ταξινόμησης παρατηρούμε: |
| - True Positives (TP): 90 → σωστές προβλέψεις για άτομα με υψηλές δαπάνες - True Negatives (TN): 339 → σωστές προβλέψεις για άτομα με χαμηλές δαπάνες - False Positives (FP): 35 → προβλέφθηκαν υψηλές δαπάνες ενώ ήταν χαμηλές - False Negatives (FN): 4 → προβλέφθηκαν χαμηλές δαπάνες ενώ ήταν υψηλές |
| Το μοντέλο δείχνει εξαιρετικά καλή επίδοση, με ελάχιστα σφάλματα ταξινόμησης. |
Η συνολική ακρίβεια του μοντέλου, δηλαδή το ποσοστό σωστών προβλέψεων στο test set, υπολογίζεται ως εξής:
## [1] 0.9166667
Το αποτέλεσμα είναι:
Η λογιστική παλινδρόμηση αποδείχθηκε κατάλληλη μέθοδος για την πρόβλεψη υψηλών ιατρικών δαπανών με βάση προσωπικά και ιατρικά χαρακτηριστικά. Το τελικό μοντέλο πέτυχε υψηλή ακρίβεια (91.7%) στο test set, με ελάχιστα σφάλματα.
Οι σημαντικότεροι παράγοντες που σχετίζονται με υψηλές δαπάνες είναι η ηλικία, ο αριθμός παιδιών και κυρίως το αν ο ασφαλισμένος είναι καπνιστής. Το μοντέλο μπορεί να εφαρμοστεί από ασφαλιστικούς φορείς για την κατηγοριοποίηση νέων πελατών σε χαμηλού ή υψηλού ρίσκου όσον αφορά τις δαπάνες υγείας.
Η ROC curve (Receiver Operating Characteristic) μάς βοηθά να αξιολογήσουμε την ποιότητα της ταξινόμησης σε διαφορετικά κατώφλια. Μετράει την ισορροπία μεταξύ True Positive Rate (TPR) και False Positive Rate (FPR).
plot(perf, colorize = TRUE, main = "ROC Curve", lwd = 2)
abline(a = 0, b = 1, lty = 2, col = "gray") # Διαγώνια γραμμή τυχαιότηταςΣυμπεράσματα από ROC Curve & AUC
Το AUC (Area Under Curve) του μοντέλου είναι κοντά στο 0.95, που αποτελεί εξαιρετικό αποτέλεσμα. Ένα AUC κοντά στο 1.0 δηλώνει πολύ καλή διακριτική ικανότητα — δηλαδή, το μοντέλο μπορεί να ξεχωρίσει αποτελεσματικά τις περιπτώσεις με υψηλές από εκείνες με χαμηλές χρεώσεις.
Συμπέρασμα: Το μοντέλο λογιστικής παλινδρόμησης επιδεικνύει πολύ καλή ταξινομητική απόδοση, με υψηλή ικανότητα πρόβλεψης, κάτι που το καθιστά αξιόπιστο για την εκτίμηση του κινδύνου υψηλών ιατρικών δαπανών βάσει των διαθέσιμων χαρακτηριστικών.