title: “Analysis of Video Games” author: “Anastasios Politis” output: pdf_document —
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
Το dataset περιλαμβάνει δεδομένα για τις πωλήσεις 16.598
βιντεοπαιχνιδιών σε διαφορετικές πλατφόρμες και περιοχές.
Πηγή: Kaggle (https://www.kaggle.com/datasets/gregorut/videogame-sales-with-ratings)
Οι βασικές μεταβλητές του dataset είναι:
Rank: Αριθμητική, δείχνει την κατάταξη του παιχνιδιού
με βάση τις συνολικές πωλήσεις.Name: Κατηγορική (χαρακτήρες), όνομα παιχνιδιού.Platform: Κατηγορική, πλατφόρμα στην οποία κυκλοφόρησε
(π.χ. PS2, Xbox).Year: Αριθμητική/Χρονική, έτος κυκλοφορίας.Genre: Κατηγορική, είδος παιχνιδιού (π.χ. Action,
Sports).Publisher: Κατηγορική, εκδότης του παιχνιδιού.NA_Sales, EU_Sales, JP_Sales,
Other_Sales: Αριθμητικές, πωλήσεις ανά γεωγραφική περιοχή
(σε εκατομμύρια).Global_Sales: Αριθμητική, συνολικές παγκόσμιες πωλήσεις
(σε εκατομμύρια).Παρακάτω γίνεται χρήση των συναρτήσεων str() και
summary() για να παρουσιαστεί η δομή και στατιστική
επισκόπηση του dataset.
Κατανόηση της Αγοράς:
Οι εταιρείες gaming μπορούν να αναγνωρίσουν τις προτιμήσεις των παικτών
και να προβλέψουν ποιες πλατφόρμες και είδη παιχνιδιών είναι πιο
δημοφιλή.
Ανάπτυξη Στρατηγικών Μάρκετινγκ:
Οι εκδότες μπορούν να προσαρμόσουν τις στρατηγικές τους βάσει
γεωγραφικών πωλήσεων, βελτιστοποιώντας τις καμπάνιες τους.
Πρόβλεψη Τάσεων & Επιτυχιών:
Η προγνωστική ανάλυση μπορεί να εντοπίσει μοτίβα που βοηθούν στην
πρόβλεψη εμπορικής επιτυχίας μελλοντικών τίτλων.
Βελτιστοποίηση Κυκλοφοριών:
Η ανάλυση αποκαλύπτει ποιες περίοδοι είναι κατάλληλες για κυκλοφορία
παιχνιδιών, αυξάνοντας τις πωλήσεις.
vgsales <- read.csv("vgsales.csv")
head(vgsales)
## Rank Name Platform Year Genre Publisher NA_Sales
## 1 1 Wii Sports Wii 2006 Sports Nintendo 41.49
## 2 2 Super Mario Bros. NES 1985 Platform Nintendo 29.08
## 3 3 Mario Kart Wii Wii 2008 Racing Nintendo 15.85
## 4 4 Wii Sports Resort Wii 2009 Sports Nintendo 15.75
## 5 5 Pokemon Red/Pokemon Blue GB 1996 Role-Playing Nintendo 11.27
## 6 6 Tetris GB 1989 Puzzle Nintendo 23.20
## EU_Sales JP_Sales Other_Sales Global_Sales
## 1 29.02 3.77 8.46 82.74
## 2 3.58 6.81 0.77 40.24
## 3 12.88 3.79 3.31 35.82
## 4 11.01 3.28 2.96 33.00
## 5 8.89 10.22 1.00 31.37
## 6 2.26 4.22 0.58 30.26
str(vgsales)
## 'data.frame': 16598 obs. of 11 variables:
## $ Rank : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name : chr "Wii Sports" "Super Mario Bros." "Mario Kart Wii" "Wii Sports Resort" ...
## $ Platform : chr "Wii" "NES" "Wii" "Wii" ...
## $ Year : chr "2006" "1985" "2008" "2009" ...
## $ Genre : chr "Sports" "Platform" "Racing" "Sports" ...
## $ Publisher : chr "Nintendo" "Nintendo" "Nintendo" "Nintendo" ...
## $ NA_Sales : num 41.5 29.1 15.8 15.8 11.3 ...
## $ EU_Sales : num 29.02 3.58 12.88 11.01 8.89 ...
## $ JP_Sales : num 3.77 6.81 3.79 3.28 10.22 ...
## $ Other_Sales : num 8.46 0.77 3.31 2.96 1 0.58 2.9 2.85 2.26 0.47 ...
## $ Global_Sales: num 82.7 40.2 35.8 33 31.4 ...
summary(vgsales)
## Rank Name Platform Year
## Min. : 1 Length:16598 Length:16598 Length:16598
## 1st Qu.: 4151 Class :character Class :character Class :character
## Median : 8300 Mode :character Mode :character Mode :character
## Mean : 8301
## 3rd Qu.:12450
## Max. :16600
## Genre Publisher NA_Sales EU_Sales
## Length:16598 Length:16598 Min. : 0.0000 Min. : 0.0000
## Class :character Class :character 1st Qu.: 0.0000 1st Qu.: 0.0000
## Mode :character Mode :character Median : 0.0800 Median : 0.0200
## Mean : 0.2647 Mean : 0.1467
## 3rd Qu.: 0.2400 3rd Qu.: 0.1100
## Max. :41.4900 Max. :29.0200
## JP_Sales Other_Sales Global_Sales
## Min. : 0.00000 Min. : 0.00000 Min. : 0.0100
## 1st Qu.: 0.00000 1st Qu.: 0.00000 1st Qu.: 0.0600
## Median : 0.00000 Median : 0.01000 Median : 0.1700
## Mean : 0.07778 Mean : 0.04806 Mean : 0.5374
## 3rd Qu.: 0.04000 3rd Qu.: 0.04000 3rd Qu.: 0.4700
## Max. :10.22000 Max. :10.57000 Max. :82.7400
colSums(is.na(vgsales))
## Rank Name Platform Year Genre Publisher
## 0 0 0 0 0 0
## NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales
## 0 0 0 0 0
Υπολογίζουμε βασικά μέτρα κεντρικής τάσης και διασποράς για τις πωλήσεις. # Μέση τιμή και διάμεσος για τις περιοχές πωλήσεων
# Υπολογισμός μέτρων κεντρικής τάσης & διασποράς σε χιλιάδες αντίτυπα
sales_stats <- data.frame(
Περιοχή = c("NA", "EU", "JP", "Other", "Global"),
Μέση_Τιμή = c(mean(vgsales$NA_Sales, na.rm = TRUE),
mean(vgsales$EU_Sales, na.rm = TRUE),
mean(vgsales$JP_Sales, na.rm = TRUE),
mean(vgsales$Other_Sales, na.rm = TRUE),
mean(vgsales$Global_Sales, na.rm = TRUE)) * 1000,
Διάμεσος = c(median(vgsales$NA_Sales, na.rm = TRUE),
median(vgsales$EU_Sales, na.rm = TRUE),
median(vgsales$JP_Sales, na.rm = TRUE),
median(vgsales$Other_Sales, na.rm = TRUE) * 1000,
median(vgsales$Global_Sales, na.rm = TRUE)) ,
Τυπική_Απόκλιση = c(sd(vgsales$NA_Sales, na.rm = TRUE),
sd(vgsales$EU_Sales, na.rm = TRUE),
sd(vgsales$JP_Sales, na.rm = TRUE),
sd(vgsales$Other_Sales, na.rm = TRUE),
sd(vgsales$Global_Sales, na.rm = TRUE)) * 1000,
Διακύμανση = c(var(vgsales$NA_Sales, na.rm = TRUE),
var(vgsales$EU_Sales, na.rm = TRUE),
var(vgsales$JP_Sales, na.rm = TRUE),
var(vgsales$Other_Sales, na.rm = TRUE),
var(vgsales$Global_Sales, na.rm = TRUE)) * 1000,
Εύρος = c(diff(range(vgsales$NA_Sales, na.rm = TRUE)),
diff(range(vgsales$EU_Sales, na.rm = TRUE)),
diff(range(vgsales$JP_Sales, na.rm = TRUE)),
diff(range(vgsales$Other_Sales, na.rm = TRUE)),
diff(range(vgsales$Global_Sales, na.rm = TRUE))) * 1000
)
sales_stats
## Περιοχή Μέση_Τιμή Διάμεσος Τυπική_Απόκλιση Διακύμανση Εύρος
## 1 NA 264.66743 0.08 816.6830 666.97117 41490
## 2 EU 146.65201 0.02 505.3512 255.37987 29020
## 3 JP 77.78166 0.00 309.2906 95.66070 10220
## 4 Other 48.06302 10.00 188.5884 35.56559 10570
## 5 Global 537.44066 0.17 1555.0279 2418.11188 82730
# Επιλογή μόνο των αριθμητικών μεταβλητών πωλήσεων
sales_data <- vgsales[, c("NA_Sales", "EU_Sales", "JP_Sales", "Other_Sales", "Global_Sales")]
# Πίνακας συντελεστών συσχέτισης
cor(sales_data, use = "complete.obs")
## NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales
## NA_Sales 1.0000000 0.7677267 0.4497874 0.6347373 0.9410474
## EU_Sales 0.7677267 1.0000000 0.4355845 0.7263849 0.9028358
## JP_Sales 0.4497874 0.4355845 1.0000000 0.2901862 0.6118155
## Other_Sales 0.6347373 0.7263849 0.2901862 1.0000000 0.7483308
## Global_Sales 0.9410474 0.9028358 0.6118155 0.7483308 1.0000000
Οι συσχετίσεις μεταξύ των μεταβλητών πωλήσεων δείχνουν ότι:
Ο πίνακας βοηθάει στην κατανόηση γεωγραφικών μοτίβων επιτυχίας για τα video games. ## Boxplot Πωλήσεων PS2 ανά Είδος Παιχνιδιού
library(ggplot2)
library(dplyr)
ps2_data <- vgsales %>% filter(Platform == "PS2")
ggplot(ps2_data, aes(x = Genre, y = Global_Sales)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Boxplot Πωλήσεων PS2 ανά Είδος Παιχνιδιού",
x = "Είδος", y = "Πωλήσεις (εκατομμύρια)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
✅ Σχολιασμός για το Boxplot Πωλήσεων PS2 ανά Είδος
Παιχνιδιού:
Το γράφημα δείχνει ότι τα Action και Racing games στο PS2 έχουν τη μεγαλύτερη διακύμανση πωλήσεων, με αρκετούς τίτλους να ξεπερνούν τα 10 εκατομμύρια αντίτυπα. Τα περισσότερα είδη εμφανίζουν χαμηλές έως μέτριες πωλήσεις, ενώ υπάρχουν αρκετά outliers, δηλαδή παιχνίδια που ξεχώρισαν εμπορικά. Η σύγκριση αποκαλύπτει τάσεις προτίμησης των παικτών ανά είδος για την πλατφόρμα PS2.
subset_data <- vgsales %>% filter(Platform %in% c("PS3", "X360"))
ggplot(subset_data, aes(x = Platform, y = Global_Sales, fill = Genre)) +
geom_boxplot(alpha = 0.8) +
labs(title = "Πωλήσεις για PS3 και Xbox 360 ανά Είδος Παιχνιδιού",
x = "Πλατφόρμα", y = "Πωλήσεις (εκατομμύρια)", fill = "Είδος") +
theme_minimal() +
theme(legend.position = "bottom")
✅ Σχολιασμός για το Boxplot Πωλήσεων PS3 και Xbox 360 ανά Είδος
Παιχνιδιού:
Το διάγραμμα επιτρέπει τη σύγκριση πωλήσεων ανά είδος παιχνιδιού για τις κονσόλες PS3 και Xbox 360. Παρατηρούμε ότι και στις δύο πλατφόρμες, τα Shooter και Sports games σημειώνουν υψηλές πωλήσεις και διακύμανση. Υπάρχουν αρκετοί τίτλοι με εξαιρετικές επιδόσεις (outliers), ειδικά σε genres όπως το Action. Το γράφημα αποκαλύπτει παρόμοια κατανομή εμπορικής επιτυχίας μεταξύ των δύο ανταγωνιστικών συστημάτων. ## Scatterplot: JP Sales vs Global Sales
ggplot(vgsales, aes(x = JP_Sales, y = Global_Sales)) +
geom_point(alpha = 0.4, color = "darkred", size = 2) +
labs(
title = "Σχέση Πωλήσεων στην Ιαπωνία και Παγκοσμίως",
x = "Πωλήσεις στην Ιαπωνία (εκατομμύρια)",
y = "Συνολικές Πωλήσεις (Global, εκατομμύρια)"
) +
theme_minimal()
Το scatterplot παρουσιάζει τη συσχέτιση μεταξύ των πωλήσεων στην Ιαπωνία και των συνολικών (παγκόσμιων) πωλήσεων. Παρατηρούμε ότι, παρόλο που οι περισσότερες τιμές συγκεντρώνονται κοντά στο 0, υπάρχει μια θετική αλλά σχετικά ασθενής συσχέτιση — δηλαδή, οι υψηλές πωλήσεις στην Ιαπωνία δεν συνεπάγονται απαραίτητα υψηλές παγκόσμιες πωλήσεις. Αυτό υποδηλώνει ότι η Ιαπωνική αγορά, αν και σημαντική, δεν είναι ο καθοριστικός παράγοντας επιτυχίας για την παγκόσμια πορεία ενός παιχνιδιού.
ggplot(vgsales, aes(x = Global_Sales)) +
geom_histogram(binwidth = 0.2, fill = "steelblue", color = "white") +
scale_x_continuous(
limits = c(0, 5),
breaks = seq(0, 5, by = 0.5)
) +
labs(
title = "Ιστόγραμμα Παγκόσμιων Πωλήσεων Παιχνιδιών",
x = "Πωλήσεις (σε εκατομμύρια)",
y = "Αριθμός Παιχνιδιών"
) +
theme_minimal()
## Warning: Removed 205 rows containing non-finite outside the scale range
## (`stat_bin()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_bar()`).
Το ιστόγραμμα των παγκόσμιων πωλήσεων δείχνει ότι η πλειονότητα των βιντεοπαιχνιδιών έχει πολύ χαμηλές πωλήσεις, κάτω από το 1 εκατομμύριο αντίτυπα. Η κατανομή είναι έντονα δεξιά ασύμμετρη, υποδηλώνοντας ότι λίγοι τίτλοι επιτυγχάνουν πολύ υψηλές πωλήσεις. Αυτό φανερώνει ότι λίγοι τίτλοι κυριαρχούν στην αγορά, ενώ οι περισσότεροι έχουν περιορισμένη απήχηση.
library(ggplot2)
ggplot(vgsales, aes(x = Genre)) +
geom_bar(fill = "darkorange", color = "black") +
labs(
title = "Κατανομή Παιχνιδιών ανά Είδος (Genre)",
x = "Είδος Παιχνιδιού",
y = "Αριθμός Παιχνιδιών"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Το γράφημα παρουσιάζει την κατανομή των παιχνιδιών ανά είδος (genre). Παρατηρούμε ότι τα παιχνίδια δράσης (Action) αποτελούν το πιο δημοφιλές είδος, ακολουθούμενα από τα αθλητικά (Sports) και τα είδη τύπου Misc (διάφορα). Είδη όπως τα Puzzle και Strategy εμφανίζουν χαμηλότερη εκπροσώπηση. Η ανομοιομορφία στην κατανομή πιθανώς αντανακλά τις προτιμήσεις των καταναλωτών ή τις στρατηγικές παραγωγής των εταιρειών.