Εισαγωγή

Η παρούσα εργασία εξετάζει τις δυνατότητες αξιοποίησης ιατρικών δεδομένων που συλλέγονται από συσκευές IoMT (Internet of Medical Things) στο πλαίσιο του μαθήματος Επιχειρηματική Αναλυτική. Στοχεύει να διερευνήσει πώς οι επιχειρήσεις μπορούν να χρησιμοποιήσουν αυτά τα δεδομένα για να βελτιώσουν την υγειονομική περίθαλψη και να αναπτύξουν καινοτόμες λύσεις. Η χρήση συσκευών IoMT έχει τη δυνατότητα να μετασχηματίσει την υγειονομική περίθαλψη, επιτρέποντας την απομακρυσμένη παρακολούθηση ασθενών, την εξατομικευμένη ιατρική και την πρόληψη ασθενειών.

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

Περιγραφή

Αυτή η βάση δεδομένων προσομοιώνει δεδομένα υγείας, αντιπροσωπεύοντας πραγματικά προβλήματα που συναντώνται στην ανάλυση δεδομένων. Τα δεδομένα αυτά προέρχονται από το dataset smartwatch-health-data-uncleaned του Kaggle.

Τρόποι αξιοποίησης

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

Επιπλέον, η συνεχής παρακολούθηση διαφόρων βιομετρικών παραμέτρων μπορεί να λειτουργήσει ως ένα σύστημα έγκαιρης προειδοποίησης για την εξάπλωση μεταδοτικών νόσων ή την εμφάνιση χρόνιων παθήσεων. Μέσω της ανάλυσης μεγάλων δεδομένων (Big Data) και της τεχνητής νοημοσύνης, οι τάσεις που προκύπτουν από τη συλλογή αυτών των μετρήσεων μπορούν να αποκαλύψουν πρώιμα σημάδια επιδημιών ή επιβαρύνσεων της υγείας σε πληθυσμιακό επίπεδο, επιτρέποντας έτσι ταχύτερη και πιο στοχευμένη αντίδραση από τις υγειονομικές αρχές και τους επαγγελματίες υγείας.

Επιχειρηματικά Ερωτήματα

  • Ποια είναι η εκτιμώμενη ετήσια μείωση των εισερχόμενων ασθενών λόγω της χρήσης των IoMT (Internet of Medical Things) και πώς επηρεάζει τη λειτουργική απόδοση των υγειονομικών μονάδων;
  • Ποιες είναι οι συχνότερες νόσοι που αντιμετωπίζονται, ώστε να διαμορφωθεί ένα στοχευμένο πρόγραμμα εκπαίδευσης για το ιατρικό προσωπικό;
  • Ποιες χρονικές περίοδοι παρουσιάζουν αυξημένες ή μειωμένες ανάγκες σε ιατρικό προσωπικό και πώς μπορεί να βελτιστοποιηθεί η διαχείριση του ανθρώπινου δυναμικού;

Περιγραφή μεταβλητών

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

Τα δεδομένα περιέχουν κενές τιμές, λανθασμένες καταχωρίσεις και τυπογραφικά λάθη, όπως καταδεικνύεται στον πίνακα που ακολουθεί:

Unclean Health data view
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

Στατιστικά στοιχεία χαρακτηριστικών:

Summary Statistics of Health Data
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

Διερεύνηση Συσχετίσεων

Correlation Matrix (%)
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%): Υπάρχει μια πολύ μικρή θετική συσχέτιση μεταξύ του αριθμού βημάτων και της διάρκειας του ύπνου. Αυτό θα μπορούσε να υποδηλώνει ότι οι άνθρωποι που είναι πιο δραστήριοι κατά τη διάρκεια της ημέρας δεν σημαίνει οτι κοιμούνται περισσότερο.

Διαγράμματα

Scatterplot

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 ωρών φαίνεται να συγκεντρώνονται σε περιοχές με χαμηλότερες τιμές στον αριθμό των βημάτων.

Βάσει αυτής της οπτικής παρατήρησης, θα μπορούσαμε να υποθέσουμε ότι υπάρχει μια πιθανή μη γραμμική σχέση μεταξύ της διάρκειας του ύπνου και της απόδοσης στο περπάτημα (όπως μετράται από τον αριθμό των βημάτων). Συγκεκριμένα, μια μέτρια διάρκεια ύπνου φαίνεται να σχετίζεται με τη δυνατότητα για μεγαλύτερη δραστηριότητα πεζοπορίας. Ωστόσο, είναι σημαντικό να τονίσουμε ότι αυτή είναι μια παρατήρηση και όχι ένα αποδεδειγμένο αιτιακό συμπέρασμα.

BoxPlot

# 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 ώρες.

Histogram

ggplot(health, aes(Step.Count)) +
  geom_histogram() +
  ggtitle("Step");

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

Bar chart

# 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 για την κατανόηση βασικών παραμέτρων υγείας, αν και απαιτείται περαιτέρω καθαρισμός και προεπεξεργασία των δεδομένων για την εξαγωγή πιο ακριβών συμπερασμάτων. Επιπλέον, η χαμηλή συσχέτιση μεταξύ των περισσότερων μεταβλητών υποδηλώνει ότι απαιτούνται πιο προχωρημένες τεχνικές ανάλυσης, όπως μηχανική μάθηση και πολυπαραγοντική ανάλυση, για την αποκάλυψη πιο πολύπλοκων σχέσεων. Η ενσωμάτωση αυτών των ευρημάτων σε επιχειρηματικές αποφάσεις μπορεί να οδηγήσει σε βελτιωμένες στρατηγικές υγειονομικής περίθαλψης, πρόληψης και διαχείρισης ασθενειών, με απώτερο στόχο τη βελτίωση της ποιότητας ζωής των ασθενών.