ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Ανάλυση Δεδομένων και Έλεγχος Υποθέσεων με τεχνολογία Python/pandas Σταύρος Δημητριάδης Αν. Καθ., Τμήμα Πληροφορικής, ΑΠΘ sdemetri@csd.auth.gr http://mlab.csd.auth.gr/sdemetri http://pytolearn.csd.auth.gr
Σκοπός του Εργαστηρίου Εισαγωγή στο οικοσύστημα ανοικτών τεχνολογιών python/pandas ώστε να: Α) Διαβάζουμε δεδομένα αρχεία txt, xls, csv Β) Οργανώνουμε & Αναλύουμε δεδομένα python/pandas Γ) Εφαρμόζουμε μεθόδους επαγωγικής στατιστικής (t-test, ANOVA) Scipy
Περιεχόμενα (A) Python και Έλεγχος υποθέσεων (αρχείο Part_A_etpe2017.html) 1. Τι είναι το οικοσύστημα Python: Anaconda και Jupyter Notebook 2. Πώς χρησιμοποιούμε τις δομές δεδομένων στη βασική Python Λίστες, Λεξικά 3. Τι είναι ο έλεγχος υποθέσεων Γιατί χρειαζόμαστε τη Scipy; Παράδειγμα εφαρμογής: t-test 4. Τι είναι η Numpy και πώς χρησιμοποιούμε Πίνακες 5. Πώς κάνουμε γραφικές παραστάσεις με την Matplotlib (B) Η βιβλιοθήκη pandas στην Ανάλυση δεδομένων (αρχείο Part_B_etpe2017.html) 6. Τι είναι οι βασικές δομές της pandas Series και DataFrame 7. Πώς αναλύονται τα δεδομένα με την pandas; 8. Παραδείγματα με εκπαιδευτικά δεδομένα t-test: Independent, Paired, One way Chi squared test ANOVA: Εκπαιδευτικό υλικό: http://pytolearn.csd.auth.gr/
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Το οικοσύστημα Python: Anaconda και Jupyter Notebook
Οικοσύστημα Python. άλλες βιβλιοθήκες pandas panel data Numpy numerical Python Basic Python dependencies εξαρτήσεις Scipy Scientific Python Domain-relevant libraries Roots: Python class hierarchy
Πώς εγκαθιστώ άλλες βιβλιοθήκες; Το οικοσύστημα διαθέτει ειδικό πρόγραμμα εγκατάστασης (installer) pip3 install <package_name> Installing Python Modules Installing Scientific Packages Είναι πιο εύκολο να εγκαταστήσετε μια διανομή (distribution) του οικοσυστήματος
Anaconda Anaconda : διανομή Python ανεπτυγμένη από την Continuum Analytics. Συλλογή σταθερών (stable) εκδόσεων πολλών πακέτων Ανοικτού Κώδικα (Open Source packages) για ανάλυση μεγάλων δεδομένων και επιστημονικό προγραμματισμό. Η τρέχουσα έκδοση Anaconda 4.3.1 για την Python 3.6 υποστηρίζει 453 πακέτα
Jupyter Notebook To Jupyter Notebook είναι διαδικτυακή εφαρμογή ανοικτού κώδικα (open-source web application) Σας επιτρέπει να δημιουργείτε και διαμοιράζετε αρχεία με ζωντανό κώδικα (live code), εξισώσεις, εικόνες, οπτικοποιημένο υλικό (εικόνες, video) και επεξηγηματικό κείμενο Source
Jupyter Notebook Guide Jupyter Julia, Python, and R Επόμενη γενιά: JupyterLab
Jupyter Notebook βασικές λειτουργίες Command mode Esc Edit mode Click/Enter Ctrl + Enter Εκτελεί κώδικα στο Cell Ctrl + / Μετατρέπει σε σχόλια # τις επιλεγμένες γραμμές Esc + A Εισάγει Cell Above Esc + B Εισάγει Cell Below Esc + D+D Διαγράφει Cell Kernel Διαχείριση πυρήνα (interpreter γλώσσας) Help Keyboard Shortcuts : Εξηγήσεις για Συντομεύσεις
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Βασική Python: Λίστες, Λεξικά
Basic Python 2 βασικές δομές αντικείμενα: ΛΙΣΤΑ (list) Πχ. lista = [1,2,3,4,5] Ακολουθιακή δεικτοδοτημένη δομή Ακέραιος δείκτης (pythontutor link) ΛΕΞΙΚΟ (dictionary) Πχ. di = {'GR':'Greece','IT':'Italy','ES':'Spain'} Δομή αντιστοίχησης Κλειδί : Τιμή (pythontutor link)
pytolearn: Λίστες & Λεξικά The 'list' object List features: ordered, indexed, iterable, mutable, heterogeneous Constructing lists (1) list & range() (2) append() (3) List comprehension List slicing Slicing examples The 'dictionary' object Features: mapping, collection, indexed, unordered, iterable, mutable Constructing dictionaries Dictionary comprehension
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Τι είναι ο έλεγχος υποθέσεων & γιατί χρειαζόμαστε τη Scipy; Παράδειγμα t-test
Πειραματική σχεδίαση Experimental design M T M C Control: Ομάδα ελέγχου (συνήθης εκπαιδευτική πρακτική) Treatment (ή experimental): Πειραματική ομάδα (εφαρμογή Χ) Ερευνητικό ερώτημα: Ο παράγων Χ έχει επίδραση στη μάθηση; Αν M C ο μέσος όρος επίδοσης του control & M T του Treatment, τότε: η διαφορά τους είναι στατιστικά σημαντική; Αν ΝΑΙ τότε τα δείγματα προέρχονται από διαφορετικούς πληθυσμούς και ο παράγων Χ έχει επίδραση στη μάθηση
Έλεγχος υποθέσεων: Ένα παράδειγμα Ερευνητικό Ερώτημα: Όταν μελετά κάποιος σε περιβάλλον πολυμέσων το να παίζει μουσική στο υπόβαθρο (background music) έχει κάποια επίδραση στη μάθηση; Μηδενική υπόθεση H 0 : Η μουσική στο υπόβαθρο (background music) δεν έχει καμιά επίδραση στη μάθηση Με βάση τα πειραματικά αποτελέσματα θα πρέπει να αποφασίσουμε: Απόρριψη της Η 0 εναλλακτική (H a ) υπόθεση πχ. Η μουσική στο υπόβαθρο έχει σημαντική θετική/αρνητική επίδραση στη μάθηση" Αποδοχή: αδυναμία απόρριψης της μηδενικής υπόθεσης (εξακολουθεί να γίνεται αποδεκτή)
Έλεγχος υποθέσεων: Πώς λειτουργεί; 1/2 Εφαρμόζεται ένα κατάλληλος στατιστικός έλεγχος (τεστ) Ένας στατιστικός έλεγχος υπολογίζει: Signal = διαφορά μεταξύ ομάδων (a) στατιστικό μέτρο = ------------------------------------------------ Noise = αναμενόμενη διακύμανση τιμών (b) p (πιθανότητα εμφάνισης της τιμής του στατιστικού μέτρου) Αποφασίζουμε συγκρίνοντας το p με ένα κατώφλι στατιστικής σημαντικότητας που δεχόμαστε Συνήθως a = 0.05 και αν p <= a τότε Sig. (στατιστική σημαντικότητα)
Έλεγχος υποθέσεων: Πώς λειτουργεί; 2/2 Treatment Control Signal = Διαφορά μεταξύ ομάδων Noise = Αναμενόμενη διακύμανση τιμών στην κάθε ομάδα
Τι κάνει το t-test; 1/4 Students t-test (Βικιπαίδεια) A) Ορίζει ένα στατιστικό μέτρο t για τη διαφορά των μέσων όρων δύο ομάδων ως εξής: Signal Noise M C M T
Τι κάνει το t-test; 2/4 B) Προσδιορίζει την συνάρτηση πυκνότητας πιθανότητας (pdf = probability density function) του στατιστικού μέτρου t δηλ. το πώς κατανέμεται η πιθανότητα εμφάνισης μιας τιμής του t Κατανομή t (t distribution) Τιμές t με μεγάλη πιθανότητα εμφάνισης p t Τιμές t με μικρή πιθανότητα εμφάνισης
Τι κάνει το t-test; 3/4 Γ) Με βάση τις τιμές του πειράματός μας: Προσδιορίζει τη συγκεκριμένη τιμή του t, (t 1 στο διάγραμμα) και Την πιθανότητα εμφάνισης p αυτής της τιμής του t p t t 1 έστω: t 1 = 2.25 p = 0.04
Τι κάνει το t-test; 4/4 Δ) Η προκύπτουσα τιμή του p μας δίνει: Την πιθανότητα να μετρηθεί η συγκεκριμένη (ή μεγαλύτερη) τιμή του t εφόσον αποδεχόμαστε την μηδενική Η 0 Αν p <= a τότε δεχόμαστε ότι η πιθανότητα είναι πολύ μικρή και απορρίπτουμε την Η 0 Εφόσον: p = 0.04 a p p < a Sig. p t
Πώς να κάνουμε τον έλεγχο t-test σε περιβάλλον βασικής Python; Χρειαζόμαστε: Α) Αναπαράσταση των δεδομένων μας σε κατάλληλη δομή Β) Έλεγχος προϋποθέσεων: Β1) Προέρχονται τα δεδομένα μας (ομάδες C & T) από πληθυσμούς με κανονική κατανομή; (Έλεγχος κανονικότητας, Normality check) Β2) Προέρχονται τα δεδομένα μας από πληθυσμούς με ίδια διασπορά; (Έλεγχος διασποράς, Variance test) Γ) Υπολογισμός στατιστικού μέτρου t και πιθανότητας p
Η απάντηση Α) Κατάλληλη δομή Λίστα, list Β) Έλεγχος προϋποθέσεων: import scipy.stats as stats Normality stats.shapiro Variance stats.levene Γ) Υπολογισμός στατιστικού μέτρου t και πιθανότητας p t, p = stats.ttest_ind(control, treatment)
Συμπεράσματα Μπορούμε να εφαρμόσουμε τεχνικές ελέγχου υποθέσεων: Α) Οργανώνοντας τα δεδομένα μας σε Λίστες Β) Καλώντας τις κατάλληλες μεθόδους από την Scipy
Μέθοδοι της Scipy για τον Έλεγχο Υποθέσεων - Statistics (scipy.stats) - Statistics in Python T-Test για: Α) Ανεξάρτητα δείγματα (Independent): ttest_ind() Μη παραμετρικό ισοδύναμο: mannwhitneyu() Β) Εξαρτημένα δείγματα (Paired t-test): ttest_rel() Μη παραμετρικό ισοδύναμο: wilcoxon() Γ) Ένα δείγμα (One sample): ttest_1samp() Μη παραμετρικό ισοδύναμο: wilcoxon() ANOVA (Analysis Of Variance, Ανάλυση Διασποράς): Α) ANOVA: f_oneway() Μη παραμετρικό ισοδύναμο: Kruskal-Wallis() Εφαρμογή ad hoc Tukey s t-test
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Numpy & Πίνακες (ndarray)
Τι είναι η numpy? Βιβλιοθήκη που προσφέρει το αντικείμενο Πίνακα: ndarray Δύο βασικά πλεονεκτήματα: Α) Ταχύτητα εκτέλεσης Β) Προγραμματισμός με Πίνακες (array programming, vectorization)
Ταχύτητα Πίνακας ndarray: τιμές-αντικείμενα σε συνεχείς θέσεις μνήμης Λίστα list: δείκτες (pointers) που «δείχνουν» σε τιμές-αντικείμενα
pytolearn: Numpy: βασικά θέματα Array construction The array() constructor Array vs. List: measuring the performance with %timeit Array construction (cont'd) The arange() constructor Array indexing 1D, 2D and 3D indexing Array slicing 1D, 2D and 3D slicing Array operations Element-wise operations Broadcasting Array functions Universal functions Statistical functions
Διανυσματικός προγραμματισμός (Vectorization) NumPy Basics: Arrays and Vectorized Computation Η δυνατότητα να κάνουμε μαθηματικές πράξεις σε όλα τα στοιχεία μιας λίστας ή πίνακα ταυτόχρονα σε ένα βήμα.
Μπορούμε να κάνουμε τον έλεγχο υποθέσεων με ndarrays αντί για λίστες; Α) Κατάλληλη δομή Πίνακας, ndarray Β) Έλεγχος προϋποθέσεων (όπως και πριν): import scipy.stats as stats Normality stats.shapiro Variance stats.levene Γ) Υπολογισμός στατιστικού μέτρου t και πιθανότητας p (όπως και πριν): t, p = stats.ttest_ind(control, treatment)
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Γραφικές παραστάσεις με Matplotlib
Τι είναι η matplotlib? Βιβλιοθήκη που υποστηρίζει δημιουργία γραφικών παραστάσεων
matplotlib: βασικά θέματα What is 'matplotlib'? Your first plot Basic plotting with 'plot' How to plot an array Customizing the plot Setting axes limits Adding graph legend Moving the axes Annotating the graph Common plots Bar chart Histogram
Συμπεράσματα Μπορούμε να εφαρμόσουμε τεχνικές ελέγχου υποθέσεων: Α) Οργανώνοντας τα δεδομένα μας σε Numpy Πίνακες (ndarray) Β) Καλώντας τις κατάλληλες μεθόδους από την Scipy Πλεονεκτήματα: Ταχύτητα εκτέλεσης κώδικα Διανυσματικός προγραμματισμός (πράξεις μεταξύ Πινάκων) Διαγράμματα με τη matplotlib
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Τι είναι η pandas; Τα αντικείμενα Series και DataFrame
Τι είναι η pandas Προχωρημένου επιπέδου βιβλιοθήκη για την οργάνωση & ανάλυση δεδομένων Προσφέρει 2 βασικά αντικείμενα: Series & DataFrame Πλεονεκτήματα: Α) Εισαγωγή δεδομένων από διάφορα αρχεία (xls, csv, κά.) Β) Οργάνωση δεδομένων σε πινακοειδείς (table-like) δομές με ετικέτες Γ) Υψηλή ευελιξία στην ανάλυση δεδομένων Δ) Συνεργασία με Scipy (και άλλες βιβλιοθήκες) για εφαρμογή μεθόδων στατιστικής επεξεργασίας δεδομένων
Αντικείμενο Series Δεδομένα οργανωμένα σε 1 στήλη με ετικέτα (labeled data) Δομή αντιστοίχησης παρόμοια με Λεξικό Series Series is ndarray-like Series is dict-like Vectorized operations and label alignment with Series
Αντικείμενο DataFrame Πολυδιάστατη table-like δομή (όπως ένας πολυδιάστατος πίνακας) Περιλαμβάνει στήλες με κοινή ετικέτα. Κάθε στήλη μπορεί να έχει δεδομένα διαφορετικού τύπου Σκεφθείτε το DataFrame ως: Λογιστικό φύλλο Πίνακα SQL ή Λεξικό (dict) από αντικείμενα τύπου Series DataFrame
Εισαγωγή δεδομένων από αρχείο xlsx σε DataFrame read_excel (<όνομα αρχείου>) sheetname όνομα φύλλου index_col Ποια στήλη θα είναι η ετικέτα (label) δεδομένων convert_float μετατροπή αριθμητικών δεδομένων φύλλου σε float (True / False) Online τεκμηρίωση read_excel()
Εισαγωγή δεδομένων από αρχείο csv σε DataFrame read_csv (<όνομα αρχείου>) sep separator (σύμβολο διαχωρισμού στοιχείων, συνήθως, ) skiprows πόσες γραμμές στην αρχή του αρχείου να αγνοηθούν header ποια γραμμή περιέχει τις επικεφαλίδες την στηλών index_col ποιά στήλη περιέχει τις ετικέτες των σειρών Online τεκμηρίωση read_csv()
Αναφορά στα δεδομένα του DataFrame με Ονόματα Στηλών Στο αρχείο Στον κώδικα Όνομα στήλης ως δείκτης: ή Σημειογραφία τελείας: data[ Control ] data.control Πλεονέκτημα: μπορείτε να αναφέρεστε πλέον με όνομα σε συγκεκριμένη στήλη δεδομένων όπου κι αν βρίσκεται μέσα στο DataFrame
NaN: Στο αρχείο Όταν λείπουν δεδομένα Στο DataFrame Καλώντας τη μέθοδο dropna() διαγράφονται οι καταχωρήσεις όπου λείπουν δεδομένα
Ομαδοποίηση δεδομένων: η δύναμη της Groupby Στο αρχείο Ομαδοποίηση με βάση Gender
t-test με pandas & Scipy Εφαρμόζουμε τις γνωστές μεθόδους της Scipy: shapiro() levene() ttest_ind() Στα δεδομένα του DataFrame (στήλες Control & Treatment)
ANOVA με pandas & Scipy 1/3 3 ή περισσότερες ομάδες Στο αρχείο Στο DataFrame
ANOVA με pandas & Scipy 2/3 1. Απομακρύνουμε κενές εγγραφές 2. Περιγραφικά στατιστικά στοιχεία 3. Έλεγχος Κανονικότητας
ANOVA με pandas & Scipy 3/3 4. Έλεγχος Διασποράς 5. Κλήση f_oneway()
ANOVA: τι σημαίνουν τα αποτελέσματα; 1/2 Όταν p <= a έχουμε κύρια αλληλεπίδραση (main interaction effect) Δηλ. μεταξύ των ομάδων έχουν εντοπιστεί στατιστικά σημαντικές διαφορές. Όμως αυτό το αποτέλεσμα δεν φανερώνει ακόμη το ζευγάρι ομάδων (ή τα ζευγάρια) που προκαλούν αυτή τη σημαντική διαφορά Πώς προσδιορίζουμε αυτά τα ζευγάρια ομάδων; Εφαρμόζοντας ειδικής μορφής post-hoc t-test (όπως το Tukey s t-test)
ANOVA: τι σημαίνουν τα αποτελέσματα; 2/2 Για το ζευγάρι αυτό παραμένει ισχυρή η μηδενική υπόθεση H 0 (δηλ. reject False) σε επίπεδο a = 0.05 Για τα άλλα δύο ζευγάρια η H 0 απορρίπτεται Άρα, η ομάδα Treatment1 διαφοροποιείται στατιστικά από τις ομάδες Control & Treatment2
Statistical packages Commercial: SPSS, SAS, Stata, Matlab, Free, Open and Popular: R, Python/pandas SPSS Python - R convergence: Python extension enables SPSS users to run any of the statistics in the R software package See a comparison of statistical packages@wikipedia