# Εγκατάσταση πακέτων (αν δεν υπάρχουν ήδη)
# install.packages(c("tidyverse", "corrplot", "scales", "knitr", "kableExtra"))
library(tidyverse) # Περιλαμβάνει ggplot2, dplyr, readr κ.λπ.
library(corrplot) # Πίνακας συσχετίσεων
library(scales) # Μορφοποίηση αξόνων
library(knitr) # Πίνακες σε Markdown
library(kableExtra) # Βελτιωμένοι πίνακες# Φόρτωση του dataset — αλλάξτε το path ανάλογα με τη θέση του αρχείου σας
df <- read_csv("ks-projects-201801.csv")
# Πρώτη ματιά στα δεδομένα
glimpse(df)## Rows: 378,661
## Columns: 15
## $ ID <dbl> 1000002330, 1000003930, 1000004038, 1000007540, 10000…
## $ name <chr> "The Songs of Adelaide & Abullah", "Greeting From Ear…
## $ category <chr> "Poetry", "Narrative Film", "Narrative Film", "Music"…
## $ main_category <chr> "Publishing", "Film & Video", "Film & Video", "Music"…
## $ currency <chr> "GBP", "USD", "USD", "USD", "USD", "USD", "USD", "USD…
## $ deadline <date> 2015-10-09, 2017-11-01, 2013-02-26, 2012-04-16, 2015…
## $ goal <dbl> 1000, 30000, 45000, 5000, 19500, 50000, 1000, 25000, …
## $ launched <dttm> 2015-08-11 12:12:28, 2017-09-02 04:43:57, 2013-01-12…
## $ pledged <dbl> 0.00, 2421.00, 220.00, 1.00, 1283.00, 52375.00, 1205.…
## $ state <chr> "failed", "failed", "failed", "failed", "canceled", "…
## $ backers <dbl> 0, 15, 3, 1, 14, 224, 16, 40, 58, 43, 0, 100, 0, 0, 7…
## $ country <chr> "GB", "US", "US", "US", "US", "US", "US", "US", "US",…
## $ `usd pledged` <dbl> 0.00, 100.00, 220.00, 1.00, 1283.00, 52375.00, 1205.0…
## $ usd_pledged_real <dbl> 0.00, 2421.00, 220.00, 1.00, 1283.00, 52375.00, 1205.…
## $ usd_goal_real <dbl> 1533.95, 30000.00, 45000.00, 5000.00, 19500.00, 50000…
Το dataset “Kickstarter Projects” προέρχεται από την πλατφόρμα Kaggle και δημιουργήθηκε από τον χρήστη Mickaël Mouillé. Περιέχει πληροφορίες για περισσότερα από 378.000 projects που δημοσιεύθηκαν στην πλατφόρμα crowdfunding Kickstarter μέχρι τον Ιανουάριο 2018.
Το Kickstarter είναι μια από τις μεγαλύτερες πλατφόρμες crowdfunding παγκοσμίως. Οι δημιουργοί (creators) δημοσιεύουν projects με έναν στόχο χρηματοδότησης (goal) και μια προθεσμία (deadline). Αν το ποσό που συγκεντρώνεται από τους υποστηρικτές (backers) ξεπεράσει τον στόχο, το project θεωρείται επιτυχημένο — αλλιώς αποτυγχάνει (μοντέλο “all-or-nothing”).
Η επιλογή αυτού του dataset είναι ιδιαίτερα κατάλληλη για το μάθημα της Επιχειρηματικής Αναλυτικής για τους εξής λόγους:
# Μετονομασία στηλών για ευκολία
colnames(df) <- c("ID", "name", "category", "main_category", "currency",
"deadline", "goal", "launched", "pledged", "state",
"backers", "country", "usd_pledged", "usd_pledged_real",
"usd_goal_real")
# Μετατροπή ημερομηνιών
# Η στήλη deadline είναι σε μορφή "YYYY-MM-DD" και η launched σε "YYYY-MM-DD HH:MM:SS"
df$deadline <- as.Date(df$deadline)
df$launched <- as.Date(as.character(df$launched))
# Υπολογισμός διάρκειας campaign σε ημέρες
df$duration_days <- as.numeric(df$deadline - df$launched)
# Υπολογισμός ποσοστού χρηματοδότησης (funding ratio)
df$funding_ratio <- ifelse(df$usd_goal_real > 0,
df$usd_pledged_real / df$usd_goal_real, NA)
# Δημιουργία δυαδικής μεταβλητής επιτυχίας
df$success <- ifelse(df$state == "successful", 1, 0)
# Αφαίρεση projects με κατάσταση "live" ή "undefined"
df_clean <- df %>%
filter(state %in% c("successful", "failed", "canceled", "suspended"))
# Αφαίρεση πιθανών αρνητικών/μηδενικών διαρκειών
df_clean <- df_clean %>%
filter(duration_days > 0)
# Εμφάνιση δομής καθαρισμένου dataset
cat("Διαστάσεις καθαρισμένου dataset:", dim(df_clean), "\n")## Διαστάσεις καθαρισμένου dataset: 372300 18
head(df_clean) %>% kable(caption = "Πρώτες γραμμές του dataset") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| ID | name | category | main_category | currency | deadline | goal | launched | pledged | state | backers | country | usd_pledged | usd_pledged_real | usd_goal_real | duration_days | funding_ratio | success |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1000002330 | The Songs of Adelaide & Abullah | Poetry | Publishing | GBP | 2015-10-09 | 1000 | 2015-08-11 | 0 | failed | 0 | GB | 0 | 0 | 1533.95 | 59 | 0.0000000 | 0 |
| 1000003930 | Greeting From Earth: ZGAC Arts Capsule For ET | Narrative Film | Film & Video | USD | 2017-11-01 | 30000 | 2017-09-02 | 2421 | failed | 15 | US | 100 | 2421 | 30000.00 | 60 | 0.0807000 | 0 |
| 1000004038 | Where is Hank? | Narrative Film | Film & Video | USD | 2013-02-26 | 45000 | 2013-01-12 | 220 | failed | 3 | US | 220 | 220 | 45000.00 | 45 | 0.0048889 | 0 |
| 1000007540 | ToshiCapital Rekordz Needs Help to Complete Album | Music | Music | USD | 2012-04-16 | 5000 | 2012-03-17 | 1 | failed | 1 | US | 1 | 1 | 5000.00 | 30 | 0.0002000 | 0 |
| 1000011046 | Community Film Project: The Art of Neighborhood Filmmaking | Film & Video | Film & Video | USD | 2015-08-29 | 19500 | 2015-07-04 | 1283 | canceled | 14 | US | 1283 | 1283 | 19500.00 | 56 | 0.0657949 | 0 |
| 1000014025 | Monarch Espresso Bar | Restaurants | Food | USD | 2016-04-01 | 50000 | 2016-02-26 | 52375 | successful | 224 | US | 52375 | 52375 | 50000.00 | 35 | 1.0475000 | 1 |
Ο παρακάτω πίνακας παρουσιάζει τις μεταβλητές του dataset μαζί με τον τύπο τους, το εύρος τιμών και τη μονάδα μέτρησης:
var_info <- data.frame(
Μεταβλητή = c("ID", "name", "category", "main_category", "currency",
"deadline", "goal", "launched", "pledged", "state",
"backers", "country", "usd_pledged_real",
"usd_goal_real", "duration_days", "funding_ratio", "success"),
Τύπος = c("Ακέραιος", "Κείμενο", "Κατηγορική", "Κατηγορική", "Κατηγορική",
"Ημερομηνία", "Αριθμητική (συνεχής)", "Ημερομηνία",
"Αριθμητική (συνεχής)", "Κατηγορική",
"Ακέραιος (διακριτή)", "Κατηγορική", "Αριθμητική (συνεχής)",
"Αριθμητική (συνεχής)", "Ακέραιος (διακριτή)",
"Αριθμητική (συνεχής)", "Δυαδική (0/1)"),
Μονάδα_Μέτρησης = c(
"-", "-", "-", "-", "-",
"YYYY-MM-DD", "Τοπικό νόμισμα", "YYYY-MM-DD", "Τοπικό νόμισμα", "-",
"Άτομα", "-", "USD ($)",
"USD ($)", "Ημέρες", "Αδιάστατος λόγος", "-"
),
Περιγραφή = c(
"Μοναδικό αναγνωριστικό project",
"Όνομα του project",
"Υποκατηγορία (π.χ. Documentary, Rock, Gadgets)",
"Κύρια κατηγορία (π.χ. Film & Video, Music, Technology)",
"Νόμισμα χρηματοδότησης (π.χ. USD, GBP, EUR)",
"Προθεσμία χρηματοδότησης",
"Στόχος χρηματοδότησης στο αρχικό νόμισμα",
"Ημερομηνία εκκίνησης του campaign",
"Ποσό που συγκεντρώθηκε στο αρχικό νόμισμα",
"Κατάσταση: successful, failed, canceled, suspended",
"Αριθμός υποστηρικτών (backers)",
"Χώρα προέλευσης (π.χ. US, GB, CA)",
"Ποσό σε USD (μετατροπή μέσω fixer.io API)",
"Στόχος σε USD (μετατροπή μέσω fixer.io API)",
"Διάρκεια campaign (deadline − launched)",
"Λόγος χρηματοδότησης (pledged / goal σε USD)",
"1 = Επιτυχές, 0 = Μη επιτυχές"
)
)
var_info %>%
kable(caption = "Περιγραφή μεταβλητών του dataset",
col.names = c("Μεταβλητή", "Τύπος", "Μονάδα Μέτρησης", "Περιγραφή")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = TRUE) %>%
column_spec(1, bold = TRUE)| Μεταβλητή | Τύπος | Μονάδα Μέτρησης | Περιγραφή |
|---|---|---|---|
| ID | Ακέραιος |
|
Μοναδικό αναγνωριστικό project |
| name | Κείμενο |
|
Όνομα του project |
| category | Κατηγορική |
|
Υποκατηγορία (π.χ. Documentary, Rock, Gadgets) |
| main_category | Κατηγορική |
|
Κύρια κατηγορία (π.χ. Film & Video, Music, Technology) |
| currency | Κατηγορική |
|
Νόμισμα χρηματοδότησης (π.χ. USD, GBP, EUR) |
| deadline | Ημερομηνία | YYYY-MM-DD | Προθεσμία χρηματοδότησης |
| goal | Αριθμητική (συνεχής) | Τοπικό νόμισμα | Στόχος χρηματοδότησης στο αρχικό νόμισμα |
| launched | Ημερομηνία | YYYY-MM-DD | Ημερομηνία εκκίνησης του campaign |
| pledged | Αριθμητική (συνεχής) | Τοπικό νόμισμα | Ποσό που συγκεντρώθηκε στο αρχικό νόμισμα |
| state | Κατηγορική |
|
Κατάσταση: successful, failed, canceled, suspended |
| backers | Ακέραιος (διακριτή) | Άτομα | Αριθμός υποστηρικτών (backers) |
| country | Κατηγορική |
|
Χώρα προέλευσης (π.χ. US, GB, CA) |
| usd_pledged_real | Αριθμητική (συνεχής) | USD (\() </td> <td style="text-align:left;"> Ποσό σε USD (μετατροπή μέσω fixer.io API) </td> </tr> <tr> <td style="text-align:left;font-weight: bold;"> usd_goal_real </td> <td style="text-align:left;"> Αριθμητική (συνεχής) </td> <td style="text-align:left;"> USD (\)) | Στόχος σε USD (μετατροπή μέσω fixer.io API) |
| duration_days | Ακέραιος (διακριτή) | Ημέρες | Διάρκεια campaign (deadline − launched) |
| funding_ratio | Αριθμητική (συνεχής) | Αδιάστατος λόγος | Λόγος χρηματοδότησης (pledged / goal σε USD) |
| success | Δυαδική (0/1) |
|
1 = Επιτυχές, 0 = Μη επιτυχές |
# Σύνοψη αριθμητικών μεταβλητών
summary(df_clean %>%
select(goal, pledged, backers, usd_pledged_real,
usd_goal_real, duration_days, funding_ratio))## goal pledged backers usd_pledged_real
## Min. :0.00e+00 Min. : 0 Min. : 0.0 Min. :0.000e+00
## 1st Qu.:2.00e+03 1st Qu.: 31 1st Qu.: 2.0 1st Qu.:3.120e+01
## Median :5.50e+03 Median : 625 Median : 12.0 Median :6.280e+02
## Mean :4.93e+04 Mean : 9758 Mean : 106.9 Mean :9.148e+03
## 3rd Qu.:1.65e+04 3rd Qu.: 4092 3rd Qu.: 57.0 3rd Qu.:4.066e+03
## Max. :1.00e+08 Max. :20338986 Max. :219382.0 Max. :2.034e+07
## usd_goal_real duration_days funding_ratio
## Min. : 0 Min. : 1.00 Min. :0.000e+00
## 1st Qu.: 2000 1st Qu.: 30.00 1st Qu.:5.000e-03
## Median : 5500 Median : 30.00 Median :1.350e-01
## Mean : 45722 Mean : 34.46 Mean :3.264e+00
## 3rd Qu.: 15985 3rd Qu.: 37.00 3rd Qu.:1.066e+00
## Max. :166361391 Max. :16739.00 Max. :1.043e+05
## === Κατανομή State ===
##
## canceled failed successful suspended
## 38779 197719 133956 1846
##
## === Κατανομή Main Category (Top 10) ===
##
## Film & Video Music Publishing Games Technology Design
## 62399 49403 39113 34943 32189 29763
## Art Food Fashion Theater
## 27959 24418 22563 10871
##
## === Κατανομή Country (Top 10) ===
##
## US GB CA AU DE FR NL IT ES SE
## 290887 33393 14624 7769 4096 2887 2833 2802 2224 1737
Υπολογίζουμε τον μέσο όρο, τη διάμεσο και την επικρατούσα τιμή (mode) για τις βασικές αριθμητικές μεταβλητές.
# Συνάρτηση υπολογισμού mode (η R δεν έχει ενσωματωμένη)
calc_mode <- function(x) {
x <- na.omit(x)
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
# Επιλογή αριθμητικών μεταβλητών
numeric_vars <- c("usd_goal_real", "usd_pledged_real", "backers",
"duration_days", "funding_ratio")
central_stats <- data.frame(
Μεταβλητή = numeric_vars,
Μέσος_Όρος = sapply(numeric_vars, function(v)
round(mean(df_clean[[v]], na.rm = TRUE), 2)),
Διάμεσος = sapply(numeric_vars, function(v)
round(median(df_clean[[v]], na.rm = TRUE), 2)),
Επικρατούσα_Τιμή = sapply(numeric_vars, function(v)
round(calc_mode(df_clean[[v]]), 2))
)
rownames(central_stats) <- NULL
central_stats %>%
kable(caption = "Μέτρα Κεντρικής Τάσης",
col.names = c("Μεταβλητή", "Μέσος Όρος", "Διάμεσος",
"Επικρατούσα Τιμή (Mode)")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| Μεταβλητή | Μέσος Όρος | Διάμεσος | Επικρατούσα Τιμή (Mode) |
|---|---|---|---|
| usd_goal_real | 45721.62 | 5500.00 | 5000 |
| usd_pledged_real | 9148.41 | 628.00 | 0 |
| backers | 106.91 | 12.00 | 0 |
| duration_days | 34.46 | 30.00 | 30 |
| funding_ratio | 3.26 | 0.14 | 0 |
Σχολιασμός: Παρατηρούμε σημαντική διαφορά μεταξύ
μέσου όρου και διαμέσου, ιδιαίτερα στις μεταβλητές
usd_goal_real και usd_pledged_real. Αυτό
υποδεικνύει ότι οι κατανομές είναι έντονα θετικά
ασύμμετρες (right-skewed), με λίγα projects να έχουν πολύ
υψηλούς στόχους ή χρηματοδοτήσεις που ανεβάζουν τον μέσο όρο. Η διάμεσος
αποτελεί πιο αξιόπιστο μέτρο κεντρικής τάσης σε αυτή την περίπτωση.
dispersion_stats <- data.frame(
Μεταβλητή = numeric_vars,
Τυπική_Απόκλιση = sapply(numeric_vars, function(v)
format(round(sd(df_clean[[v]], na.rm = TRUE), 2),
big.mark = ",", scientific = FALSE)),
Διακύμανση = sapply(numeric_vars, function(v)
format(round(var(df_clean[[v]], na.rm = TRUE), 2),
big.mark = ",", scientific = FALSE)),
Ελάχιστο = sapply(numeric_vars, function(v)
round(min(df_clean[[v]], na.rm = TRUE), 2)),
Μέγιστο = sapply(numeric_vars, function(v)
format(round(max(df_clean[[v]], na.rm = TRUE), 2),
big.mark = ",", scientific = FALSE)),
Εύρος = sapply(numeric_vars, function(v)
format(round(max(df_clean[[v]], na.rm = TRUE) -
min(df_clean[[v]], na.rm = TRUE), 2),
big.mark = ",", scientific = FALSE))
)
rownames(dispersion_stats) <- NULL
dispersion_stats %>%
kable(caption = "Μέτρα Διασποράς",
col.names = c("Μεταβλητή", "Τυπική Απόκλιση", "Διακύμανση",
"Ελάχιστο", "Μέγιστο", "Εύρος")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| Μεταβλητή | Τυπική Απόκλιση | Διακύμανση | Ελάχιστο | Μέγιστο | Εύρος |
|---|---|---|---|---|---|
| usd_goal_real | 1,151,326 | 1,325,552,342,251 | 0.01 | 166,361,391 | 166,361,391 |
| usd_pledged_real | 91,703.45 | 8,409,523,473 | 0.00 | 20,338,986 | 20,338,986 |
| backers | 914.24 | 835,827.1 | 0.00 | 219,382 | 219,382 |
| duration_days | 66.45 | 4,415.45 | 1.00 | 16,739 | 16,738 |
| funding_ratio | 269.08 | 72,403.5 | 0.00 | 104,277.9 | 104,277.9 |
Σχολιασμός: Η πολύ υψηλή τυπική απόκλιση σε σχέση με
τον μέσο όρο (ιδιαίτερα στο usd_pledged_real και
usd_goal_real) επιβεβαιώνει τη μεγάλη ετερογένεια των
projects στην πλατφόρμα — από μικρά ατομικά projects μέχρι μεγάλα
εγχειρήματα εκατομμυρίων δολαρίων. Ο υψηλός συντελεστής μεταβλητότητας
(CV = SD / Mean) υποδεικνύει ότι οι τιμές διαφοροποιούνται δραματικά
γύρω από τον μέσο.
# Επιλογή αριθμητικών μεταβλητών για τον πίνακα συσχετίσεων
cor_vars <- c("usd_goal_real", "usd_pledged_real", "backers",
"duration_days", "funding_ratio", "success")
cor_matrix <- cor(df_clean[, cor_vars], use = "complete.obs")
# Εμφάνιση πίνακα
round(cor_matrix, 3) %>%
kable(caption = "Πίνακας Συσχετίσεων (Pearson)") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| usd_goal_real | usd_pledged_real | backers | duration_days | funding_ratio | success | |
|---|---|---|---|---|---|---|
| usd_goal_real | 1.000 | 0.006 | 0.005 | 0.004 | 0.000 | -0.024 |
| usd_pledged_real | 0.006 | 1.000 | 0.752 | 0.001 | 0.009 | 0.111 |
| backers | 0.005 | 0.752 | 1.000 | -0.001 | 0.017 | 0.129 |
| duration_days | 0.004 | 0.001 | -0.001 | 1.000 | 0.000 | -0.026 |
| funding_ratio | 0.000 | 0.009 | 0.017 | 0.000 | 1.000 | 0.015 |
| success | -0.024 | 0.111 | 0.129 | -0.026 | 0.015 | 1.000 |
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
number.cex = 0.8,
tl.col = "black",
tl.srt = 45,
col = colorRampPalette(c("#E74C3C", "white", "#2E86C1"))(200),
title = "Πίνακας Συσχετίσεων Αριθμητικών Μεταβλητών",
mar = c(0, 0, 2, 0))Οπτικοποίηση πίνακα συσχετίσεων
# Εμφάνιση σημαντικότερων συσχετίσεων
cor_df <- as.data.frame(as.table(cor_matrix))
names(cor_df) <- c("Μεταβλητή_1", "Μεταβλητή_2", "Συσχέτιση")
# Φιλτράρισμα: χωρίς διαγώνια, μοναδικά ζεύγη, ταξινομημένα κατά |r|
cor_df <- cor_df %>%
filter(as.character(Μεταβλητή_1) < as.character(Μεταβλητή_2)) %>%
arrange(desc(abs(Συσχέτιση)))
cor_df %>%
mutate(
Συσχέτιση = round(Συσχέτιση, 3),
Ένταση = case_when(
abs(Συσχέτιση) >= 0.7 ~ "Ισχυρή",
abs(Συσχέτιση) >= 0.4 ~ "Μέτρια",
abs(Συσχέτιση) >= 0.2 ~ "Ασθενής",
TRUE ~ "Αμελητέα"
)
) %>%
kable(caption = "Ζεύγη μεταβλητών ταξινομημένα κατά απόλυτη συσχέτιση") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| Μεταβλητή_1 | Μεταβλητή_2 | Συσχέτιση | Ένταση |
|---|---|---|---|
| backers | usd_pledged_real | 0.752 | Ισχυρή |
| backers | success | 0.129 | Αμελητέα |
| success | usd_pledged_real | 0.111 | Αμελητέα |
| duration_days | success | -0.026 | Αμελητέα |
| success | usd_goal_real | -0.024 | Αμελητέα |
| backers | funding_ratio | 0.017 | Αμελητέα |
| funding_ratio | success | 0.015 | Αμελητέα |
| funding_ratio | usd_pledged_real | 0.009 | Αμελητέα |
| usd_goal_real | usd_pledged_real | 0.006 | Αμελητέα |
| backers | usd_goal_real | 0.005 | Αμελητέα |
| duration_days | usd_goal_real | 0.004 | Αμελητέα |
| duration_days | usd_pledged_real | 0.001 | Αμελητέα |
| backers | duration_days | -0.001 | Αμελητέα |
| funding_ratio | usd_goal_real | 0.000 | Αμελητέα |
| duration_days | funding_ratio | 0.000 | Αμελητέα |
Ερμηνεία:
backers ↔︎
usd_pledged_real: Αναμένεται ισχυρή θετική
συσχέτιση — περισσότεροι υποστηρικτές σημαίνουν μεγαλύτερο ποσό
χρηματοδότησης.funding_ratio ↔︎ success:
Θετική συσχέτιση — τα επιτυχημένα projects ξεπερνούν τον στόχο τους
(ratio > 1).backers ↔︎ success: Θετική
συσχέτιση — τα επιτυχημένα projects προσελκύουν σημαντικά περισσότερους
υποστηρικτές.usd_goal_real ↔︎ success:
Αναμένεται αρνητική συσχέτιση — projects με πολύ υψηλούς στόχους τείνουν
να αποτυγχάνουν συχνότερα.duration_days: Η διάρκεια του campaign
δεν φαίνεται να σχετίζεται ισχυρά με καμία άλλη μεταβλητή.# Χρησιμοποιούμε δείγμα και log scale λόγω μεγάλου εύρους τιμών
# Φιλτράρουμε τιμές > 0 αφού χρησιμοποιούμε λογαριθμική κλίμακα
set.seed(42)
df_sample <- df_clean %>%
filter(usd_goal_real > 0, usd_pledged_real > 0) %>%
slice_sample(n = 5000)
ggplot(df_sample, aes(x = usd_goal_real, y = usd_pledged_real, color = state)) +
geom_point(alpha = 0.4, size = 1.5) +
scale_x_log10(labels = dollar_format()) +
scale_y_log10(labels = dollar_format()) +
geom_abline(intercept = 0, slope = 1, linetype = "dashed",
color = "gray40", linewidth = 0.8) +
labs(
title = "Σχέση Στόχου Χρηματοδότησης και Ποσού που Συγκεντρώθηκε",
subtitle = "Η διακεκομμένη γραμμή δείχνει το σημείο ισορροπίας (goal = pledged)",
x = "Στόχος Χρηματοδότησης (USD, log scale)",
y = "Ποσό Χρηματοδότησης (USD, log scale)",
color = "Κατάσταση"
) +
scale_color_manual(values = c("successful" = "#27AE60", "failed" = "#E74C3C",
"canceled" = "#F39C12", "suspended" = "#8E44AD")) +
theme_minimal(base_size = 13) +
theme(legend.position = "bottom")Scatterplot: Στόχος χρηματοδότησης vs Ποσό που συγκεντρώθηκε (σε USD)
Σχολιασμός: Το scatterplot αποκαλύπτει ένα ξεκάθαρο μοτίβο: τα επιτυχημένα projects (πράσινα) βρίσκονται κυρίως πάνω από τη διακεκομμένη γραμμή (δηλαδή συγκέντρωσαν περισσότερα από τον στόχο τους), ενώ τα αποτυχημένα (κόκκινα) βρίσκονται κάτω από αυτή. Επίσης, παρατηρούμε ότι τα projects με πιο χαμηλούς στόχους τείνουν να πετυχαίνουν συχνότερα.
# Φιλτράρουμε μόνο επιτυχημένα projects για πιο ουσιαστική σύγκριση
df_successful <- df_clean %>%
filter(state == "successful", backers > 0)
ggplot(df_successful, aes(x = reorder(main_category, backers, FUN = median),
y = backers, fill = main_category)) +
geom_boxplot(outlier.alpha = 0.2, outlier.size = 0.5) +
coord_flip() +
scale_y_log10(labels = comma_format()) +
labs(
title = "Κατανομή Αριθμού Υποστηρικτών ανά Κατηγορία",
subtitle = "Μόνο επιτυχημένα projects — Λογαριθμική κλίμακα στον άξονα X",
x = "Κύρια Κατηγορία",
y = "Αριθμός Υποστηρικτών (log scale)"
) +
theme_minimal(base_size = 13) +
theme(legend.position = "none")Boxplot: Αριθμός υποστηρικτών ανά κύρια κατηγορία (μόνο επιτυχημένα projects)
Σχολιασμός: Κατηγορίες όπως Technology, Design και Games εμφανίζουν τη μεγαλύτερη διάμεσο αριθμού υποστηρικτών, υποδηλώνοντας ότι αυτά τα πεδία προσελκύουν ευρύ κοινό. Αντίθετα, κατηγορίες όπως Dance, Journalism και Crafts έχουν μικρότερο αριθμό υποστηρικτών. Τα πολλά outliers (ακραίες τιμές) σε όλες τις κατηγορίες δείχνουν ότι ορισμένα projects γίνονται viral ανεξάρτητα από τον κλάδο.
# Φιλτράρουμε τιμές > 0 για τη λογαριθμική κλίμακα
df_hist <- df_clean %>% filter(usd_goal_real > 0)
median_goal <- median(df_hist$usd_goal_real, na.rm = TRUE)
ggplot(df_hist, aes(x = usd_goal_real)) +
geom_histogram(bins = 60, fill = "#2E86C1", color = "white", alpha = 0.85) +
scale_x_log10(labels = dollar_format(),
breaks = c(100, 1000, 10000, 100000, 1000000)) +
labs(
title = "Κατανομή Στόχου Χρηματοδότησης (USD)",
subtitle = "Λογαριθμική κλίμακα — η πλειονότητα των projects έχει στόχο $1K–$10K",
x = "Στόχος Χρηματοδότησης (USD, log scale)",
y = "Πλήθος Projects"
) +
theme_minimal(base_size = 13) +
geom_vline(xintercept = median_goal,
color = "#E74C3C", linetype = "dashed", linewidth = 1) +
annotate("text", x = median_goal * 2.5, y = Inf,
label = paste0("Διάμεσος = $", comma(median_goal)),
vjust = 2, color = "#E74C3C", size = 4.5, fontface = "bold")Histogram: Κατανομή στόχου χρηματοδότησης σε USD
Σχολιασμός: Το histogram (σε λογαριθμική κλίμακα) δείχνει ότι η πλειονότητα των Kickstarter projects θέτει στόχους χρηματοδότησης στην περιοχή $1.000–$10.000. Η κατανομή είναι θετικά ασύμμετρη: υπάρχει μια μακριά ουρά στα δεξιά που αντιπροσωπεύει projects με πολύ φιλόδοξους στόχους (>$100K). Η κόκκινη διακεκομμένη γραμμή υποδεικνύει τη διάμεσο.
success_rate <- df_clean %>%
group_by(main_category) %>%
summarise(
total = n(),
successful = sum(state == "successful"),
rate = successful / total * 100,
.groups = "drop"
) %>%
arrange(desc(rate))
ggplot(success_rate, aes(x = reorder(main_category, rate),
y = rate, fill = rate)) +
geom_col(width = 0.7) +
geom_text(aes(label = paste0(round(rate, 1), "%")),
hjust = -0.15, size = 3.5, fontface = "bold") +
coord_flip() +
scale_fill_gradient(low = "#E74C3C", high = "#27AE60") +
labs(
title = "Ποσοστό Επιτυχίας Kickstarter Projects ανά Κατηγορία",
subtitle = "Ποσοστό projects που πέτυχαν τον στόχο χρηματοδότησής τους",
x = "Κύρια Κατηγορία",
y = "Ποσοστό Επιτυχίας (%)"
) +
scale_y_continuous(limits = c(0, 75), expand = c(0, 0)) +
theme_minimal(base_size = 13) +
theme(legend.position = "none")Bar Chart: Ποσοστό επιτυχίας ανά κύρια κατηγορία
Σχολιασμός: Οι κατηγορίες Dance, Theater και Comics εμφανίζουν τα υψηλότερα ποσοστά επιτυχίας (>50%), ενώ οι κατηγορίες Technology, Journalism και Crafts βρίσκονται στο κάτω μέρος. Αυτό υποδεικνύει ότι projects με χαμηλότερο κόστος υλοποίησης (π.χ. τέχνες) πετυχαίνουν τον στόχο τους πιο εύκολα, ενώ κατηγορίες που απαιτούν μεγαλύτερη χρηματοδότηση (π.χ. τεχνολογία) δυσκολεύονται περισσότερο.
Η ανάλυση του Kickstarter Projects dataset ανέδειξε αρκετά σημαντικά ευρήματα:
Η πλειονότητα των Kickstarter projects αποτυγχάνει: Περίπου 52% των projects δεν πετυχαίνει τον στόχο χρηματοδότησης.
Ο στόχος χρηματοδότησης παίζει κρίσιμο ρόλο: Projects με χαμηλότερους και ρεαλιστικούς στόχους τείνουν να πετυχαίνουν συχνότερα. Υπάρχει αρνητική συσχέτιση μεταξύ ύψους στόχου και επιτυχίας.
Ο αριθμός υποστηρικτών συνδέεται άμεσα με τη
χρηματοδότηση: Ισχυρή θετική συσχέτιση μεταξύ
backers και usd_pledged_real.
Οι κατηγορίες τεχνών υπερέχουν: Dance, Theater, Comics και Music εμφανίζουν τα υψηλότερα ποσοστά επιτυχίας.
Η διάρκεια του campaign δεν φαίνεται
καθοριστική: Η μεταβλητή duration_days δεν
εμφανίζει ισχυρή συσχέτιση με την επιτυχία.
Ο λόγος χρηματοδότησης (funding ratio) διαφοροποιεί σαφώς τα επιτυχημένα projects: Τα successful projects έχουν ratio > 1, ενώ τα failed κινούνται κοντά στο 0.
Αυτά τα ευρήματα μπορούν να αξιοποιηθούν πρακτικά: ένας δημιουργός που σχεδιάζει ένα Kickstarter campaign θα πρέπει να θέσει ρεαλιστικούς στόχους, να επικεντρωθεί στην προσέλκυση υποστηρικτών και να λάβει υπόψη τα ποσοστά επιτυχίας της κατηγορίας του.
Αυτή η αναφορά δημιουργήθηκε στο πλαίσιο του μαθήματος “Επιχειρηματική Αναλυτική” — Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας.