Η παρούσα εργασία εξετάζει τις δυνατότητες αξιοποίησης ιατρικών δεδομένων που συλλέγονται από συσκευές IoMT (Internet of Medical Things) στο πλαίσιο του μαθήματος Επιχειρηματική Αναλυτική. Στοχεύει να διερευνήσει πώς οι επιχειρήσεις μπορούν να χρησιμοποιήσουν αυτά τα δεδομένα για να βελτιώσουν την υγειονομική περίθαλψη και να αναπτύξουν καινοτόμες λύσεις. Η χρήση συσκευών IoMT έχει τη δυνατότητα να μετασχηματίσει την υγειονομική περίθαλψη, επιτρέποντας την απομακρυσμένη παρακολούθηση ασθενών, την εξατομικευμένη ιατρική και την πρόληψη ασθενειών.
Η εργασία αναλύει τους διαφορετικούς τρόπους αξιοποίησης δεδομένων IoMT, παρουσιάζοντας τις εφαρμογές και τα οφέλη τους. Επιπλέον, θέτει ερωτήματα σχετικά με το πώς οι επιχειρήσεις μπορούν να αξιοποιήσουν τα δεδομένα αυτά σε επιχειρηματικές αποφάσεις. Τέλος, η εργασία παρουσιάζει στατιστικά στοιχεία και διαγράμματα που αποκαλύπτουν μοτίβα και τάσεις στα δεδομένα των ασθενών, παρέχοντας πληροφορίες για τη λειτουργία και την υγεία τους. Η ανάλυση αυτών των δεδομένων μπορεί να βοηθήσει τις επιχειρήσεις να αναπτύξουν καινοτόμες λύσεις για τη βελτίωση της υγειονομικής περίθαλψης.
Αυτή η βάση δεδομένων προσομοιώνει δεδομένα υγείας, αντιπροσωπεύοντας πραγματικά προβλήματα που συναντώνται στην ανάλυση δεδομένων. Τα δεδομένα αυτά προέρχονται από το dataset smartwatch-health-data-uncleaned του Kaggle.
Η ανάλυση αυτών των δεδομένων προσφέρει σημαντικά πλεονεκτήματα στους ασθενείς, τόσο σε ατομικό όσο και σε συλλογικό επίπεδο. Οι ασύρματες τεχνολογίες επιτρέπουν τη συνεχή και εξατομικευμένη παρακολούθηση της υγείας των ασθενών μέσω ανατροφοδότησης και καθοδήγησης, δίνοντάς τους τη δυνατότητα να ελέγχουν κρίσιμες μετρήσεις, όπως η αρτηριακή πίεση, οποιαδήποτε στιγμή το επιθυμούν. Επιπλέον, τα δεδομένα που συλλέγονται σε πραγματικό χρόνο μπορούν να συμβάλουν στην έγκαιρη ανίχνευση επιδεινούμενων καταστάσεων, αποτρέποντας επείγοντα περιστατικά και επιτρέποντας την άμεση ενημέρωση των γιατρών, ώστε να παρέμβουν όταν χρειάζεται.
Επιπλέον, η συνεχής παρακολούθηση διαφόρων βιομετρικών παραμέτρων μπορεί να λειτουργήσει ως ένα σύστημα έγκαιρης προειδοποίησης για την εξάπλωση μεταδοτικών νόσων ή την εμφάνιση χρόνιων παθήσεων. Μέσω της ανάλυσης μεγάλων δεδομένων (Big Data) και της τεχνητής νοημοσύνης, οι τάσεις που προκύπτουν από τη συλλογή αυτών των μετρήσεων μπορούν να αποκαλύψουν πρώιμα σημάδια επιδημιών ή επιβαρύνσεων της υγείας σε πληθυσμιακό επίπεδο, επιτρέποντας έτσι ταχύτερη και πιο στοχευμένη αντίδραση από τις υγειονομικές αρχές και τους επαγγελματίες υγείας.
| Features | Description |
|---|---|
User ID |
Unique ID for each smartwatch user. |
Heart Rate (BPM) |
User’s heart rate in beats per minute |
Blood Oxygen Level (%) |
Percentage of oxygen saturation in the blood |
Step Count |
Number of steps taken per day |
Sleep Duration (hours) |
Total sleep duration in hours |
Activity Level |
Categorized as Sedentary, Active, or Highly Active |
Stress Level |
Subjective stress rating from 1 to 10 |
Τα δεδομένα περιέχουν κενές τιμές, λανθασμένες καταχωρίσεις και τυπογραφικά λάθη, όπως καταδεικνύεται στον πίνακα που ακολουθεί:
| User.ID | Heart.Rate | Blood.Oxygen | Step.Count | Sleep.Duration | Activity.Level | Stress.Level |
|---|---|---|---|---|---|---|
| 4174 | 58.93978 | 98.80965 | 5450.3906 | 7.167235622316564 | Highly Active | 1 |
| NA | NA | 98.53220 | 727.6016 | 6.538239375570314 | Highly_Active | 5 |
| 1860 | 247.80305 | 97.05295 | 2826.5220 | ERROR | Highly Active | 5 |
| 2294 | 40.00000 | 96.89421 | 13797.3380 | 7.367789630207228 | Actve | 3 |
| 2130 | 61.95017 | 98.58380 | 15679.0676 | Highly_Active | 6 |
Στατιστικά στοιχεία χαρακτηριστικών:
| User.ID | Heart.Rate | Blood.Oxygen | Step.Count | Sleep.Duration | Activity.Level | Stress.Level | |
|---|---|---|---|---|---|---|---|
| Min. :1001 | Min. : 40.00 | Min. : 90.79 | Min. : 0.91 | Min. :-0.1945 | Length:10000 | Length:10000 | |
| 1st Qu.:1998 | 1st Qu.: 64.89 | 1st Qu.: 96.66 | 1st Qu.: 2021.04 | 1st Qu.: 5.4938 | Class :character | Class :character | |
| Median :2998 | Median : 75.22 | Median : 98.01 | Median : 4962.53 | Median : 6.5033 | Mode :character | Mode :character | |
| Mean :3007 | Mean : 76.04 | Mean : 97.84 | Mean : 6985.69 | Mean : 6.5055 | NA | NA | |
| 3rd Qu.:4004 | 3rd Qu.: 85.20 | 3rd Qu.: 99.38 | 3rd Qu.: 9724.90 | 3rd Qu.: 7.5294 | NA | NA | |
| Max. :4999 | Max. :296.59 | Max. :100.00 | Max. :62486.69 | Max. :12.1402 | NA | NA | |
| NA’s :201 | NA’s :400 | NA’s :300 | NA’s :100 | NA’s :397 | NA | NA |
central_tendency_data <- data.frame(
Mean = round(sapply(health[, 2:5], mean, na.rm = TRUE), digits = 2),
Median = round(sapply(health[, 2:5], median, na.rm = TRUE), digits = 2),
Most_Frequent = sapply(round(health[, 2:5], digits = 2), function(x) {
as.numeric(names(sort(table(x), decreasing = TRUE)[1]))
})
)
kable(central_tendency_data, caption = "Μέτρα Κεντρικής Τάσης")
| Mean | Median | Most_Frequent | |
|---|---|---|---|
| Heart.Rate | 76.04 | 75.22 | 40.00 |
| Blood.Oxygen | 97.84 | 98.01 | 100.00 |
| Step.Count | 6985.69 | 4962.53 | 9864.28 |
| Sleep.Duration | 6.51 | 6.50 | 5.83 |
dispersion_data <- data.frame(
Standard_Deviation = round(sapply(health[, 2:5], sd, na.rm = TRUE), digits= 2),
Variance = round(sapply(health[, 2:5], var, na.rm = TRUE), digits= 2),
Range_Min = round(sapply(health[, 2:5], function(x) min(x, na.rm = TRUE)), digits=2),
Range_Max = round(sapply(health[, 2:5], function(x) max(x, na.rm = TRUE)), digits= 2)
)
kable(dispersion_data, caption = "Μέτρα Διασποράς")
| Standard_Deviation | Variance | Range_Min | Range_Max | |
|---|---|---|---|---|
| Heart.Rate | 19.41 | 376.84 | 40.00 | 296.59 |
| Blood.Oxygen | 1.73 | 3.00 | 90.79 | 100.00 |
| Step.Count | 6885.81 | 47414374.95 | 0.91 | 62486.69 |
| Sleep.Duration | 1.51 | 2.28 | -0.19 | 12.14 |
| Heart.Rate | Blood.Oxygen | Step.Count | Sleep.Duration | |
|---|---|---|---|---|
| Heart.Rate | 100.00 | -2.27 | 1.08 | 0.80 |
| Blood.Oxygen | -2.27 | 100.00 | 0.31 | 0.29 |
| Step.Count | 1.08 | 0.31 | 100.00 | 0.41 |
| Sleep.Duration | 0.80 | 0.29 | 0.41 | 100.00 |
Heart.Rate και Blood.Oxygen (-2.27%): Υπάρχει μια μικρή αρνητική συσχέτιση μεταξύ του καρδιακού ρυθμού και του οξυγόνου στο αίμα. Αυτό σημαίνει ότι, σε γενικές γραμμές, όταν ο καρδιακός ρυθμός τείνει να είναι υψηλότερος, το οξυγόνο στο αίμα τείνει να είναι πολύ ελαφρώς χαμηλότερο, και αντίστροφα.
Heart.Rate και Step.Count (1.08%): Υπάρχει μια πολύ μικρή θετική συσχέτιση μεταξύ του καρδιακού ρυθμού και του αριθμού βημάτων. Αυτό υποδηλώνει ότι, σε γενικές γραμμές, όταν ο αριθμός των βημάτων αυξάνεται, ο καρδιακός ρυθμός τείνει να αυξάνεται ελαφρώς.
Heart.Rate και Sleep.Duration (0.80%): Παρατηρείται μια πολύ μικρή θετική συσχέτιση μεταξύ του καρδιακού ρυθμού και της διάρκειας του ύπνου.
Blood.Oxygen και Step.Count (0.31%): Υπάρχει μια αμελητέα θετική ή μηδενική συσχέτιση μεταξύ του οξυγόνου στο αίμα και του αριθμού βημάτων. Οι μεταβλητές αυτές είναι ανεξάρτητες μεταξύ τους.
Blood.Oxygen και Sleep.Duration (0.29%): Παρομοίως, υπάρχει μια μηδενική συσχέτιση μεταξύ του οξυγόνου στο αίμα και της διάρκειας του ύπνου δηλώνοντας, την ανεξαρτησία των δυο αυτών μεταβλητών.
Step.Count και Sleep.Duration (0.41%): Υπάρχει μια πολύ μικρή θετική συσχέτιση μεταξύ του αριθμού βημάτων και της διάρκειας του ύπνου. Αυτό θα μπορούσε να υποδηλώνει ότι οι άνθρωποι που είναι πιο δραστήριοι κατά τη διάρκεια της ημέρας δεν σημαίνει οτι κοιμούνται περισσότερο.
ggplot(health, aes(x=Step.Count, y=Sleep.Duration)) +
geom_point() +
ggtitle("Sleep Duration - Steps Scatterplot");
Παρατηρώντας το διάγραμμα, διακρίνουμε μια συγκέντρωση των σημείων
δεδομένων που σχηματίζει ένα σχήμα που θα μπορούσε να ερμηνευτεί ως μια
περιοχή αυξημένης πυκνότητας. Ειδικότερα, φαίνεται ότι τα άτομα με
διάρκεια ύπνου (Sleep.Duration) περίπου μεταξύ 4 και 8.5
ωρών τείνουν να παρουσιάζουν ένα ευρύτερο φάσμα τιμών στον αριθμό των
βημάτων (Step.Count), συμπεριλαμβανομένων και υψηλότερων
τιμών.
Αντίστοιχα, άτομα με διάρκεια ύπνου μικρότερη των 4 ωρών ή μεγαλύτερη των 8.5 ωρών φαίνεται να συγκεντρώνονται σε περιοχές με χαμηλότερες τιμές στον αριθμό των βημάτων.
Βάσει αυτής της οπτικής παρατήρησης, θα μπορούσαμε να υποθέσουμε ότι υπάρχει μια πιθανή μη γραμμική σχέση μεταξύ της διάρκειας του ύπνου και της απόδοσης στο περπάτημα (όπως μετράται από τον αριθμό των βημάτων). Συγκεκριμένα, μια μέτρια διάρκεια ύπνου φαίνεται να σχετίζεται με τη δυνατότητα για μεγαλύτερη δραστηριότητα πεζοπορίας. Ωστόσο, είναι σημαντικό να τονίσουμε ότι αυτή είναι μια παρατήρηση και όχι ένα αποδεδειγμένο αιτιακό συμπέρασμα.
# Changing typo names
correct_names <- c("Active", "Highly_Active", "Sedentary")
health$Activity.Level <- correct_names[amatch(health$Activity.Level, correct_names, maxDist = 2)]
# Graph
ggplot(health, aes(x=Activity.Level, y=Sleep.Duration)) +
geom_boxplot() +
ggtitle("Activity - Sleep Duration");
Το παραπάνω διάγραμμα απεικονίζει την κατανομή του αριθμού των
βημάτων (Step.Count) για διαφορετικά επίπεδα δραστηριότητας
(Activity.Level): Active (Ενεργός),
Highly_Active (Πολύ Ενεργός), Sedentary
(Καθιστικός) και NA (Άγνωστο). Πρόκειται για ένα boxplot,
το οποίο μας παρέχει πληροφορίες για τη διάμεσο, τα τεταρτημόρια και τις
ακραίες τιμές (outliers) για κάθε ομάδα. Σε αυτήν την περίπτωση
παρατηρείται, σε όλες τις ομάδες των δραστηριοτήτων, τα άτομα κοιμούνται
μεταξύ 4.7 με 5.7 ώρες.
ggplot(health, aes(Step.Count)) +
geom_histogram() +
ggtitle("Step");
Το παραπάνω διάγραμμα απεικονίζει την κατανομή του αριθμού των βημάτων στο σύνολο των χρηστών που περιλαμβάνονται στο δείγμα. Παρατηρούμε μια υψηλή συχνότητα χρηστών που πραγματοποιούν περίπου 5000 βήματα. Στη συνέχεια, η συχνότητα των χρηστών τείνει να μειώνεται καθώς αυξάνεται ο αριθμός των βημάτων, παρουσιάζοντας μια φθίνουσα τάση που τείνει στο 0.
# Sort levels
health <- health %>%
mutate(Stress.Level = fct_relevel(as.factor(Stress.Level), as.character(sort(as.numeric(unique(Stress.Level))))))
# plot graph
ggplot(health, aes(x = Stress.Level)) +
geom_bar()+
ggtitle("Stress Level");
Το παραπάνω ραβδόγραμμα (bar chart) παρουσιάζει τη συχνότητα εμφάνισης (πλήθος) ατόμων σε κάθε επίπεδο stress. Με μια πρώτη ματιά, φαίνεται ότι δεν υπάρχουν δραματικές διαφορές στο πλήθος των ατόμων μεταξύ των διαφόρων επιπέδων stress. Ωστόσο, παρατηρούμε ότι τα επίπεδα stress 2, 4, 6 και 7 συγκεντρώνουν σχετικά υψηλότερο πλήθος ατόμων σε σύγκριση με τα υπόλοιπα επίπεδα.
Συνοψίζοντας, η παρούσα μελέτη ανέδειξε τη δυνατότητα αξιοποίησης των δεδομένων IoMT για την κατανόηση βασικών παραμέτρων υγείας, αν και απαιτείται περαιτέρω καθαρισμός και προεπεξεργασία των δεδομένων για την εξαγωγή πιο ακριβών συμπερασμάτων. Επιπλέον, η χαμηλή συσχέτιση μεταξύ των περισσότερων μεταβλητών υποδηλώνει ότι απαιτούνται πιο προχωρημένες τεχνικές ανάλυσης, όπως μηχανική μάθηση και πολυπαραγοντική ανάλυση, για την αποκάλυψη πιο πολύπλοκων σχέσεων. Η ενσωμάτωση αυτών των ευρημάτων σε επιχειρηματικές αποφάσεις μπορεί να οδηγήσει σε βελτιωμένες στρατηγικές υγειονομικής περίθαλψης, πρόληψης και διαχείρισης ασθενειών, με απώτερο στόχο τη βελτίωση της ποιότητας ζωής των ασθενών.