Τι είναι αυτό? Πώς να το υπολογίσετε; .corr() στα πάντα
März 11, 2023Διερευνητική Ανάλυση Δεδομένων (EDA), Έργα Μηχανικής Μάθησης, Οικονομική/Χρηματοοικονομική ανάλυση, επιστημονική έρευνα, ακόμη και μεμονωμένα άρθρα για διαφορετικά θέματα σε εφημερίδες περιλαμβάνουν την εξέταση της συσχέτισης μεταξύ των μεταβλητών.
- Τι είναι όμως η συσχέτιση;
- Πώς το χρησιμοποιούμε;
- Μπορούμε να το μετρήσουμε;
- Μπορούμε να το οραματιστούμε;
- Τι είναι η αιτιότητα;
- Πώς βοηθάει την επιχείρησή σας;
Θα βρείτε τις απαντήσεις σε όλες αυτές τις ερωτήσεις σε αυτό το άρθρο!

Ο συγγραφέας αυτού του άρθρου είναι ο Levente Kulcsar από τη Σουηδία. Δημιουργεί εκπληκτικό περιεχόμενο επιστήμης δεδομένων στον λογαριασμό του στο twitter. Ακολούθα τον, εδώ.
Τι είναι η συσχέτιση;
Σύμφωνα με τη Wikipedia: «Η συσχέτιση αναφέρεται στο βαθμό στον οποίο ένα ζεύγος μεταβλητών σχετίζεται γραμμικά.” [1]
Σε απλά αγγλικά: η συσχέτιση είναι ένα μέτρο μιας στατιστικής σχέσης μεταξύ δύο συνόλων δεδομένων.
Ας ονομάσουμε αυτά τα δύο σύνολα δεδομένων X
και Y
τώρα για ένα μικρό παράδειγμα:.
Μεταβλητές του X
και Y
συσχετίζονται θετικά εάν:
- υψηλές τιμές του
X
πάει με υψηλές τιμές τουY
- χαμηλές τιμές του
X
πάει με χαμηλές τιμές τουY
Μεταβλητές X
και Y
συσχετίζονται αρνητικά εάν:
- υψηλές τιμές του
X
πάει με χαμηλές τιμές τουY
- χαμηλές τιμές του
X
πάει με υψηλές τιμές τουY
Σημείωση: Είναι σημαντικό να σημειωθεί ότι η συσχέτιση δεν συνεπάγεται αιτιότητα. Με άλλα λόγια, επειδή βλέπετε ότι δύο πράγματα συσχετίζονται μεταξύ τους, δεν σημαίνει απαραίτητα ότι το ένα προκαλεί το άλλο. Περισσότερα για αυτό αργότερα.
Εδώ είναι απεικονίσεις των συσχετισμών. (Μείνετε συντονισμένοι, θα μάθουμε πώς να δημιουργήσουμε αυτά τα scatterplots!)

Σε αυτό το παράδειγμα οι δύο μεταβλητές είναι skill
και attacking
. Φαίνεται ξεκάθαρα τόσο ψηλά skill
οι αξίες πάνε με υψηλά attacking
αξίες, επομένως συσχετίζονται θετικά.
Το επόμενο scatterplot είναι μια οπτική παρουσίαση μιας αρνητικής συσχέτισης (όχι τόσο ισχυρή ωστόσο):

Σε αυτή την περίπτωση ψηλά height_cm
οι τιμές πάνε με χαμηλά movement
αξίες.
Πώς μπορούμε να μετρήσουμε τη συσχέτιση;
Για να μετρήσουμε τη συσχέτιση, χρησιμοποιούμε συνήθως τον συντελεστή συσχέτισης Pearson, ο οποίος δίνει μια εκτίμηση της συσχέτισης μεταξύ δύο μεταβλητών.
Για να υπολογίσουμε τον συντελεστή Pearson, πολλαπλασιάζουμε τις αποκλίσεις από το μέσο όρο για X
φορές αυτές για Y
και διαιρέστε με το γινόμενο των τυπικών αποκλίσεων. Εδώ είναι ο τύπος: [2]

Σημείωση: όπως πάντα – είναι σημαντικό να καταλάβετε πώς υπολογίζετε τον συντελεστή Pearson – αλλά ευτυχώς, εφαρμόζεται σε panda, οπότε δεν χρειάζεται να πληκτρολογείτε όλη την φόρμουλα στην Python όλη την ώρα, μπορείτε απλώς να καλέσετε τη σωστή συνάρτηση… περισσότερα για ότι αργότερα.
Ο συντελεστής συσχέτισης Pearson είναι καλό να μετρηθεί γραμμική συσχέτιση.
Περίμενε! Έχουμε και μη γραμμική συσχέτιση; Ναι, έχουμε, οπότε ήρθε η ώρα να ορίσουμε ποια είναι η διαφορά.
- Γραμμική συσχέτιση: Η συσχέτιση είναι γραμμική αν ο λόγος μεταβολής είναι σταθερός. [3] Αν διπλασιάσουμε το Χ, θα διπλασιαστεί και το Υ.
- Μη γραμμική συσχέτιση: Αν ο λόγος της μεταβολής δεν είναι σταθερός, αντιμετωπίζουμε μη γραμμική συσχέτιση. [3] Για να μετρήσουμε τη μη γραμμική συσχέτιση, χρησιμοποιούμε το Συσχέτιση Spearman συντελεστής. Περισσότερα για αυτό εδώ [4]
Επιστροφή λοιπόν στη γραμμική συσχέτιση και στον συντελεστή Pearson. Ο συντελεστής έχει πάντα μια τιμή μεταξύ −1
και 1
.
-1
σημαίνει τέλεια αρνητική γραμμική συσχέτιση+1
σημαίνει τέλεια θετική γραμμική συσχέτιση0
σημαίνει ότι δεν υπάρχει γραμμική εξάρτηση μεταξύ των μεταβλητών.
Μερικά παραδείγματα από άρθρο της Wikipedia:

Τι μας λέει ο συντελεστής συσχέτισης Pearson;
- ο «θόρυβος» της σχέσης,
- την κατεύθυνση της σχέσης
Τι κάνει ο συντελεστής δεν πες μας?
- Η κλίση της σχέσης
- Αν υπάρχει σχέση, αλλά όχι απαραίτητα γραμμική. (Π.χ. στην εικόνα από το άρθρο της Wikipedia παραπάνω, μπορούμε να υποθέσουμε ότι υπάρχει κάποιο είδος συσχέτισης στην κάτω σειρά, αλλά επειδή δεν είναι γραμμικές, δεν μπορούμε να τις μετρήσουμε με τον συντελεστή συσχέτισης του Pearson.)
Συσχέτιση vs αιτιότητα
Είναι σημαντικό να κατανοήσουμε ότι εάν δύο τιμές συσχετίζονται, δεν σημαίνει ότι η μία προκαλεί την άλλη.
Η συσχέτιση δεν συνεπάγεται αιτιότητα – όπως λένε.
Σημαίνει μόνο αυτό X
και Y
κινούνται μαζί. Αλλά αυτή η συσχέτιση μπορεί να οφείλεται:
- Αιτία
- Τρίτη μεταβλητή
- Σύμπτωση
Τι είναι η αιτιότητα
Αιτιώδης συνάφεια σημαίνει ότι υπάρχει σχέση αιτίου-αποτελέσματος μεταξύ X
και Y
. Το αποτέλεσμα αυτού του συνδέσμου είναι ότι εάν μια αλλαγή σε X
συμβαίνει, μια αλλαγή σε Y
θα συμβεί επίσης.
Ένα πολύ απλό παράδειγμα:
(Γενικά) όταν κάποιος ασκείται περισσότερο, θα αποκτήσει περισσότερους μυς.
Αλλά όταν σκεφτόμαστε την αιτιότητα πρέπει να είμαστε προσεκτικοί, γιατί μπορεί να προκύψουν κάποια προβλήματα.
Πρόβλημα τρίτης μεταβλητής
Για παράδειγμα, συνήθως βλέπουμε μια θετική συσχέτιση μεταξύ των επιθέσεων καρχαρία και των πωλήσεων παγωτού. Μπορούμε να συμπεράνουμε ότι υπάρχει αιτιότητα μεταξύ αυτών των μεταβλητών; Φυσικά και όχι. Οι πωλήσεις παγωτού δεν θα προκαλέσουν επιθέσεις καρχαριών και το αντίστροφο.
Αντίθετα, μια τρίτη μεταβλητή εισέρχεται στη συνομιλία: θερμοκρασία.
Όταν είναι πιο ζεστό έξω, περισσότεροι άνθρωποι αγοράζουν παγωτό και περισσότεροι άνθρωποι κολυμπούν στον ωκεανό. [5]
Αυτό είναι ένα τυπικό παράδειγμα για το πρόβλημα της τρίτης μεταβλητής. Το πρόβλημα της τρίτης μεταβλητής σημαίνει ότι X
και Y
συσχετίζονται, αλλά μια τρίτη μεταβλητή Z
προκαλεί τις αλλαγές τόσο σε X
και Y
.
Πρόβλημα κατευθυντικότητας
Ένα άλλο πράγμα που πρέπει να εξετάσουμε είναι η κατεύθυνση της σχέσης.
Οι επιθετικοί άνθρωποι παρακολουθούν πολλή βία στην τηλεόραση.
Αλλά η βία στην τηλεόραση τους κάνει επιθετικούς; Ή είναι επιθετικοί, επομένως παρακολουθούν βία στην τηλεόραση;
Δεν μπορούμε να πούμε με βεβαιότητα.
Πρόβλημα κατευθυντικότητας σημαίνει ότι το γνωρίζουμε X
και Y
συσχετίζονται και υποθέτουμε ότι υπάρχει σύνδεση μεταξύ τους, αλλά δεν ξέρουμε αν X
αιτίες Y
ή Y
αιτίες X
.
Ψευδής συσχέτιση
Μια ψευδής συσχέτιση είναι όταν δύο μεταβλητές συνδέονται μέσω μιας κρυφής τρίτης μεταβλητής ή απλώς από σύμπτωση. [7]
Μπορείτε να βρείτε μερικά αστεία παραδείγματα Ψευδής Συσχέτισης εδώ[6]

Συσχέτιση στα Πάντα
Τώρα είναι ώρα για κωδικοποίηση!
Πρώτα πρέπει να εισάγουμε πακέτα και τα δεδομένα μας. Σε αυτή την άσκηση θα χρησιμοποιήσουμε Το top 650 του FIFA 22 του Kaggle Παίκτες.
import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt data = pd.read_csv('../input/top-650-fifa-22-players-simplified/Top_650_FIFA.csv')
Αυτό το σύνολο δεδομένων περιέχει λεπτομέρειες παικτών από το γνωστό παιχνίδι υπολογιστή ποδοσφαίρου. Θα εστιάσουμε κυρίως στις δεξιότητές τους, όπως δύναμη, νοοτροπία, πάσες, σουτ κ.λπ. Κάθε παίκτης έχει βαθμολογία 100 σε αυτές τις κατηγορίες.
Σημείωση: μπορείτε να μάθετε τα βασικά των Pandas και πώς να φορτώνετε ένα σύνολο δεδομένων σε panda, εδώ: https://data36.com/pandas-tutorial-1-basics-reading-data-files-dataframes-data-selection/
Πίνακας συσχέτισης – Πώς να χρησιμοποιήσετε το .corr()
Ο ευκολότερος τρόπος για να ελέγξετε τη συσχέτιση μεταξύ των μεταβλητών είναι να χρησιμοποιήσετε το .corr()
μέθοδος.
data.corr()
θα μας δώσει τον πίνακα συσχέτισης για το σύνολο δεδομένων. Εδώ είναι ένα μικρό δείγμα από το μεγάλο τραπέζι:

Σημείωση: Εάν θέλετε να μάθετε λεπτομερώς πώς να διαβάζετε αυτόν τον πίνακα, ελέγξτε αυτό το άρθρο έξω.
Θα χρησιμοποιήσουμε μόνο μερικές από τις στήλες για καλύτερη κατανόηση. Επίσης, στήλες όπως το ευρετήριο (Unnamed 0
) και club_jersey_number
δεν μας αφορούν. Δεν προβλέπουμε καμία σύνδεση μεταξύ ενός αριθμού φανέλας και των ικανοτήτων του παίκτη.
Θα ορίσουμε μια μεταβλητή με ονόματα στηλών και θα εφαρμόσουμε .corr()
μόνο σε αυτές τις στήλες:
columns = ['age', 'height_cm', 'weight_kg', 'skill_moves',
'pace','shooting','passing',
'dribbling','defending','physic',
'attacking','skill','movement','power']
data[columns].corr()
Και πάλι, εδώ είναι μέρος του πίνακα:

Σημείωση: .corr()
από προεπιλογή θα χρησιμοποιεί τον συντελεστή Pearson. μπορούμε να το αλλάξουμε ορίζοντας το method
μέσα στις παρενθέσεις. Χρήση method= 'spearman'
για να ελέγξετε τον συντελεστή Spearman και τη μη γραμμική συσχέτιση.
Χρωματισμός του πίνακα συσχέτισης (έτσι είναι ευκολότερο να διαβαστεί)
Δεδομένου ότι ο πίνακας περιέχει πολλούς αριθμούς, είναι δύσκολο να διαβαστεί. Για καλύτερη κατανόηση, μπορούμε να προσθέσουμε λίγο χρωματισμό.
Σε αυτό το παράδειγμα χρησιμοποίησα ένα ντεγκραντέ φόντο που ονομάζεται coolwarm
προσθέτοντας .style.background_gradient(cmap='coolwarm')
στο τέλος του κωδικού που ορίστηκε προηγουμένως.
Το αποτέλεσμα για:
data[columns].corr().style.background_gradient(cmap='coolwarm')
θα είναι κάπως έτσι:

Από τον πίνακα που παρουσιάζεται με αυτόν τον τρόπο, μπορείτε να βρείτε αμέσως τις αρνητικές και θετικές συσχετίσεις.
Χρησιμοποιώντας αυτά τα χρώματα, είναι επίσης εύκολο να εντοπιστεί ότι ο πίνακας συσχέτισης περιέχει κάθε τιμή δύο φορές. Καθρεφτίζεται στη διαγώνιο.
Για να καθαρίσουμε ακόμα περισσότερο το τραπέζι θα χρησιμοποιήσουμε θαλασσινά και μάσκες.
Σημείωση: Για καλύτερη κατανόηση του τρόπου με τον οποίο χρησιμοποιούμε τη μάσκα σε αυτό το παράδειγμα κάντε κλικ εδώ [9]
import seaborn as sns import matplotlib.pyplot as plt corrmat = data[columns].corr() mask= np.zeros_like(corrmat) mask[np.triu_indices_from(mask)] = True sns.heatmap(corrmat, vmax=1, vmin=-1, annot=True, annot_kws={'fontsize':7}, mask=mask, cmap=sns.diverging_palette(20,220,as_cmap=True))


Scatterplots
Μπορούμε να απεικονίσουμε ένα ζεύγος μεταβλητών και να ελέγξουμε αν συσχετίζονται ή όχι και σε διαγράμματα διασποράς.
Στα Pandas πρέπει απλώς να χρησιμοποιήσουμε .plot.scatter()
και ορίστε το δικό μας X
και Y
μεταβλητές:
data.plot.scatter(x='attacking',y='skill')

Σημείωση: Παρατηρήσατε ότι αυτό είναι το διάγραμμα που έχουμε ήδη συζητήσει στην αρχή;
Γνωρίζουμε από τον πίνακα ότι ο συντελεστής συσχέτισης για τις δύο μεταβλητές είναι 0.95
επομένως συσχετίζονται ισχυρά, θετικά.
Απλά πρέπει να αλλάξουμε το x
και y
ονόματα μεταβλητών για την αναδημιουργία του παραδείγματος γραφήματος για αρνητική συσχέτιση. (ο συντελεστής corr είναι -0.7
):
data.plot.scatter(x='movement',y='height_cm')

Τι γίνεται με τη μη συσχέτιση; Πώς μοιάζει αυτό;
Εδώ είναι το παράδειγμα (ο συντελεστής corr είναι 0.1
):
data.plot.scatter(x='passing',y='pace')

Μπορείτε επίσης να χρησιμοποιήσετε seaborn
να απεικονίσει όχι μόνο ένα ζεύγος μεταβλητών σε διαγράμματα διασποράς.
Προσθέτωντας .pairplots()
θα δημιουργήσει έναν πίνακα διασκορπισμού.
Περισσότερα για τα pairplots εδώ [10].
columns = ['age', 'height_cm', 'weight_kg', 'movement','pace']
sns.pairplot(data[columns])

Πώς η συσχέτιση μπορεί να βοηθήσει την επιχείρησή σας;
Η συσχέτιση χρησιμοποιείται ευρέως στη λήψη αποφάσεων στην πραγματική ζωή. Θα βρείτε συσχέτιση σε Μάρκετινγκ, Οικονομικά, Πωλήσεις, βασικά θα μπορούσαμε να αναφέρουμε τομείς ατελείωτα.
Μερικά οφέλη:
- Αναγνώριση μοτίβου. Στον κόσμο των μεγάλων δεδομένων, η εξέταση εκατομμυρίων σειρών ακατέργαστων δεδομένων δεν θα σας πει τίποτα για την επιχείρηση. Η χρήση των υπαρχουσών πληροφοριών για καλύτερη λήψη αποφάσεων θα είναι ζωτικής σημασίας στο μέλλον. Μπορεί να αποκαλύψει νέες επιχειρηματικές ευκαιρίες, να δώσει πληροφορίες για τις υπάρχουσες διαδικασίες και να βοηθήσει στη σαφή επικοινωνία. Η αναγνώριση προτύπων είναι ένας από τους κύριους στόχους της επιστήμης δεδομένων και η ανάλυση συσχέτισης μπορεί να βοηθήσει σε αυτό.
- Λήψη οικονομικών αποφάσεων – επενδυτικές αποφάσεις. Η διαφοροποίηση είναι απαραίτητη. Η επένδυση σε αρνητικά συσχετιζόμενους τομείς μπορεί να σας βοηθήσει να μειώσετε τον κίνδυνο.
Για παράδειγμα: εάν ο κλάδος των αεροπορικών εταιρειών συσχετίζεται αρνητικά με τον κλάδο των μέσων κοινωνικής δικτύωσης, ο επενδυτής μπορεί να επιλέξει να επενδύσει σε μια μετοχή μέσων κοινωνικής δικτύωσης. Εάν ένα αρνητικό γεγονός επηρεάσει έναν από αυτούς τους κλάδους, ο άλλος τομέας θα είναι ένα ασφαλέστερο μέρος για τα χρήματα [11]
- Προβολές. Εάν μια εταιρεία βρει θετική συσχέτιση μεταξύ δύο μεταβλητών και έχει κάποιες προβλέψεις για τη μία μεταβλητή που εμπλέκεται στη συσχέτιση, τότε μπορεί να προσπαθήσει να κάνει προβλέψεις και για τη δεύτερη μεταβλητή.
Για παράδειγμα: Η εταιρεία Χ διαπιστώνει θετική συσχέτιση μεταξύ του αριθμού των τουριστών στην πόλη Υ και των πωλήσεών της. Αύξηση 10% στους επισκέπτες για το επόμενο έτος προβλέπεται στην πόλη Υ. Η εταιρεία Χ μπορεί να προβλέψει αύξηση και στις πωλήσεις. Φυσικά, όταν φτάνουμε σε προβλέψεις, θα πρέπει πάντα να εξετάζουμε το προαναφερθέν ζήτημα συσχέτισης-αιτιότητας.
Όλες οι προαναφερθείσες δραστηριότητες θα ενισχύσουν τη λήψη αποφάσεων, θα μειώσουν τον κίνδυνο, θα αποκαλύψουν νέες ευκαιρίες μέσω συσχέτισης.
Στην υγειά σας,
Λεβί Κουλτσάρ
Πηγές
[1]: https://en.wikipedia.org/wiki/Correlation
[2]: Practical Statistics for Data Scientists από τους Peter Bruce, Andrew Bruce και Peter Gedeck (O’Reilly).
[3]: https://www.emathzone.com/tutorials/basic-statistics/linear-and-non-linear-correlation.html
[4]: https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient
[5]: https://www.statology.org/third-variable-problem/
[6]: http://www.tylervigen.com/spurious-correlations
[7]: https://www.scribbr.com/methodology/correlation-vs-causation/
[8]: https://www.statology.org/how-to-read-a-correlation-matrix/
[9]: https://www.kdnuggets.com/2019/07/annotated-heatmaps-correlation-matrix.html#
[10]: https://twitter.com/levikul09/status/1542051235510902784?s=20&t=vPWeG5_Yhi3AJ7RDo4ZsiA