/datasharing

The Leek group guide to data sharing

Πώς να δώσετε ένα data set σε έναν αναλυτή δεδομένων

Αυτός ο οδηγός απευθύνεται σε αυτούς που χρειάζονται ανάλυση ενός data set από κάποιον αναλυτή. Το κοινό στο οποίο στοχεύουμε είναι:

  • Εργαζόμενοι οι οποίοι χρειάζονται κάποιον να αναλύσει τα δεδομένα τους
  • Φοιτητές ή μεταπτυχιακοί διαφόρων ειδικοτήτων που ψάχνουν για συμβουλές
  • Φοιτητές στατιστικής που θέλουν να συλλέξουν/καθαρίσουν/ενώσουν data sets

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

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

Τι πρέπει να παραδώσετε στον αναλυτή

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

  1. Το ακατέργαστο data set (raw data set).
  2. Το τακτοποιημένο data set (στο οποίο από δω και πέρα θα αναφερόμαστε ως tidy data set).
  3. Ένα κείμενο που περιγράφει κάθε μεταβλητή και τις αντίστοιχες τιμές της στο tidy data set, το οποίο ονομάζεται code book.
  4. Την ακριβή διαδικασία που κάνατε για να πάτε από το βήμα 1 στα 2,3

Ας δούμε ξεχωριστά το κάθε κομμάτι του data set που θα παραδώσετε στον αναλυτή.

Τα ακατέργαστα δεδομένα

Είναι πολύ σημαντικό να συμπεριλάβετε στο πακέτο δεδομένων που θα δώσετε στον αναλυτή και τα ακατέργαστα δεδομένα. Έτσι είναι σίγουρο ότι δεν θα χαθεί η προέλευση τους. Παρακάτω μπορείτε να δείτε μερικά παραδείγματα τέτοιων δεδομένων:

  • Το περίεργο δυαδικό αρχείο (binary file) που παράγει η μηχανή μετρήσεών σας
  • Το μη μορφοποιημένο αρχείο Excel με τα 10 φύλλα εργασίας που θα σας στείλει η εταιρεία με την οποία συνεργάζεστε
  • Τα περίπλοκα δεδομένα JSON που πήρατε από το Twitter API
  • Τους χειρόγραφους αριθμούς που καταγράψατε παρατηρώντας κάτι σε ένα μικροσκόπιο

Μπορείτε να είστε σίγουροι ότι τα δεδομένα σας είναι ακατέργαστα αν:

  1. Δεν έχετε επεξεργαστεί τα δεδομένα με κάποιο λογισμικό
  2. Δεν έχετε αλλάξει τις τιμές των δεδομένων από μόνοι σας
  3. Δεν έχετε διαγράψει κάποιο δεδομένο από το σύνολο δεδομένων
  4. Δεν έχετε μικρύνει τον όγκο των δεδομένων με οποιονδήποτε τρόπο

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

Το tidy data set (τακτοποιημένο data set)

Οι γενικές αρχές ενός tidy data set, δίνονται από τον Hadley Wickham σ'αυτή την εργασία του καθώς και σε αυτό το video. Στην εργασία και στο video περιγράφονται tidy data sets στα οποία η επεξεργασία έχει γίνει με R αλλά οι ίδιες αρχές που μπορείτε να δείτε παρακάτω, εφαρμόζονται και πιο γενικά:

  1. Κάθε μεταβλητή που μελετάτε πρέπει να είναι σε μια στήλη
  2. Κάθε διαφορετική παρατήρηση για μια μεταβλητή πρέπει να είναι σε διαφορετική σειρά
  3. Θα πρέπει να υπάρχει ένας πίνακας για κάθε διαφορετικό "τύπο" μεταβλητής
  4. Αν έχετε πολλούς πίνακες, θα πρέπει να περιλαμβάνουν και μια γραμμή η οποία θα τους επιτρέπει να ενωθούν ή να συγχωνευτούν

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

Ας δούμε ένα παράδειγμα από την γονιδιωματική (genomics). Υποθέστε ότι για 20 ανθρώπους έχετε συλλέξει μετρήσεις έκφρασης γονιδίων με RNA-αλληλούχιση (RNA-sequencing). Ακόμη, έχετε συλλέξει δημογραφικές και κλινικές πληροφορίες για την ηλικία τους, τις θεραπείες και τις διαγνώσεις τους. Σ'αυτή την περίπτωση θα είχατε έναν πίνακα/φύλλο δεδομένων το οποίο θα περιείχε όλες τις κλινικές/δημογραφικές πληροφορίες. Θα είχε τέσσερις στήλες (ταυτότητα ασθενούς, ηλικία, θεραπεία, διάγνωση) και 21 γραμμές (μια γραμμή με τα ονόματα των μεταβλητών και είκοσι ακόμη γραμμές, μια για τον κάθε ασθενή). Τέλος θα είχατε ένα ακόμη φύλλο δεδομένων το οποίο θα περιείχε μια σύνοψη όλων των γονιδιακών δεδομένων. Συνήθως αυτού του είδους τα δεδομένα, συνοψίζονται με βάσει τα εξώνια. Δηλαδή, αν είχατε 100.000 εξώνια τότε θα είχατε και έναν πίνακα/φύλλο δεδομένων με 21 γραμμές (μια για τα ονόματα των γονιδίων και μια για κάθε ασθενή) και 100.001 στήλες (μια γραμμή για κάθε ασθενή και μια για κάθε τύπο δεδομένων).

Γενικά, αν παραδώσετε τα δεδομένα σας σε Excel, θα πρέπει να υπάρχει ένα αρχείο Excel ανά πίνακα. Καλύτερα να μην υπάρχουν πολλαπλά φύλλα εργασίας, να μην έχουν εφαρμοστεί εντολές macros στα δεδομένα και να μην υπάρχουν διαφορετικά μορφοποιημένες σειρές/στήλες. Εναλλακτικά, μπορείτε να παραδώσετε τα δεδομένα σας σε μορφή CSV ή σε αρχείο κειμένου TAB-delimited . (Λάβετε υπόψη ότι η ανάγνωση αρχείων CSV από το Excel, μπορεί μερικές φορές να οδηγήσει σε κακή διαχείριση μεταβλητών ώρας και ημερομηνίας.)

To "code book"

Για σχεδόν οποιοδήποτε data set, οι μετρήσεις που κάνετε, θα πρέπει να περιγραφούν με περισσότερες λεπτομέρειες από αυτές που έχετε δώσει στα φύλλα δεδομένων. Αυτές οι πληροφορίες περιέχονται στο code book. Τα λιγότερα που θα πρέπει να περιέχει είναι:

  1. Πληροφορίες για τις μεταβλητές (συμπεριλαμβανομένου και των μονάδων μέτρησης!) του data set, οι οποίες δεν περιλαμβάνονται στα tidy data.
  2. Πληροφορίες για τις επιλογές που κάνατε σχετικά με την σύνοψη των δεδομένων.
  3. Πληροφορίες για το πειραματικό μοντέλο μελέτης που χρησιμοποιήσατε.

Στο παραπάνω παράδειγμα γονιδιακής μελέτης, ο αναλυτής θα θέλει να ξέρει την μονάδα μέτρησης για κάθε κλινική/δημογραφική μεταβλητή (ηλικία σε χρόνια, θεραπεία σε όνομα/δόση, στάδιο διάγνωσης κλπ). Θα θέλει ακόμα να γνωρίζει το πως επιλέξατε τα εξώνια που χρησιμοποιήσατε για την σύνοψη των δεδομένων (UCSC/Ensembl, κλπ.). Τέλος θα θέλει πληροφορίες για το πως έγινε η καταγραφή και η μελέτη των δεδομένων. Για παράδειγμα, είναι οι ασθενείς που μελετούνται οι πρώτοι 20 έτυχε να μπουν στην κλινική; Μήπως επιλέχθηκαν με βάσει κάποια χαρακτηριστικά, όπως πχ η ηλικία; Οι θεραπείες τους έχουν διανεμηθεί τυχαία;

Η συνηθισμένη μορφή ενός τέτοιου εγγράφου είναι ένα αρχείο Word. Μέσα σε αυτό θα πρέπει να υπάρχει μια ενότητα με όνομα "Μοντέλο Μελέτης", στην οποία θα περιέχεται μια λεπτομερής περιγραφή του πως καταγράφηκαν τα δεδομένα. Σε μια άλλη ενότητα με όνομα "Code book", θα περιγράφονται οι μεταβλητές και οι μονάδες μέτρησής τους.

Πώς να κωδικοποιήσετε μεταβλητές

Όταν βάζετε μεταβλητές σ'ένα φύλλο δεδομένων, θα πρέπει να αποφασίσετε ανάμεσα σε διάφορες κατηγορίες ανάλογα με τον τύπο τους:

  1. Συνεχείς
  2. Σε σειρά
  3. Ανα κατηγορία
  4. Απούσες
  5. Ελλειπείς

Οι συνεχείς μεταβλητές είναι αυτές που μετρούνται σε ποσοτική κλίμακα και θα μπορούσαν αναπαρασταθούν από κάποιον κλασματικό αριθμό. Για παράδειγμα, κάτι που ματριέται σε κιλά, δηλαδή το βάρος, είναι μια τέτοια μεταβλητή. Τα δεδομένα σε σειρά (Ordinal data) είναι αυτά που έχουν έναν σταθερό και μικρό αριθμό (< 100) επιπέδων και τα επίπεδα αυτά είναι ταξινομημένα με την σειρά. Για παράδειγμα, μια τέτοια περίπτωση είναι μια έρευνα όπου οι επιλογές απάντησης είναι: κακό, μέτριο, καλό. Τα δεδομένα ανα κατηγορία (Categorical data) είναι αυτά για τα οποία υπάρχουν πολλές κατηγορίες αλλά δεν είναι ταξινομημένα. Ένα τέτοιο παράδειγμα είναι το φύλλο: Αρσενικό ή θηλυκό. Αυτός ό τύπος κωδικοποίησης είναι βολικός γιατί εξηγεί τον εαυτό του. Τα απόντα δεδομένα (Missing data) είναι αυτά που δεν έχουν ερευνηθεί γιατί για κάποιον λόγο δεν έχουν καταγραφεί. Μπορείτε να κωδικοποιείτε τις απούσες αυτές τιμές με το όνομα NA (Not Available). Τα ελλειπή δεδομένα (Censored data) είναι αυτά για τα οποία ξέρετε μέχρι έναν βαθμό για ποιόν λόγο δεν είναι ολοκληρωμένα. Κοινά παραδείγματα τέτοιων περιπτώσεων είναι πχ όταν οι τιμές μια μέτρησης είναι μικρότερες απ'ότι μπορούν να ανιχνευθούν ή όταν ένας ασθένης δεν παρουσιάζεται σε όλες τις συνεδρίες εξέτασης. Αυτά τα δεδομένα θα πρέπει επίσης να κατηγοριοποιηθούν με το όνομα NA. Θα πρέπει όμως να προσθέσετε και μια νέα στήλη στα tidy data σας, με όνομα "VariableNameCensored" η οποία θα έχει την τιμή TRUE αν τα δεδομένα είναι ελλειπή ή FALSE αν δεν είναι. Στο code book θα πρέπει να εξηγείτε για ποιον λόγο λείπουν αυτές οι τιμές. Είναι πολύ σημαντικό να αναφέρετε στον αναλυτή τον λόγο για τον οποίο λείπουν κάποια δεδομένα. Ακόμη, δεν θα πρέπει να αντικαθιστάτε (impute)/αλλάζετε/διαγράφετε ελλειπείς παρατηρήσεις.

Γενικά, για τις μεταβλητές που ταξινομούνται ανα κατηγορία και σ'αυτές σε σειρά, καλό θα είναι τα ονόματά τους να είναι λέξεις και όχι αριθμοί. Όταν καταγράφετε τις τιμές του φύλλου των ασθενών σ'ένα tidy data set, καλό θα ήταν οι επιλογές να είναι "αρσενικό" ή "θυληκό". Για τις μεταβλητές της κατηγορίας "σε σειρά", οι τιμές στο data set θα πρέπει να είναι "κακό", "μέτριο" και "καλό" και όχι 1, 2, 3. Έτσι, μπορείτε να αποφύγετε πιθανά μπερδέματα σχετικά με την κατεύθυνση των πιθανών απαντήσεων (πχ το νόημά τους γίνεται καλύτερο ή χειρότερο) αλλά και να αναγνωρίσετε λάθη στις αποδόσεις ονομάτων στις μεταβλητές.

Τέλος, πάντα να καταγράφετε σε κείμενο όλες τις πληροφορίες σχετικά με τις παρατηρήσεις σας. Για παράδειγμα, αν αποθηκεύετε δεδομένα στο Excel και χρησιμοποιείτε μορφοποίηση με χρωματιστό κείμενο ή χρωματιστό φόντο στα κελιά ώστε να υποδείξετε κάτι για μια παρατήρηση (πχ οι κόκκινες μεταβλητές αντιστοιχούν στο πείραμα 1) τότε αυτές οι πληροφορίες δεν θα μεταφερθούν (και θα χαθούν) όταν όταν το αρχείο μετατραπεί σε απλό κείμενο. Κάθε πληροφορία θα πρέπει να είναι καταγεγραμμένη σε κείμενο έτσι ώστε να μην χαθεί σε περίπτωση μετατροπής του αρχείου.

Η λίστα με τις οδηγίες

Ίσως το'χετε ξανακούσει αλλά η αναπαραγωγικότητα στις υπολογιστικές επιστήμες είναι πολύ σημαντική. Αυτό σημαίνει ότι όταν δημοσιοποιήσετε κάποια εργασία σας, οι εξεταστές και οποιοσδήποτε άλλος ασχοληθεί μ'αυτήν, θα πρέπει να μπορούν να καταλήξουν ακριβώς στην ίδια ανάλυση με εσάς, ξεκινώντας από τα ακατέργαστα δεδομένα και φτάνοντας μέχρι το τελικό αποτέλεσμα. Αν θέλετε η ανάλυσή σας να είναι πλήρης, τότε το πιο πιθανό είναι ότι θα συμπεριλάβετε και μια σύνοψη/τα βήματα της ανάλυσης δεδομένων πριν αυτά μετατραπούν σε tidy data.

Το καλύτερο που μπορείτε να κάνετε πριν την σύνοψη είναι να δημιουργήσετε ένα script (σε R, Python, ή κάποια άλλη γλώσσα) το οποίο θα παίρνει τα ακατέργαστα δεδομένα ως είσοδο και θα παράγει τα tidy data ως έξοδο. Καλό είναι να τρέξετε το script σας μερικές φορές ώστε να βεβαιωθείτε ότι τα αποτελέσματα είναι πάντα ίδια.

Τις περισσότερες φορές, αυτός που συλλέγει τα δεδομένα είναι και αυτός που φτιάχνει το tidy data set για τον αναλυτή ώστε να επιταχύνει την διαδικασία της συνεργασίας τους. Όμως μπορεί να μην ξέρει πως να προγραμματίσει ένα script. Σ'αυτή την περίπτωση, αυτό που πρέπει να δωθεί στον αναλυτή είναι ο ψευδοκώδικας (pseudocode). Η διαδικασία θα πρέπει να είναι η εξής:

  1. Βήμα 1 - πάρτε το ακατέργαστο αρχείο και τρέξτε την έκδοση 3.1.2 του λογισμικού σύνοψης, με παραμέτρους a=1, b=2, c=3
  2. Βήμα 2 - τρέξτε το λογισμικό ξεχωριστά για κάθε δείγμα.
  3. Βήμα 3 - πάρτε την τρίτη στήλη από κάθε outputfile.out και αυτή είναι και η αντίστοιχη γραμμή στο τελικό data set

Ακόμη, θα πρέπει να συμπεριλάβετε πληροφορίες για το λειτουργικό σύστημα που χρησιμοποιήσατε (Mac/Windows/Linux) και για το αν τρέξατε το λογισμικό παραπάνω από μια φορά για να επιβεβαιώσετε ότι κάθε φορά παράγονται τα ίδια αποτελέσματα. Ιδανικά, μπορείτε να ζητήσετε από κάποιον συμφοιτητή/συνεργάτη σας να επιβεβαιώσει ότι παίρνει και αυτός το ίδιο αρχείο εξόδου με εσάς.

Τι να περιμένετε από τον αναλυτή

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

Μετά, να περιμένετε από τον αναλυτή τα εξής:

  1. Ένα script ανάλυσης που εκτελεί κάθε μια από τις αναλύσεις (όχι μόνο οδηγίες)
  2. Τον ακριβή κώδικα που χρησιμοποίησαν για τις αναλύσεις
  3. Όλα τα αρχεία/αριθμητικά δεδομένα που παράχθηκαν ως έξοδοι.

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

Contributors