library(tidyverse)
library(lubridate)
library(janitor)
library(ggplot2)
Για την ανάλυση επιλέχθηκε το dataset Microsoft Stock Data. Το dataset περιέχει καθημερινά χρηματιστηριακά δεδομένα της εταιρείας Microsoft. Κάθε γραμμή αντιστοιχεί σε μια ημέρα συναλλαγής και περιλαμβάνει τα πεδία:
Η πηγή όπου πήρα το dataset είναι το Kaggle.
Το συγκεκριμένο dataset είναι κατάλληλο για επιχειρηματική αναλυτική γιατί:
Παρέχει μεγάλο χρονικό εύρος το οποίο διευκολύνει την ανίχνευση τάσεων (trends)
Επιτρέπει μοντέλα πρόβλεψης τιμών και αξιολόγηση επενδυτικών στρατηγικών. (forecasting)
Μπορεί να συσχετιστεί με χρηματοοικονομικά γεγονότα, ανακοινώσεις κερδών ή αλλαγές στρατηγικής της εταιρείας.
Είναι ακριβές και δομημένο σταθερά, άρα υποστηρίζει αξιόπιστα στατιστικά μοντέλα.
Πώς μεταβάλλεται η τιμή της μετοχής της Microsoft με την πάροδο του χρόνου.
Ποια περίοδος έχει τη μεγαλύτερη αστάθεια.
Υπάρχει σχέση μεταξύ όγκου συναλλαγών και μεταβολής της τιμής κλεισίματος.
Ποιες μέρες εμφανίζουν ασυνήθιστα υψηλό όγκο και τι σημαίνει αυτό.
Πόσο προβλέψιμες είναι οι τιμές βάσει των ιστορικών δεδομένων.
Το dataset MSFT περιέχει 6 αριθμητικές μεταβλητές και 1 χρονική μεταβλητή.
Πιο αναλυτικά:
| Μεταβλητή | Τύπος | Περιγραφή | Εύρος Τιμών | Μονάδες μέτρησης |
|---|---|---|---|---|
| Date | Date / Character | Ημερομηνία χρηματιστηριακής συνεδρίασης | 1986 – 2022 | - |
| Open | Numeric | Τιμή ανοίγματος της ημέρας | 0.06 – 350 | USD |
| High | Numeric | Μέγιστη τιμή ημέρας | 0.10 – 350+ | USD |
| Low | Numeric | Ελάχιστη τιμή ημέρας | 0.05 – 340 | USD |
| Close | Numeric | Τιμή κλεισίματος | 0.09 – 340+ | USD |
| Adj Close | Numeric | Προσαρμοσμένη τιμή κλεισίματος | 0.06 – 330 | USD |
| Volume | Integer | Πλήθος μετοχών που διακινήθηκαν | Από λίγα M-~300M | Μετοχές |
Ο μέσος όρος δείχνει την “κεντρική” τιμή της μεταβλητής. Βοηθά να δούμε ποια ήταν η τυπική τιμή ανοίγματος, κλεισίματος και ποιος ήταν ο μέσος όγκος συναλλαγών.
# Μέσος Όρος (Mean)
mean_open <- mean(df$open, na.rm = TRUE)
mean_close <- mean(df$close, na.rm = TRUE)
mean_volume <- mean(df$volume, na.rm = TRUE)
mean_open
mean_close
mean_volume
Η διάμεσος είναι η τιμή που βρίσκεται στη μέση όταν ταξινομήσουμε τις παρατηρήσεις και είναι πιο σταθερό μέτρο από τον μέσο όρο όταν υπάρχουν ακραίες τιμές.
median_open <- median(df$open, na.rm = TRUE)
median_close <- median(df$close, na.rm = TRUE)
median_volume <- median(df$volume, na.rm = TRUE)
median_open
median_close
median_volume
Η επικρατούσα τιμή είναι η τιμή που εμφανίζεται πιο συχνά. Στα χρηματιστηριακά δεδομένα συνήθως δεν έχει ιδιαίτερη χρήση, γιατί οι τιμές είναι συνεχείς και δύσκολα επαναλαμβάνονται ακριβώς.
mode_fn <- function(x){
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
mode_open <- mode_fn(df$open)
mode_close <- mode_fn(df$close)
mode_volume <- mode_fn(df$volume)
mode_open
mode_close
mode_volume
Η τυπική απόκλιση είναι ένα από τα πιο βασικά μέτρα διασποράς και μας δείχνει πόσο απλώνονται οι τιμές της μεταβλητής γύρω από τον μέσο όρο.
Μικρή τυπική απόκλιση: οι τιμές είναι συγκεντρωμένες κοντά στον μέσο όρο (χαμηλή μεταβλητότητα)
Μεγάλη τυπική απόκλιση: οι τιμές απέχουν πολύ από τον μέσο όρο (υψηλή μεταβλητότητα)
Στο χρηματιστήριο, η τυπική απόκλιση είναι πολύ χρήσιμη γιατί δείχνει πόσο “ήρεμη” ή “ασταθής” είναι η μετοχή.
sd_open <- sd(df$open, na.rm = TRUE)
sd_close <- sd(df$close, na.rm = TRUE)
sd_volume <- sd(df$volume, na.rm = TRUE)
sd_open
sd_close
sd_volume
Η διακύμανση είναι μέτρο διασποράς που μας δείχνει πόσο αποκλίνουν οι τιμές από τον μέσο όρο και πρακτικά μετράει πόσο διαφορετικές είναι οι τιμές μεταξύ τους.
Υψηλή διακύμανση: οι τιμές αλλάζουν πολύ από μέρα σε μέρα (υψηλή αστάθεια)
Χαμηλή διακύμανση: οι τιμές είναι πιο κοντά η μία στην άλλη (σταθερότερη συμπεριφορά)
Στα χρηματιστηριακά δεδομένα η διακύμανση είναι πολύ χρήσιμη γιατί επιτρέπει να καταλάβουμε πόσο επικίνδυνη/μεταβλητή είναι μια μετοχή. Η Microsoft, για παράδειγμα, στις σύγχρονες περιόδους δείχνει σχετικά σταθερή μεταβολή τιμών, ενώ ο όγκος συναλλαγών έχει συνήθως πολύ μεγαλύτερη διακύμανση.
var_open <- var(df$open, na.rm = TRUE)
var_close <- var(df$close, na.rm = TRUE)
var_volume <- var(df$volume, na.rm = TRUE)
var_open
var_close
var_volum
Το εύρος (range) είναι ένα πολύ απλό και χρήσιμο μέτρο διασποράς. Δείχνει τη συνολική “απόσταση” που καλύπτει μια μεταβλητή μέσα στο dataset.
Μεγάλο εύρος: μεγάλη συνολική μεταβολή των τιμών
Μικρό εύρος: πιο συγκεντρωμένες τιμές
Για τις τιμές μιας μετοχής: δείχνει πόσο έχει κινηθεί μέσα στο
διάστημα της ανάλυσης
Για τον όγκο συναλλαγών: συνήθως είναι τεράστιο και μπορεί να κυμαίνεται
από λίγα εκατομμύρια έως εκατοντάδες εκατομμύρια μετοχές.
range_open <- max(df$open, na.rm = TRUE) - min(df$open, na.rm = TRUE)
range_close <- max(df$close, na.rm = TRUE) - min(df$close, na.rm = TRUE)
range_volume <- max(df$volume, na.rm = TRUE) - min(df$volume, na.rm = TRUE)
range_open
range_close
range_volume
Η συσχέτιση (correlation) δείχνει πόσο σχετίζονται δύο
αριθμητικές μεταβλητές μεταξύ τους.
Οι τιμές της συσχέτισης κυμαίνονται από:
1: τέλεια θετική συσχέτιση
0: καμία γραμμική σχέση
−1: τέλεια αρνητική συσχέτιση (η μία αυξάνει, η άλλη μειώνεται)
Στο dataset της Microsoft:
Open, High, Low, Close: έχουν πολύ υψηλή συσχέτιση, επειδή αφορούν την ίδια μέρα
Adj Close: έχει σχεδόν τέλεια συσχέτιση με την Close επειδή είναι προσαρμοσμένη έκδοση της ίδιας τιμής.
Volume: έχει μικρότερη συσχέτιση με τις τιμές γιατί ο όγκος δεν ανεβοκατεβαίνει απαραίτητα μαζί με την τιμή της μετοχής.
Όλες αυτές οι συσχετίσεις φαίνονται ξεκάθαρα στον πίνακα συσχετίσεων:
cor_matrix <- cor(df[, c("open", "high", "low", "close", "adj_close", "volume")],
use = "complete.obs")
cor_matrix
👩🏻💻
ggplot(data = MSFT, aes(x = Open, y = Close)) +
geom_point(size = 3, alpha = 0.7, color = "blue") +
labs(
title = "Τιμή Ανοίγματος vs Τιμή Κλεισίματος Μετοχής Microsoft",
x = "Τιμή Ανοίγματος",
y = "Τιμή Κλεισίματος"
) +
theme_classic()
Σχολιασμός
Το διάγραμμα δείχνει τη σχέση μεταξύ της τιμής ανοίγματος και της τιμής κλεισίματος της μετοχής. Παρατηρείται ότι οι δύο μεταβλητές έχουν ισχυρή συσχέτιση, καθώς όταν η τιμή ανοίγματος είναι υψηλότερη, και η τιμή κλεισίματος είναι υψηλή. Αυτό δείχνει ότι οι ημερήσιες μεταβολές της μετοχής είναι συνήθως μικρές σε σχέση με τη συνολική της αξία.
👩🏻💻
#Δημιουργώ το έτος από την ημερομηνία
MSFT$Year <- format(as.Date(MSFT$Date), "%Y")
ggplot(data = MSFT, aes(x = factor(Year), y = Close, fill = factor(Year))) +
geom_boxplot(alpha = 0.7) +
labs(
title = "Κατανομή Τιμής Κλεισίματος ανά Έτος",
x = "Έτος",
y = "Τιμή Κλεισίματος",
fill = "Έτος"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Τροποποίηση της εμφάνισης των ετικετών στον άξονα x
# Με γωνία 45 μοιρών για να διβάζονται καλύτερα
Σχολιασμός
Το διάγραμμα δείχνει την κατανομή της τιμής κλεισίματος της μετοχής ανά έτος. Κάθε κουτί στο διάγραμμα δείχνει πώς κατανέμονται οι τιμές της μετοχής μέσα στη συγκεκριμένη χρονιά. Έτσι, μπορούμε να δούμε πώς μεταβάλλεται η τιμή της μετοχής της Microsoft μέσα στα χρόνια και αν υπάρχουν μεγάλες διακυμάνσεις.
👩🏻💻
ggplot(data = MSFT, aes(x = Close)) +
geom_histogram(binwidth = 10, fill = "purple", color = "#4302d9") +
labs(
title = "Κατανομή Τιμής Κλεισίματος της Μετοχής Microsoft",
x = "Τιμή Κλεισίματος",
y = "Συχνότητα"
) +
theme_minimal()
Σχολιασμός
Το ιστόγραμμα παρουσιάζει τη συχνότητα εμφάνισης των τιμών κλεισίματος της μετοχής της Microsoft. Μέσα από το διάγραμμα μπορούμε να εντοπίσουμε σε ποια επίπεδα τιμών εμφανίζονται πιο συχνά οι τιμές της μετοχής και να παρατηρήσουμε τη συνολική μορφή της κατανομής.
👩🏻💻
ggplot(data = MSFT, aes(x = factor(Year), y = Close, fill = factor(Year))) +
stat_summary(fun = mean, geom = "bar") +
labs(
title = "Μέση Τιμή Κλεισίματος της Μετοχής Microsoft ανά Έτος",
x = "Έτος",
y = "Μέση Τιμή Κλεισίματος"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "none"
# Τροποποίηση της εμφάνισης των ετικετών στον άξονα x
# Με γωνία 45 μοιρών για να διβάζονται καλύτερα
)
Σχολιασμός
Το bar chart παρουσιάζει τη μέση τιμή κλεισίματος της μετοχής της Microsoft για κάθε έτος. Κάθε μπάρα αντιστοιχεί σε ένα έτος και το ύψος της δείχνει τη μέση τιμή κλεισίματος των ημερών του αντίστοιχου έτους. Το διάγραμμα βοηθά στην κατανόηση της γενικής τάσης της μετοχής μέσα στον χρόνο.