2  Κεφάλαιο: Εισαγωγή

Πάντα να ξαναρχίζεις!

— Paul Valéry


2.1 Εισαγωγή

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

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

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

Σχήμα 2.1: Απεικόνιση της μετατροπής της μεταβλητότητας του κόσμου σε δεδομένα

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

Τα καλά νέα είναι ότι οποιοσδήποτε μπορεί να μάθει στατιστική. Όταν κάτι φαίνεται δύσκολο, αυτό υποδηλώνει ότι καλείστε να αντιμετωπίσετε απαιτητικές έννοιες, και όχι ότι δεν είστε ικανοί να τις κατακτήσετε. Μην το ξεχνάτε αυτό.

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

Οικοδομώντας Ευέλικτη Γνώση

Οι περισσότεροι άνθρωποι έχουν κάποιες βασικές γνώσεις στατιστικής πριν παρακολουθήσουν ένα σχετικό μάθημα. Πολλοί από εσάς ενδέχεται να έχετε παρακολουθήσει στο παρελθόν μαθήματα στατιστικής και να έχετε εξοικειωθεί με έννοιες όπως ο μέσος όρος, η διακύμανση, η τυπική απόκλιση, το t-test, η τιμή p, το F-test, η ANOVA, η παλινδρόμηση, το χ\(^2\), η κανονική κατανομή, οι τυπικές τιμές (z-score), και άλλα.

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

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

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

Στόχος μας είναι να σας βοηθήσουμε να κατανοήσετε τις βασικές ιδέες που θα σας επιτρέψουν να κατανοήσετε και να διασυνδέσετε τις άλλες έννοιες και διαδικασίες που θα μελετήσουμε. Αυτό θα απαιτήσει χρόνο, αλλά αξίζει τον κόπο.

Το Στατιστικό Μοντέλο

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

Πρώτον, μας βοηθούν να κατανοήσουμε τα μοτίβα στα δεδομένα και την προέλευσή τους – αυτό που θα ονομάζουμε Διαδικασία Παραγωγής Δεδομένων (ΔΠΔ). Η ΔΠΔ είναι η διαδικασία που προκαλεί τη μεταβλητότητα, την οποία θα μελετήσουμε εκτενώς αργότερα.

Δεύτερον, μας βοηθούν να προβλέψουμε το μέλλον. Φυσικά, δεν μπορούμε να το προβλέψουμε με ακρίβεια – δεν είμαστε μάντεις, και μάλλον ούτε εσείς είστε. Ωστόσο, με τα στατιστικά μοντέλα μπορούμε να κάνουμε καλύτερες προβλέψεις από ό,τι χωρίς αυτά, ακόμη κι αν επιδέχονται βελτίωση. Αυτό είναι πολύ χρήσιμο: όταν το Netflix προτείνει μια ταινία που μπορεί να σας αρέσει, χρησιμοποιεί ένα στατιστικό μοντέλο. Μπορεί να κάνει λάθη, αλλά τα αποτελέσματα είναι καλύτερα από την τυχαία επιλογή.

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

Σχήμα 2.2

Απλά και σε Βάθος

Ο Jordan Ellenberg στο βιβλίο του Πώς να μην κάνετε λάθος (Ellenberg, 2020 Εκδ. UTOPIA) περιγράφει τον στόχο του βιβλίου του – μια περιγραφή που ταιριάζει απόλυτα και σε αυτό το μάθημα:

«Τα μαθηματικά», γράφει, «μπορούν να οργανωθούν σε δύο διαστάσεις» (βλέπε εικόνα από Ellenberg, παραπάνω). Πρώτον, υπάρχουν τα απλά και τα πολύπλοκα μαθηματικά.

Αυτό είναι απλά μαθηματικά:

\[2 + 2 = 4\] Ενώ αυτά είναι πιο πολύπλοκα:

\[\int e^x dx = e^x + C\] Η άλλη διάσταση είναι από τα επιφανειακά στα βαθιά. Αν και τα δύο προηγούμενα παραδείγματα διαφέρουν ως προς το πόσο πολύπλοκα είναι, και τα δύο είναι σχετικά επιφανειακά στη σημασία τους. Οι επαγγελματίες μαθηματικοί ασχολούνται με ιδέες πολύπλοκες και βαθιές (στο πάνω δεξιά τεταρτημόριο). Αλλά οι βαθιές μαθηματικές ιδέες δεν χρειάζεται να είναι πολύπλοκες. Μερικές ιδέες είναι απλές, αλλά βαθιές.

Για παράδειγμα, το Πυθαγόρειο θεώρημα, \(a^2 + b^2 = c^2\), διδάσκεται συχνά σε μαθήματα γεωμετρίας για να βοηθήσει τους μαθητές να υπολογίσουν μία από τις πλευρές ενός τριγώνου. Όμως, υπάρχει μια βαθιά σημασία στο Πυθαγόρειο θεώρημα που δεν έχει καμία σχέση με τους υπολογισμούς. Αν πάρετε ένα ορθογώνιο τρίγωνο, ΟΠΟΙΟΔΗΠΟΤΕ ορθογώνιο τρίγωνο, το εμβαδόν των τετραγώνων που δημιουργούνται από τις δύο μικρότερες πλευρές θα ισούται με το εμβαδόν του τετραγώνου που δημιουργείται από την υποτείνουσα.

Το Πυθαγόρειο Θεώρημα

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

Ο Συλλογισμός Πιο Σημαντικός από τους Υπολογισμούς

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

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

2.2 Τι Είναι η Κατανόηση;

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

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

Η γνωστική ψυχολογία έχει αρχίσει να αποκαλύπτει σημαντικές πτυχές της κατανόησης και των τρόπων απόκτησής της. Ακολουθούν μερικές βασικές αρχές που θα σας βοηθήσουν να προετοιμαστείτε κατάλληλα για αυτό το μάθημα.

Η Κατανόηση Καλλιεργείται με Εξάσκηση

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

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

Η Σύγχυση Είναι Αναπόσπαστο Μέρος της Μαθησιακής Διαδικασίας

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

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

Η Κατανόηση Απαιτεί Χρόνο

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

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

Μάθηση Μέσω Εξάσκησης

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

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

Πώς Αυτό το Μάθημα Υποστηρίζει την Κατανόηση

Σε αυτό το μάθημα θα σας ζητηθεί να κάνετε ασκήσεις σε κάθε ενότητα: να αναλύετε δεδομένα και να απαντάτε σε ερωτήσεις. Μπορεί να αισθάνεστε ότι αξιολογείστε συνεχώς.

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

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

2.3 Στατιστική Ανάλυση με την R

Σε πρακτικό επίπεδο, η ανάλυση δεδομένων στο πλαίσιο αυτού του μαθήματος θα πραγματοποιηθεί με τη χρήση της R (μιας γλώσσας προγραμματισμού της οποίας το όνομα είναι απλώς το γράμμα R). Η R είναι μια δωρεάν γλώσσα προγραμματισμού ανοικτού κώδικα που χρησιμοποιείται ευρέως για στατιστικές αναλύσεις. Ο όρος «ανοικτός κώδικας» αναφέρεται σε λογισμικό που είναι προσβάσιμο, τροποποιήσιμο και διανεμήσιμο από οποιονδήποτε.

Γιατί R;

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

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

Ενδεχομένως να σκέφτεστε: «γλώσσα προγραμματισμού, ακούγεται δύσκολο!». Πράγματι, μπορεί να είναι ελαφρώς πιο περίπλοκο από την εκμάθηση της χρήσης ενός στατιστικού πακέτου με μενού επιλογών. Αλλά μην ανησυχείτε: θα σας καθοδηγήσουμε βήμα προς βήμα, με αργό ρυθμό. Ίσως μάλιστα να το απολαύσετε. Επιπλέον, δεν είναι αναγκαίο να εγκαταστήσετε τίποτα ή να προβείτε σε ειδικές ρυθμίσεις στον υπολογιστή σας. Μπορείτε απλώς να επικεντρωθείτε στην εκμάθηση της R.

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

Η αναπαράσταση της ίδιας έννοιας σε διαφορετικές μορφές («επαναληπτική αναπαράσταση») συμβάλλει στην αποτελεσματικότερη μάθηση. Σε αυτό το μάθημα, θα χρησιμοποιήσετε διαφορετικές αναπαραστάσεις: λέξεις, γραφήματα, πίνακες, μαθηματικούς συμβολισμούς και κώδικα σε R. Η δημιουργία συνδέσεων μεταξύ αυτών των διαφορετικών αναπαραστάσεων θα εμβαθύνει την κατανόησή σας.

Δοκιμή Κώδικα σε R

Για παράδειγμα, παρακάτω παρουσιάζεται ένα τμήμα κώδικα R (ή απλώς «κώδικας»). Διαβάστε τον κώδικα στο παρακάτω πλαίσιο. Τι πιστεύετε ότι θα κάνει;

Πατήστε το Run Code (Εκτέλεση Κώδικα) και παρατηρήστε το αποτέλεσμα.

Μετά το κλικ στο Run Code, θα δείτε ότι η R εμφανίζει τη φράση “Hello world!”.

Σημείωση: όταν δίνουμε εντολή στην R να εκτελέσει τη συνάρτηση print(), η R την ερμηνεύει ως «Εμφάνισε στην οθόνη». Μόλις κατανοήσατε ένα μέρος της λειτουργίας της R.

Δοκιμάστε Περισσότερο Κώδικα σε R

Ας δοκιμάσουμε ένα ακόμη παράδειγμα. Διαβάστε τον κώδικα και προσπαθήστε να μαντέψετε τι θα κάνει. Στη συνέχεια, πατήστε το Run Code.

Αυτό το τμήμα κώδικα εκτύπωσε το άθροισμα των αριθμών 1, 5 και 10 (δηλαδή, 16). Ήδη μαθαίνετε κώδικα σε R!

Μπορείτε επίσης να χρησιμοποιήσετε την R ως μια απλή αριθμομηχανή. Δοκιμάστε να εκτελέσετε τον κώδικα στο παρακάτω πλαίσιο. Απλώς πατήστε Run Code.

Παρατηρήστε ότι μπορείτε να εισάγετε περισσότερες από μία γραμμές κώδικα σε ένα μόνο πλαίσιο κώδικα της R. Όταν πατάτε το κουμπί Run Code, όλες οι εντολές στο πλαίσιο θα εκτελεστούν, μία μετά την άλλη, με τη σειρά που εμφανίζονται.

Σχόλια στον Κώδικα της R

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

Παρατηρήστε ότι δεν βλέπετε τίποτα να συμβαίνει, επειδή οι γραμμές που ξεκινούν με # αγνοούνται από την R. Εάν θέλετε να γράψετε ένα σχόλιο που καταλαμβάνει περισσότερες από μία γραμμές, είναι καλή ιδέα να τοποθετήσετε ένα # στην αρχή κάθε γραμμής.

Πώς να Αξιοποιήσετε στο Έπακρο τις Ασκήσεις Κώδικα

Το κουμπί Run Code θα εκτελέσει τον κώδικά σας στο πλαίσιο κώδικα. Θα μάθετε περισσότερα προσπαθώντας να γράψετε κώδικα, εκτελώντας τον και συνεχίζοντας να προσπαθείτε μέχρι να λειτουργήσει.

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

Η R στον Πραγματικό Κόσμο

Σε αυτό το διαδικτυακό βιβλίο, θα εκτελούμε όλο τον κώδικα R στα ενσωματωμένα πλαίσια κώδικα. Αυτά τα πλαίσια είναι ιδανικά για την εκμάθηση της R. Αλλά αργότερα, όταν ξεκινήσετε να εργάζεστε σε πραγματικά έργα ανάλυσης δεδομένων, θα χρησιμοποιήσετε διαφορετικά εργαλεία λογισμικού. Τα δύο πιο δημοφιλή εργαλεία είναι το RStudio και το Jupyter Notebooks. Και τα δύο είναι ισχυρά εργαλεία και έχουν πλεονεκτήματα και μειονεκτήματα.

Το RStudio είναι μια εφαρμογή που σας επιτρέπει να γράφετε και να εκτελείτε κώδικα R στον υπολογιστή σας. Είναι ένα IDE (Integrated Development Environment – Ολοκληρωμένο Περιβάλλον Ανάπτυξης). Προτείνουμε να εγκαταστήσετε την R και την RStudio στον υπολογιστή σας (μπορείτε να ακολουθήσετε αυτόν τον Οδηγό).

Εάν προτιμάτε να μην εγκαταστήσετε λογισμικό στον υπολογιστή σας, μπορείτε να χρησιμοποιήσετε την R απευθείας στον περιηγητή ιστού σας μέσω του WebR. Το WebR είναι μια διαδικτυακή έκδοση της R που τρέχει πλήρως στον περιηγητή σας χωρίς να απαιτεί εγκατάσταση. Μπορείτε να το βρείτε στη διεύθυνση: https://webr.r-wasm.org/latest/

Σχήμα 2.3: Το WebR IDE - Διαδικτυακό περιβάλλον ανάπτυξης της R

2.4 Εισαγωγή στις Συναρτήσεις της R

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

Οι συναρτήσεις έχουν δύο βασικά μέρη. Το πρώτο μέρος είναι το όνομα της συνάρτησης (π.χ., sum). Το δεύτερο μέρος είναι οι είσοδοι της συνάρτησης, που μπαίνουν μέσα στις παρενθέσεις. Αυτές οι είσοδοι ονομάζονται παράμετροι. Παρακάτω έχουμε βάλει κάποιες οδηγίες (ως σχόλια) στο πλαίσιο κώδικα. Γράψτε τον κώδικά σας ως νέα γραμμή κάτω από κάθε σχόλιο. Δείτε αν ο κώδικάς σας λειτουργεί κάνοντας κλικ στο Run Code.

Παρατηρήστε ότι ο πραγματικός κώδικας R είναι οι γραμμές που γράψατε εσείς στο πλαίσιο κώδικα, όπως sum(5, 10, 15) ή print("hello").

Η έξοδος ή το αποτέλεσμα του κώδικα (π.χ., 30) εμφανίζεται σε μια νέα περιοχή από κάτω αφού κάνετε κλικ στο Run Code.

Η R Είναι Απαιτητική – Συγγνώμη!

Ένα πράγμα που χρειάζεται να γνωρίζετε είναι ότι η R (όπως όλες οι γλώσσες προγραμματισμού) είναι πολύ, πολύ απαιτητική. Για παράδειγμα, αν πληκτρολογήσετε sum(1, 100) θα σας δώσει την απάντηση, 101. Αλλά αν πληκτρολογήσετε Sum(1, 100), με κεφαλαίο το ‘s’, θα συμπεριφερθεί σαν να μην έχει ιδέα για τι μιλάτε! Αυτό συμβαίνει επειδή τα ονόματα συναρτήσεων στη R κάνουν διάκριση μεταξύ κεφαλαίων και πεζών γραμμάτων.

Για να δώσουμε άλλο παράδειγμα: στη συνάρτηση print(), αν αφήσουμε τα εισαγωγικά, πληκτρολογώντας print(hello) αντί για print("hello"), η R θα εμφανίσει μήνυμα σφάλματος επειδή θα αναζητούσε ένα αντικείμενο της R που ονομάζεται hello. Ας δείξουμε τι εννοούμε.

Εάν ένας άνθρωπος σάς φερόταν με αυτόν τον τρόπο, θα ήταν εξοργιστικό! Ένας άνθρωπος θα καταλάβαινε τι εννοείτε. Αλλά η R, ένα πρόγραμμα υπολογιστή, δεν μπορεί να το κάνει αυτό. Υποθέτει ότι εννοείτε ακριβώς αυτό που πληκτρολογείτε.

Εδώ είναι άλλο παράδειγμα. Δείτε τι συμβαίνει αν ξεχάσετε να κλείσετε μια παρένθεση σε μια συνάρτηση R.

Εάν ξεχάσετε μια παρένθεση, η R θα εμφανίσει σφάλμα (Error). Μερικές φορές η R θα σας εκνευρίσει και θα σας κάνει να ψάχνετε για μικροσκοπικά λαθάκια.

Συναρτήσεις και Πακέτα της R

Ίσως αναρωτιέστε: «Από πού προέρχονται όλες αυτές οι συναρτήσεις;» Πολλές συναρτήσεις της R γράφονται από άτομα στην κοινότητα της R—με άλλα λόγια, άλλους ανθρώπους που χρησιμοποιούν τη R. Οι άνθρωποι μοιράζονται συναρτήσεις και σύνολα δεδομένων μεταξύ τους μέσω πακέτων (packages) της R που μπορούν να κατέβουν και να εγκατασταθούν, όπως εγκαθιστάτε εφαρμογές στον υπολογιστή ή το τηλέφωνό σας.

Τα πακέτα R – χιλιάδες από αυτά – είναι διαθέσιμα σε ένα διαδικτυακό αποθετήριο που ονομάζεται CRAN. Χρησιμοποιούμε διαφορετικά πακέτα της R σε αυτό το μάθημα, μερικά από αυτά έχουν γραφτεί ειδικά για να βοηθήσουν τους φοιτητές να μάθουν και να χρησιμοποιούν τη R πιο εύκολα. Το mosaic είναι ένα παράδειγμα πακέτου που γράφτηκε από διδάσκοντες μαθημάτων στατιστικής, οι οποίοι σκέφτηκαν ποιες συναρτήσεις θα ήταν χρήσιμες στους φοιτητές και τις συγκέντρωσαν σε ένα πακέτο.

Για αυτό το μάθημα, δεν χρειάζεται πραγματικά να ανησυχείτε για όλα αυτά. Θα προεγκαταστήσουμε στα πλαίσια κώδικα όλα τα πακέτα που περιμένουμε να χρησιμοποιήσετε, οπότε δεν χρειάζεται να τα εγκαταστήσετε. Αλλά είναι σημαντικό να κατανοήσετε από πού προέρχονται τα πακέτα, επειδή εάν αποφασίσετε να εγκαταστήσετε το RStudio στον δικό σας υπολογιστή, μπορεί να διαπιστώσετε ότι κάποιες από τις συναρτήσεις που θα μάθετε να χρησιμοποιείτε στο μάθημα δεν λειτουργούν! Ο λόγος είναι απλώς ότι τα πακέτα που τις περιλαμβάνουν δεν έχουν εγκατασταθεί.

Ακολουθεί μια απλή συνάρτηση που γράφτηκε από τους προγραμματιστές του πακέτου mosaic. Γνωρίζοντας ότι οι διδάσκοντες στατιστικής συχνά ζητούν από τους φοιτητές να εξετάσουν πιθανότητες από τη ρίψη νομίσματος, δημιούργησαν μια συνάρτηση, την rflip(), η οποία διευκολύνει την προσομοίωση της ρίψης ενός νομίσματος στην R.

Εκτελέστε τον κώδικα (Run Code). Ας εξηγήσουμε το συγκεκριμένο αποτέλεσμα της rflip(). Όταν εκτελούμε την rflip() χωρίς παραμέτρους, η συνάρτηση προσομοιώνει τη ρίψη ενός μόνο νομίσματος. Η πρώτη γραμμή του αποτελέσματος “Flipping 1 coin [ Prob(Heads) = 0.5 ] …” σημαίνει ότι ρίχνουμε ένα νόμισμα με πιθανότητα 0,5 (δηλαδή 50%) να βγει κορώνα. Αυτό σημαίνει ότι το νόμισμα είναι δίκαιο - έχει ακριβώς την ίδια πιθανότητα να έρθει κορώνα ή γράμματα.

Το αποτέλεσμα της ρίψης που βλέπετε μπορεί να είναι είτε “H” (συντομογραφία για “Heads”, δηλαδή Κορώνα) είτε “T” (για “Tails”, δηλαδή Ουρά ή Γράμματα). Αυτό που θα δείτε εξαρτάται από την τύχη - κάθε φορά που εκτελείτε τη συνάρτηση, προσομοιώνετε μια νέα, ανεξάρτητη ρίψη νομίσματος.

Η τελευταία γραμμή "Number of Heads: ... [Proportion Heads: ...]" σας δίνει μια σύνοψη του αποτελέσματος της ρίψης σας. Αν το νόμισμά σας έδωσε κορώνα (H), θα δείτε “Number of Heads: 1 [Proportion Heads: 1]”, που σημαίνει ότι από το 1 νόμισμα που ρίξατε, το 1 έδωσε κορώνα (100%). Αν έδωσε γράμματα (T), θα δείτε "Number of Heads: 0 [Proportion Heads: 0]", που σημαίνει ότι το νόμισμα δεν έδωσε κορώνα (0%).

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

Ίσως θέλετε να εκτελέσετε την rflip(10) μερικές φορές, για να δείτε ότι κάθε φορά που η R προσομοιώνει 10 ρίψεις νομίσματος, δεν προκύπτει ο ίδιος αριθμός κορώνων, όπως και οι πραγματικές ρίψεις νομίοσματος δεν θα έδιναν πάντα τον ίδιο αριθμό κορώνων. Αργότερα σε αυτό το μάθημα, θα εξετάσουμε το εξής ερώτημα: Γιατί η πιθανότητα εμφάνισης κορώνας είναι πάντα 0,5, ενώ η πραγματική αναλογία κορώνων σε ένα δείγμα ρίψεων νομίσματος δεν είναι πάντα 0,5;

Δοκιμή και Σφάλμα, και η Κουλτούρα του Προγραμματισμού

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

Ο καλύτερος τρόπος για να μάθετε προγραμματισμό είναι να πειραματίζεστε και να παρατηρείτε τα αποτελέσματα. Γράψτε κώδικα, εκτελέστε τον και αναρωτηθείτε γιατί δεν λειτούργησε! (Συγγνώμη που είμαστε αρνητικοί, αλλά συχνά τα πράγματα δεν λειτουργούν την πρώτη φορά.) Υπάρχουν τόσοι πολλοί τρόποι να κάνετε μικρά λάθη στον προγραμματισμό (π.χ., γράφοντας ένα κεφαλαίο γράμμα όταν χρειάζεστε ένα πεζό γράμμα). Συχνά, αυτά τα σφάλματα εντοπίζονται με την μέθοδο δοκιμής-σφάλματος.

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

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

2.5 Αποθηκεύστε τη Δουλειά σας σε Αντικείμενα της R

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

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

Ακολουθεί ένα απλό παράδειγμα για να δείξουμε πώς γίνεται. Ας επινοήσουμε ένα όνομα για ένα αντικείμενο της R. Θα το ονομάσουμε my_favorite_number. Στη συνέχεια, ας σκεφτούμε ποιος είναι ο αγαπημένος μας αριθμός (ας πούμε, 20), και ας τον αποθηκεύσουμε στο αντικείμενο της R. Προχωρήστε και εκτελέστε τον παρακάτω κώδικα για να δείτε πώς λειτουργεί.

Παρατηρήστε ότι αφού εκτελέσετε τον κώδικα my_favorite_number <- 20 δεν συμβαίνει τίποτα. Αυτό συμβαίνει επειδή αποθηκεύσατε τον αριθμό 20 στο my_favorite_number, αλλά δεν είπατε στη R να τον εμφανίσει. Επιστρέψτε και προσθέστε αυτή τη γραμμή κώδικα στο παραπάνω πλαίσιο, και στη συνέχεια εκτελέστε τον ξανά:

Τώρα όχι μόνο αποθηκεύει τον αγαπημένο σας αριθμό, αλλά τον εμφανίζει επίσης. Παρατηρήστε ότι δεν χρειάζεται να χρησιμοποιήσετε τη συνάρτηση print() για να εμφανίσετε τα περιεχόμενα ενός αντικειμένου R· μπορείτε απλώς να πληκτρολογήσετε το όνομα του αντικειμένου.

Τώρα θυμηθείτε, η R είναι ευαίσθητη στα κεφαλαία και πεζά. Δοκιμάστε να αναθέσετε 5 στο num και 10 στο NUM.

Σημείωση: Όταν αποθηκεύετε ένα αντικείμενο της R σε ένα από τα πλαίσια κώδικα, θα αποθηκευτεί μόνο μέχρι να φύγετε από τη σελίδα. Αν επαναφορτώσετε τη σελίδα αργότερα, δεν θα είναι εκεί.

Διανύσματα

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

Η συνάρτηση c() μπορεί να χρησιμοποιηθεί για να συνδυάσει μια λίστα μεμονωμένων τιμών σε ένα διάνυσμα (vector). Θα μπορούσατε να σκεφτείτε το “c” ως συντομογραφία για το “combine” (συνδυάζω). Έτσι στον ακόλουθο κώδικα έχουμε δημιουργήσει δύο διανύσματα (τα ονομάσαμε απλώς my_vector και my_vector_2) και βάλαμε μια λίστα τιμών σε κάθε διάνυσμα.

Αν ζητήσετε από τη R να εκτελέσει μια λειτουργία σε ένα διάνυσμα, θα υποθέσει ότι θέλετε να εργαστείτε με ολόκληρο το διάνυσμα, όχι μόνο με έναν από τους αριθμούς.

Έτσι αν θέλετε να πολλαπλασιάσετε κάθε αριθμό στο my_vector επί 100, τότε μπορείτε απλώς να γράψετε my_vector * 100. Δοκιμάστε το στο παρακάτω πλαίσιο κώδικα.

Παρατηρήστε ότι όταν κάνετε έναν υπολογισμό με ένα διάνυσμα, θα πάρετε ένα διάνυσμα αριθμών ως απάντηση, όχι απλώς έναν μόνο αριθμό.

Αφού πολλαπλασιάσετε το my_vector επί 100, τι θα συμβεί αν εμφανίσετε το my_vector; Θα πάρετε το αρχικό διάνυσμα (1, 2, 3, 4, 5), ή ένα που έχει τις εκατοντάδες (100, 200, 300, 400, 500); Δοκιμάστε να εκτελέσετε αυτόν τον κώδικα για να δείτε τι συμβαίνει.

Θυμηθείτε, η R θα κάνει τους υπολογισμούς, αλλά αν θέλετε κάτι να αποθηκευτεί, πρέπει να το αναθέσετε κάπου. Δοκιμάστε να γράψετε κάποιον κώδικα για να υπολογίσετε my_vector * 100 και στη συνέχεια να αναθέσετε το αποτέλεσμα πίσω στο my_vector. Αν το κάνετε αυτό, θα αντικαταστήσει τα παλιά περιεχόμενα του my_vector με τα νέα περιεχόμενα (δηλαδή, το γινόμενο του my_vector και του 100).

Μπορεί να υπάρχουν στιγμές που θέλετε απλώς να ξέρετε μια από τις τιμές σε ένα διάνυσμα, όχι όλες τις τιμές. Μπορούμε να δείξουμε μια θέση στο διάνυσμα χρησιμοποιώντας αγκύλες με έναν αριθμό μέσα όπως αυτό: [1]. Έτσι αν θέλουμε να τυπώσουμε το περιεχόμενο της πρώτης θέσης στο my_vector, θα μπορούσαμε να γράψουμε my_vector[1].

Πολλές συναρτήσεις θα πάρουν ένα διάνυσμα ως είσοδο. Για παράδειγμα, δοκιμάστε να χρησιμοποιήσετε την sum() για να αθροίσετε τις πέντε τιμές που είναι αποθηκευμένες στο my_vector. Σημειώστε ότι έχουμε ήδη αποθηκεύσει μερικές τιμές στο my_vector για εσάς.

Θα μάθουμε για άλλα αντικείμενα της R που μας βοηθούν να οργανώνουμε και να οπτικοποιούμε δεδομένα καθώς προχωράμε στο μάθημα.

2.6 Τι Μπορείτε να Αποθηκεύσετε σε Αντικείμενα της R

Τα αντικείμενα της R μπορούν να θεωρηθούν ως δοχεία αποθήκευσης τιμών. Ένα αντικείμενο της R μπορεί να περιέχει μία μόνο τιμή ή ένα σύνολο τιμών, όπως στην περίπτωση ενός διανύσματος. Μέχρι στιγμής, έχουμε αποθηκεύσει μόνο αριθμούς σε αντικείμενα της R, αλλά τα αντικείμενα της R μπορούν να περιέχουν τρεις τύπους τιμών: αριθμητικές τιμές, χαρακτήρες και τιμές Boolean.

Αριθμητικές Τιμές

Όταν η R αναγνωρίζει ότι χρησιμοποιείτε αριθμούς, μπορεί να εκτελέσει διάφορες λειτουργίες. Έχουμε δει, για παράδειγμα, ότι η R μπορεί να εκτελέσει αριθμητικές πράξεις σε αριθμούς, όπως πρόσθεση, αφαίρεση, πολλαπλασιασμό και διαίρεση.

Σημειώστε ότι στην R, η χρήση της άνω και κάτω τελείας (:) με τη μορφή 1:10 δημιουργεί μια ακολουθία αριθμών από το 1 έως το 10. Αυτό είναι ιδιαίτερα χρήσιμο. Φανταστείτε την ανάγκη δημιουργίας ενός διανύσματος με τους αριθμούς από το 1 έως το 10.000! Η χρήση της άνω και κάτω τελείας θα εξοικονομούσε σημαντικό χρόνο.

Τιμές Χαρακτήρων

Οι χαρακτήρες (characters) αποτελούνται από κείμενο, όπως λέξεις ή προτάσεις. Οι αριθμοί μπορούν επίσης να αντιμετωπιστούν ως χαρακτήρες, ανάλογα με το πλαίσιο. Για παράδειγμα, όταν το 20 περικλείεται σε εισαγωγικά (“20”), αντιμετωπίζεται ως τιμή χαρακτήρα, παρόλο που περιέχει έναν αριθμό. Οι τιμές χαρακτήρων περικλείονται σε εισαγωγικά (” “). Η R συνήθως δεν κάνει διάκριση μεταξύ μονών (‘έτσι’) και διπλών εισαγωγικών (”έτσι”), αλλά θα χρησιμοποιούμε κυρίως διπλά εισαγωγικά για συνέπεια.

Εάν παραλείψουμε τα εισαγωγικά, η R θα θεωρήσει μια λέξη ως όνομα αντικειμένου αντί για τιμή χαρακτήρα.

Τιμές Boolean

Οι τιμές Boolean είναι είτε TRUE είτε FALSE. Μπορούμε να διατυπώσουμε ερωτήσεις όπως: «Είναι το πρώτο στοιχείο στο διάνυσμα many_hellos το ‘hi’;». Μπορούμε να ζητήσουμε από την R να το ελέγξει και να επιστρέψει την απάντηση TRUE ή FALSE. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας τον τελεστή σύγκρισης == (ίσον).

Μπορούμε επίσης να αποθηκεύσουμε αυτήν την απάντηση σε ένα αντικείμενο της R.

Οι περισσότερες ερωτήσεις που υποβάλλονται στην R για να απαντηθούν με TRUE ή FALSE περιλαμβάνουν τελεστές σύγκρισης όπως >, <, >=, <=, και ==. Ο τελεστής == ελέγχει αν δύο τιμές είναι ίσες. Υπάρχει επίσης ένας τελεστής σύγκρισης για να ελέγξετε αν οι τιμές δεν είναι ίσες: !=. Για παράδειγμα, 5 != 3 είναι μια TRUE δήλωση.

Σημειώστε ότι το compare στον παραπάνω κώδικα δεν είναι συνάρτηση. Το γνωρίζουμε αυτό επειδή δεν ακολουθείται από παρενθέσεις (). Το compare, σε αυτήν την περίπτωση, είναι απλώς ένα όνομα που επιλέξαμε για ένα αντικείμενο της R για να αποθηκεύσουμε το αποτέλεσμα Boolean της ερώτησης, “Είναι το A μεγαλύτερο από το B;”. Η απάντηση, όπως μπορούμε να δούμε, είναι FALSE.

Μπορούμε επίσης να δημιουργήσουμε Boolean διανύσματα εφαρμόζοντας μια σύγκριση σε ένα ολόκληρο διάνυσμα. Ας δημιουργήσουμε ένα αριθμητικό διάνυσμα με τους αριθμούς από το 1 έως το 10 (θα ονομάσουμε αυτό το διάνυσμα my_numbers). Στη συνέχεια, ας δημιουργήσουμε ένα διάνυσμα Boolean που ονομάζεται my_booleans για να αποθηκεύσουμε τα αποτελέσματα του ελέγχου αν κάθε αριθμός στο διάνυσμα my_numbers είναι μεγαλύτερος ή ίσος με το 5.

Στην R, θα πρέπει να αποφεύγουμε τη χρήση του ίσον (=). Εάν θέλετε να ελέγξετε αν το A είναι ίσο με το B, χρησιμοποιήστε το διπλό ίσον (==). Το μονό ίσον χρησιμοποιείται μερικές φορές αντί για τον τελεστή ανάθεσης (<-), το οποίο μπορεί να προκαλέσει σύγχυση, τόσο για εσάς όσο και για την R. Χρησιμοποιήστε το βέλος (<-) για να αναθέσετε τιμές σε ένα αντικείμενο της R και το == για να ελέγξετε αν δύο τιμές είναι ίσες.

Κώδικας που Κατανοούν οι Άνθρωποι

Οι γλώσσες προγραμματισμού προορίζονται κυρίως για επικοινωνία με υπολογιστές. Ωστόσο, υπάρχουν πολλές πρακτικές που ακολουθούμε όταν γράφουμε κώδικα R για να διευκολύνουμε την επικοινωνία με άλλους ανθρώπους. Για παράδειγμα, η R δεν επηρεάζεται από την προσθήκη κενών διαστημάτων. Μπορούμε να γράψουμε A <- 5 και να προσθέσουμε κενά διαστήματα. Αυτό δεν γίνεται για την R, καθώς θεωρεί ότι το A<-5 είναι το ίδιο με το A <- 5. Προσθέτουμε τα κενά διαστήματα για να κάνουμε τον κώδικα πιο ευανάγνωστο. Το ίδιο ισχύει και για τα σχόλια (που ξεκινούν με #). Η R αγνοεί αυτόν τον κώδικα, αλλά μπορεί να είναι χρήσιμος για έναν άνθρωπο που διαβάζει τον κώδικα.

Επίσης, πρέπει να έχουμε κατά νου ότι η R είναι μια γλώσσα υπολογιστή και δεν «σκέφτεται», δεν «ενδιαφέρεται» ούτε «αγνοεί» πραγματικά τίποτα. Ωστόσο, είναι σύνηθες να ανθρωποποιούμε την R. Πολλοί αναγνώστες αυτού του βιβλίου είναι αρχάριοι στον προγραμματισμό και ίσως τους φανεί χρήσιμο να σκέφτονται τον προγραμματισμό ως μια μορφή επικοινωνίας με την R.

2.7 Στόχοι του Μαθήματος

Λοιπόν, δεν σας αφήσαμε να ολοκληρώσετε την Εισαγωγή χωρίς να κάνετε λίγο πραγματικό προγραμματισμό σε R! Να κάνετε και να σκέφτεστε—αυτά είναι τα κύρια πράγματα με τα οποία πρέπει να γεμίζετε τον χρόνο σας καθώς προχωράτε σε αυτό το μάθημα. Το να κάνετε χωρίς να σκέφτεστε θα σας οδηγούσε σε απλή μηχανική απομνημόνευση διαδικασιών. Το να σκέφτεστε χωρίς να κάνετε θα ήταν φρικτά βαρετό—θα χάνατε το συναρπαστικό κομμάτι!

Οι στόχοι αυτού του μαθήματος είναι οι ακόλουθοι:

  • Πρώτον, να αναπτύξετε επάρκεια στην ανάλυση δεδομένων χρησιμοποιώντας την R. Ο στόχος είναι να αποκτήσετε σημαντική εμπειρία στην ανάλυση δεδομένων.

  • Δεύτερον, να αναπτύξετε μια ολοκληρωμένη κατανόηση των θεμελιωδών στατιστικών εννοιών. Αυτή η γνώση θα παρέχει μια στέρεη βάση για την ερμηνεία και την πλαισίωση των αναλύσεων που εκτελείτε.

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

Δεν Πρόκειται για Απομνημόνευση Κώδικα

Παρόλο που θα μάθετε πολλά για την R, υπάρχουν κυριολεκτικά χιλιάδες συναρτήσεις στην R, περισσότερες από όσες θα μπορούσε κανείς να θυμηθεί. Ακόμη και προχωρημένοι χρήστες της R δεν μπορούν να τα θυμούνται όλα.

Καθώς προχωράτε τη μελέτη αυτού του εγχειριδίου, μπορεί να βρείτε χρήσιμο να κρατάτε σημειώσεις για τις νέες συναρτήσεις της R που συναντάτε. Διαθέτουμε επίσης έναν Οδηγό της R σε pdf που μπορείτε να συμβουλεύεστε καθώς προχωράτε στο μάθημα. Έχει όλες τις εντολές που χρησιμοποιούμε σε αυτό το μάθημα οργανωμένες σε λίγες σελίδες.

2.8 Ερωτήσεις Επανάληψης Κεφαλαίου 2

1. Τι θα συμβεί στην R αν εκτελέσετε την εντολή print("StatsCourse");

Η εντολή print("StatsCourse") θα εμφανίσει το κείμενο “StatsCourse” στην κονσόλα της R. Τα εισαγωγικά υποδηλώνουν ότι το “StatsCourse” είναι κείμενο και όχι όνομα αντικειμένου.

2. Για να υπολογίσετε το άθροισμα των αριθμών 10 και 20, ποιον κώδικα σε R θα γράφατε;

Οι σωστές εντολές είναι sum(10,20) ή sum(10+20). Η R διακρίνει πεζά και κεφαλαία γράμματα, οπότε η Sum (με κεφαλαίο S) δεν θα λειτουργήσει. Επίσης, το 10,20 χωρίς τη συνάρτηση sum δεν θα υπολογίσει το άθροισμα.

3. Αν θέλετε να εισάγετε ένα σχόλιο στον κώδικα για προσωπική σας χρήση, χωρίς να εκτελεστεί από την R, πώς θα το κάνετε;

Στην R, το σύμβολο της δίεσης (#) χρησιμοποιείται για σχόλια. Οτιδήποτε ακολουθεί το # σε μια γραμμή αγνοείται από την R κατά την εκτέλεση. Παράδειγμα: # Αυτό είναι ένα σχόλιο

4. Έστω ότι θέλετε να εμφανίσετε τη λέξη “University”. Προσπαθήσατε με την εντολή print(University) αλλά λάβατε μήνυμα σφάλματος. Ποια είναι η σωστή εντολή;

Η σωστή εντολή είναι print("University"). Τα εισαγωγικά είναι απαραίτητα για να δηλώσουν ότι το “University” είναι κείμενο και όχι όνομα αντικειμένου. Χωρίς εισαγωγικά, η R θα αναζητήσει ένα αντικείμενο με όνομα University.

5. Έστω ότι θέλετε να δημιουργήσετε ένα αντικείμενο στην R, ώστε να μπορείτε να το χρησιμοποιήσετε αργότερα. Το αντικείμενο που θέλετε να δημιουργήσετε αντιπροσωπεύει τη Λέξη της Χρονιάς του Λεξικού της Οξφόρδης για το 2017, η οποία ήταν “youthquake”. Πώς θα δημιουργούσατε αυτό το αντικείμενο;

Η σωστή σύνταξη είναι oxford_word_2017 <- "youthquake". Το όνομα του αντικειμένου (oxford_word_2017) βρίσκεται στα αριστερά του βέλους ανάθεσης (<-), και η τιμή (“youthquake” με εισαγωγικά) στα δεξιά. Τα αντικείμενα στην R μπορούν να περιέχουν κείμενο, αριθμούς, και άλλους τύπους δεδομένων.

6. Έστω ότι θέλετε να δημιουργήσετε ένα διάνυσμα βαθμολογίας με το όνομα grade. Πώς θα το κάνατε;

Για να δημιουργήσετε διάνυσμα στην R, χρησιμοποιείτε τη συνάρτηση c() (combine). Η σωστή σύνταξη είναι grade <- c(13, 11.2, 10.5, 14.7, 13.5). Οι παρενθέσεις () μόνες τους ή η συνάρτηση vector() δεν είναι οι σωστοί τρόποι για αυτόν τον σκοπό.

7. Έχετε δημιουργήσει το διάνυσμα grade. Ο μαθητής που πέτυχε την τέταρτη βαθμολογία σε αυτό το διάνυσμα θέλει να μάθει την βαθμολογία του. Δοκιμάζετε GRADE[4], αλλά λαμβάνετε σφάλμα. Τι κάνατε λάθος;

Η R είναι case-sensitive, δηλαδή διακρίνει πεζά και κεφαλαία γράμματα. Εφόσον δημιουργήσατε το διάνυσμα με όνομα grade (πεζά), πρέπει να το καλέσετε με το ίδιο όνομα: grade[4]. Το GRADE[4] (κεφαλαία) αναφέρεται σε διαφορετικό αντικείμενο που δεν υπάρχει.

8. Ο ίδιος μαθητής θέλει να μάθει αν η βαθμολογία του ήταν 14,7. Πώς θα λάβετε την απάντηση;

Για να ελέγξετε αν δύο τιμές είναι ίσες, χρησιμοποιείτε τον τελεστή ισότητας == (διπλό ίσον). Το grade[4] == 14.7 θα επιστρέψει TRUE ή FALSE. Το μονό = και το <- χρησιμοποιούνται για ανάθεση τιμών, όχι για σύγκριση. Το >< δεν είναι έγκυρος τελεστής.

9. Ο μαθητής επιμένει να κάνει την ίδια ερώτηση. Αποφασίζετε να αποθηκεύσετε την απάντηση σε ένα αντικείμενο της R με όνομα concerned_student. Ποια γραμμή κώδικα θα δημιουργήσει αυτό το αντικείμενο;

Για να αποθηκεύσετε το αποτέλεσμα μιας σύγκρισης, χρησιμοποιείτε την ανάθεση <- με τον τελεστή ισότητας ==. Η σωστή σύνταξη είναι concerned_student <- grade[4] == 14.7. Αυτό θα αποθηκεύσει την τιμή TRUE ή FALSE στο αντικείμενο concerned_student.

10. Η καθηγήτρια ανακάλυψε ένα λάθος! Όλοι οι μαθητές που συμμετείχαν στην εξέταση του 2025 βαθμολογήθηκαν 0,5 βαθμό χαμηλότερα από ό,τι έπρεπε. Υποθέτοντας ότι υπάρχει ένα διάνυσμα με όνομα grade_2025 που περιλαμβάνει όλους τους βαθμούς, πώς θα προσθέσετε 0,5 βαθμό σε κάθε βαθμό στο διάνυσμα;

Στην R, οι αριθμητικές πράξεις με διανύσματα εφαρμόζονται σε κάθε στοιχείο του διανύσματος. Η εντολή grade_2025 + 0.5 θα προσθέσει 0,5 σε κάθε βαθμό του διανύσματος. Η sum() θα υπολογίσει το άθροισμα όλων των στοιχείων συμπεριλαμβανομένου του 0,5, όχι την πρόσθεσή του σε κάθε στοιχείο ξεχωριστά.

11. Τι αποτελέσμα θα δώσει ο ακόλουθος κώδικας;

grade <- c(1300,1120,1050,1470,1350)
first_score <- grade[1]
second_score <- grade[2]
first_higher <- first_score > second_score
first_higher

Ας ακολουθήσουμε τον κώδικα βήμα-βήμα: - first_score παίρνει την τιμή 1300 (πρώτο στοιχείο) - second_score παίρνει την τιμή 1120 (δεύτερο στοιχείο) - first_higher ελέγχει αν 1300 > 1120, που είναι αληθές - Άρα το αποτέλεσμα είναι TRUE

12. Γενικά, τι μελετάμε όταν ασχολούμαστε με τη στατιστική;

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

13. Χρησιμοποιήστε την R για να βρείτε το γινόμενο των αριθμών 12345 και 34567. Ποιο είναι το αποτέλεσμα; (Υπόδειξη: Χρησιμοποιήστε τη συνάρτηση "prod" για να υπολογίσετε το γινόμενο, όπως θα χρησιμοποιούσατε τη συνάρτηση "sum" για το άθροισμα.)

Μπορείτε να υπολογίσετε το γινόμενο με δύο τρόπους: - prod(12345, 34567) ή - 12345 * 34567

Και οι δύο τρόποι θα δώσουν το αποτέλεσμα 426729615. Η συνάρτηση prod() είναι χρήσιμη όταν έχετε πολλούς αριθμούς να πολλαπλασιάσετε.