Περιγραφή Dataset

Αυτό το σύνολο δεδομένων αποτυπώνει τον παλμό των viral τάσεων στα μέσα κοινωνικής δικτύωσης σε TikTok, Instagram, Twitter και YouTube. Παρέχει πληροφορίες για τα πιο δημοφιλή hashtag, τους τύπους περιεχομένου και τα επίπεδα αλληλεπίδρασης των χρηστών.Αυτό το dataset περιέχει 5.000 εγγραφές από viral αναρτήσεις στα μέσα κοινωνικής δικτύωσης σε TikTok, Instagram, Twitter και YouTube. Περιλαμβάνει βασικές μετρήσεις αλληλεπίδρασης, όπως προβολές, likes, κοινοποιήσεις και σχόλια, καθώς και δημοφιλή hashtags και τύπους περιεχομένου. , προσφέροντας μια ολοκληρωμένη εικόνα για το πώς εξελίσσονται οι τάσεις σε διαφορετικές πλατφόρμες

Επιχειρηματική Αναλυτική

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

Μεταβλητές του Dataset

Μεταβλητή Τύπος Περιγραφή Μονάδες / Εύρος Τιμών
Post_ID Χαρακτήρας Μοναδικό αναγνωριστικό για κάθε ανάρτηση -
Platform Κατηγορική Πλατφόρμα κοινωνικής δικτύωσης -
Hashtag Χαρακτήρας Hashtag της ανάρτησης -
Content_Type Κατηγορική Τύπος περιεχομένου (Video, Shorts, Post) -
Region Κατηγορική Περιοχή δημοσίευσης -
Views Αριθμητική Αριθμός προβολών Πλήθος
Likes Αριθμητική Αριθμός “μου αρέσει” Πλήθος
Shares Αριθμητική Αριθμός κοινοποιήσεων Πλήθος
Comments Αριθμητική Αριθμός σχολίων Πλήθος
Engagement_Level Κατηγορική Κατηγορία αλληλεπίδρασης (High, Medium, Low) -

Μέτρα κεντρικής τάσης

# Φόρτωση του dataset
Viral_Social_Media_Trends <- read.csv("Viral_Social_Media_Trends.csv")
# Εμφάνιση συνοπτικών στατιστικών
summary(Viral_Social_Media_Trends)
##    Post_ID            Platform           Hashtag          Content_Type      
##  Length:5000        Length:5000        Length:5000        Length:5000       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     Region              Views             Likes            Shares     
##  Length:5000        Min.   :   1266   Min.   :   490   Min.   :   52  
##  Class :character   1st Qu.:1186207   1st Qu.:126892   1st Qu.:25029  
##  Mode  :character   Median :2497373   Median :249443   Median :50840  
##                     Mean   :2494066   Mean   :251475   Mean   :50520  
##                     3rd Qu.:3759781   3rd Qu.:373971   3rd Qu.:75774  
##                     Max.   :4999430   Max.   :499922   Max.   :99978  
##     Comments     Engagement_Level  
##  Min.   :   18   Length:5000       
##  1st Qu.:12305   Class :character  
##  Median :25004   Mode  :character  
##  Mean   :24888                     
##  3rd Qu.:37073                     
##  Max.   :49993

Μέτρα Διασποράς

# Επιλογή αριθμητικών μεταβλητών
numeric_vars <- c("Views", "Likes", "Shares", "Comments")

# Υπολογισμός μέτρων διασποράς
numeric_vars <- c("Views", "Likes", "Shares", "Comments")

dispersion_measures <- data.frame(
  Μεταβλητή = numeric_vars,
  Εύρος = sapply(Viral_Social_Media_Trends[, numeric_vars, drop=FALSE], function(x) max(x, na.rm=TRUE) - min(x, na.rm=TRUE)),
  Διακύμανση = sapply(Viral_Social_Media_Trends[, numeric_vars, drop=FALSE], var, na.rm=TRUE),
  Τυπική_Απόκλιση = sapply(Viral_Social_Media_Trends[, numeric_vars, drop=FALSE], sd, na.rm=TRUE)
)

# Προβολή αποτελεσμάτων
dispersion_measures
##          Μεταβλητή   Εύρος   Διακύμανση Τυπική_Απόκλιση
## Views        Views 4998164 2.130111e+12      1459489.82
## Likes        Likes  499432 2.083680e+10       144349.58
## Shares      Shares   99926 8.448534e+08        29066.36
## Comments  Comments   49975 2.040471e+08        14284.50

Υπολογισμός συντελεστών συσχέτισης μεταξύ μεταβλητών

# Υπολογισμός συντελεστών συσχέτισης
correlation_matrix <- cor(Viral_Social_Media_Trends[, numeric_vars], use = "complete.obs", method = "pearson")

# Προβολή του πίνακα συσχετίσεων
correlation_matrix
##                 Views        Likes      Shares     Comments
## Views     1.000000000 -0.003176765  0.01314358 -0.009956131
## Likes    -0.003176765  1.000000000  0.01115356 -0.011771810
## Shares    0.013143580  0.011153557  1.00000000 -0.000131630
## Comments -0.009956131 -0.011771810 -0.00013163  1.000000000

Ερμηνεία του Πίνακα Συσχέτισης

Ο παρακάτω πίνακας δείχνει τους συντελεστές συσχέτισης μεταξύ των μεταβλητών Views, Likes, Shares, και Comments. Οι τιμές κυμαίνονται από -1 έως 1:

  • 1 → Απόλυτη θετική συσχέτιση (οι μεταβλητές αυξάνονται/μειώνονται μαζί).
  • 0 → Καμία γραμμική συσχέτιση.
  • -1 → Απόλυτη αρνητική συσχέτιση (όταν η μία αυξάνεται, η άλλη μειώνεται).

Συμπεράσματα

  • Views & Likes (-0.0032) → Σχεδόν μηδενική συσχέτιση
    • Δεν υπάρχει σαφής γραμμική σχέση μεταξύ προβολών και likes.
  • Views & Shares (0.0131)Πολύ αδύναμη θετική συσχέτιση
    • Όταν οι προβολές αυξάνονται, οι κοινοποιήσεις ίσως αυξάνονται ελάχιστα, αλλά η σχέση είναι πολύ αδύναμη.
  • Views & Comments (-0.0099) → Σχεδόν μηδενική συσχέτιση
    • Δεν υπάρχει γραμμική σχέση μεταξύ προβολών και σχολίων.
  • Likes & Shares (0.0112) → Σχεδόν μηδενική θετική συσχέτιση
    • Τα likes δεν σχετίζονται ιδιαίτερα με τις κοινοποιήσεις.
  • Likes & Comments (-0.0118)Πολύ αδύναμη αρνητική συσχέτιση
    • Όταν τα likes αυξάνονται, τα σχόλια μειώνονται ελάχιστα, αλλά η σχέση είναι πολύ ασθενής.
  • Shares & Comments (-0.0001)Ουσιαστικά καμία σχέση
    • Οι κοινοποιήσεις και τα σχόλια δεν φαίνεται να σχετίζονται μεταξύ τους.

Τελικό Συμπέρασμα

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

Plots

Scatterplot

library(ggplot2)
ggplot(Viral_Social_Media_Trends, aes(x=Views, y=Comments)) +geom_point()

Σχόλια

Στο συγκεκριμένο διάγραμμα διασποράς φαίνεται ότι ο αριθμός των Views δεν επηρεάζει των αριθμό των comments καθώς αναρτήσεις με λίγες προβολές μπορεί να έχουν πολλά σχόλια και το αντίστροφο.

Bar Chart

ggplot(Viral_Social_Media_Trends, aes(x=Platform)) + 
  geom_bar(aes(y=after_stat(count)), fill="blue") +  # Δηλώνουμε ότι θέλουμε το πλήθος
  labs(title="Αριθμός Αναρτήσεων ανά Πλατφόρμα", 
       x="Πλατφόρμα", 
       y="Αριθμός Αναρτήσεων") +
  theme_minimal()  # Επιλογή ενός καθαρού θέματος για το γράφημα

Σχόλια

Σε αυτό το bar chart παρατηρείται ότι οι περισσότερες αναρτήσεις έχουν γίνει στο Youtube με μικρή διαφορά από το TikTok, καθώς επίσης ενδιαφέρον στατιστικό είναι πως η απόκλιση μεταξύ τών αναρτήσεων του πρώτου Youtube και του τελευταίου Twitter(X) είναι μικρή.

Βox Plot

ggplot(Viral_Social_Media_Trends, aes(x=Hashtag, y=Views)) + 
  geom_boxplot(fill="blue", color="black") +  # Δημιουργία του boxplot με χρώμα
  labs(title="Κατανομή Προβολών ανά Hashtag", 
       x="Hashtag", 
       y="Views") +
  theme_minimal() 

Σχόλια

  • Δεν φαίνεται κάποιο hashtag να έχει ξεκάθαρη υπεροχή σε προβολές.

  • Η διάμεσος είναι παρόμοια μεταξύ των hashtags, αλλά υπάρχουν αναρτήσεις με πολύ διαφορετικές επιδόσεις

  • Η υψηλή διακύμανση σημαίνει ότι η απόδοση μιας ανάρτησης εξαρτάται όχι μόνο από το hashtag αλλά και από άλλους παράγοντες (π.χ. ποιότητα περιεχομένου, engagement, αλγόριθμοι πλατφορμών).

Histogram

ggplot(Viral_Social_Media_Trends, aes(x=Likes)) + geom_histogram(binwidth = 5000, fill="blue",alpha=0.7) + labs(title="Histogram of likes") + theme_minimal()

Σχόλια

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

Γραμμική Παλινδρόμηση

Μοντέλο 1

model_simple <- lm(Views ~ Likes, data = Viral_Social_Media_Trends)
summary(model_simple)
## 
## Call:
## lm(formula = Views ~ Likes, data = Viral_Social_Media_Trends)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2494771 -1309960     1590  1263705  2512703 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.502e+06  4.147e+04  60.339   <2e-16 ***
## Likes       -3.212e-02  1.430e-01  -0.225    0.822    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1460000 on 4998 degrees of freedom
## Multiple R-squared:  1.009e-05,  Adjusted R-squared:  -0.00019 
## F-statistic: 0.05044 on 1 and 4998 DF,  p-value: 0.8223
ggplot(Viral_Social_Media_Trends, aes(x = Likes, y = Views)) +
  geom_point(alpha = 0.3, color = "steelblue") +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Model 1: Views vs Likes",
       x = "Likes", y = "Views")
## `geom_smooth()` using formula = 'y ~ x'

Σχόλια

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

Μοντέλο 2

model_medium <- lm(Views ~ Likes + Shares, data = Viral_Social_Media_Trends)
summary(model_medium)
## 
## Call:
## lm(formula = Views ~ Likes + Shares, data = Viral_Social_Media_Trends)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2509817 -1303022     5494  1260770  2542230 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.469e+06  5.458e+04  45.240   <2e-16 ***
## Likes       -3.361e-02  1.430e-01  -0.235    0.814    
## Shares       6.618e-01  7.103e-01   0.932    0.352    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1460000 on 4997 degrees of freedom
## Multiple R-squared:  0.0001838,  Adjusted R-squared:  -0.0002164 
## F-statistic: 0.4593 on 2 and 4997 DF,  p-value: 0.6317
ggplot(Viral_Social_Media_Trends, aes(x = Likes, y = Views, color = Shares)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", aes(group = 1), se = FALSE, color = "red") +
  labs(title = "Model 2: Views vs Likes + Shares",
       x = "Likes", y = "Views") +
  scale_color_viridis_c()
## `geom_smooth()` using formula = 'y ~ x'

Μοντέλο 3

model_full <- lm(Views ~ Likes + Shares + Comments, data = Viral_Social_Media_Trends)
summary(model_full)
## 
## Call:
## lm(formula = Views ~ Likes + Shares + Comments, data = Viral_Social_Media_Trends)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2513931 -1301656     5276  1268858  2545200 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.495e+06  6.560e+04  38.029   <2e-16 ***
## Likes       -3.480e-02  1.430e-01  -0.243    0.808    
## Shares       6.618e-01  7.103e-01   0.932    0.352    
## Comments    -1.021e+00  1.445e+00  -0.707    0.480    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1460000 on 4996 degrees of freedom
## Multiple R-squared:  0.0002837,  Adjusted R-squared:  -0.0003166 
## F-statistic: 0.4726 on 3 and 4996 DF,  p-value: 0.7014
Viral_Social_Media_Trends$Predicted_Views <- predict(model_full)

ggplot(Viral_Social_Media_Trends, aes(x = Likes, y = Views)) +
  geom_point(alpha = 0.3, color = "grey60") +
  geom_line(aes(y = Predicted_Views), color = "darkgreen", linewidth = 1) +
  labs(title = "Model 3: Predicted Views based on Likes + Shares + Comments",
       x = "Likes", y = "Views")

# Συνάρτηση για SSE και R²
model_stats <- function(model) {
  residuals <- resid(model)
  SSE <- sum(residuals^2)
  R2 <- summary(model)$r.squared
  return(c(SSE = SSE, R_squared = R2))
}

stats1 <- model_stats(model_simple)
stats2 <- model_stats(model_medium)
stats3 <- model_stats(model_full)

model_comparison <- rbind(
  Model1 = stats1,
  Model2 = stats2,
  Model3 = stats3
)

print(model_comparison)
##                 SSE    R_squared
## Model1 1.064832e+16 1.009184e-05
## Model2 1.064647e+16 1.837998e-04
## Model3 1.064540e+16 2.836841e-04

Συμπέρασμα

Η προσθήκη των μεταβλητών Shares και Comments στο μοντέλο οδηγεί σε πολύ μικρή βελτίωση της προβλεπτικής ικανότητας. Αυτό υποδεικνύει ότι καμία από τις ανεξάρτητες μεταβλητές δεν σχετίζεται ισχυρά με τις προβολές (Views).Αρα, τα δεδομένα είτε περιέχουν πολύ θόρυβο, είτε λείπουν σημαντικοί παράγοντες που επηρεάζουν τις προβολές, όπως το περιεχόμενο του post, η ώρα δημοσίευσης, ή ο τύπος του κοινού.

Λογιστική Παλινδρόμηση

Εγκατάσταση βιβλιοθηκών

## Installing package into 'C:/Users/poulios/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'caTools' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\poulios\AppData\Local\Temp\RtmpglWMsk\downloaded_packages
## Installing package into 'C:/Users/poulios/AppData/Local/R/win-library/4.4'
## (as 'lib' is unspecified)
## package 'ROCR' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\poulios\AppData\Local\Temp\RtmpglWMsk\downloaded_packages

Διαχωρισμός train και test sets και ορισμός seed σε 988

set.seed(988)  # Ορισμός του seed

# Διαχωρισμός σε training (65%) και testing (35%)
sample_size <- floor(0.65 * nrow(Viral_Social_Media_Trends))
train_index <- sample(seq_len(nrow(Viral_Social_Media_Trends)), size = sample_size)

# Δημιουργία των sets
train <- Viral_Social_Media_Trends[train_index, ]
test <- Viral_Social_Media_Trends[-train_index, ]

# Εμφάνιση αριθμού καταχωρήσεων
cat("Αριθμός καταχωρήσεων στο train set:", nrow(train), "\n")
## Αριθμός καταχωρήσεων στο train set: 3250
cat("Αριθμός καταχωρήσεων στο test set:", nrow(test), "\n")
## Αριθμός καταχωρήσεων στο test set: 1750

Συμπέρασμα:

Καμία από τις ανεξάρτητες μεταβλητές δεν παρουσιάζει στατιστικά σημαντική συσχέτιση με τη μεταβλητή-στόχο Popular. Όλες οι τιμές p είναι πολύ μεγαλύτερες από το όριο σημαντικότητας 0.05, επομένως απορρίπτεται η υπόθεση ότι οι συγκεκριμένοι συντελεστές διαφέρουν σημαντικά από το μηδέν.Συνοπτικά likes, shares και comments δεν προβλέπουν αξιόπιστα αν ένα post θα είναι δημοφιλές στο συγκεκριμένο dataset.

predictTest <- predict(log_model, newdata = test, type = "response")
set.seed(988)
# Επιλογή 5 τυχαίων δειγμάτων
sample_indices <- sample(1:length(predictTest), 5)
predictTest[sample_indices]
##      3629      3485      2014      3923      3572 
## 0.4982408 0.5087291 0.5124747 0.5020903 0.4939749

Αποτέλεσμα :

Οι τιμές αυτές βρίσκονται πολύ κοντά στο 0.5, που σημαίνει ότι το μοντέλο δεν είναι σίγουρο για την πρόβλεψή του,προβλέπει δηλαδή περίπου 50-50 πιθανότητες για το αν το γεγονός θα συμβεί.