Daten einlesen

et <- read.csv("Engagement_Tracker2.csv") # working directory ist der gleiche Ordner

Strukturübersicht

head(et) # Blöcke: 1 = Vormittag (8-11), 2= Mittag (12-14), 3 = Nachmittag (15-17), 4 = Abend (18-20)
##                           Reel  Weekday Block Upload.Time IG.views.1h
## 1  Rechnen ohne Taschenrechner  Tuesday     1     9:30:00        2043
## 2            Duzen oder Siezen Thursday     2    12:10:00        1389
## 3          Flipped Conferences   Friday     3    16:20:00         940
## 4       Ich mag Mathe, weil... Saturday     4    18:30:00        1138
## 5 Wie lernt man Fahrradfahren?   Monday     1     9:30:00         775
## 6     Mach besser kurze Videos  Tuesday     1     8:30:00         606
##   IG.views.3h IG.likes.1h IG.likes.3h IG.comments.1h IG.comments.3h TT.views.1h
## 1        3236          50         106              5              8         692
## 2        2917          51         125              2              9        1098
## 3        1290          10          12              0              0         454
## 4        1937          36          55              8             10         437
## 5        1799          13          33              1              3         296
## 6        1033           9          10              0              0         242
##   TT.views.3h TT.likes.1h TT.likes.3h TT.comments.1h TT.comments.3h YT.views.1h
## 1        1308          27          43              1              2         319
## 2        4330          56         156              3             19         814
## 3         699          10          18              0              0         438
## 4         715          17          30              0              3         358
## 5         798           6          16              1              3         496
## 6         720           4           9              0              0         446
##   YT.views.3h YT.likes.1h YT.likes.3h YT.comments.1h YT.comments.3h
## 1        1249          13          49              0              0
## 2        1231          15          23              3              5
## 3         702           3           8              0              0
## 4         688          16          27              2              2
## 5         948           7          24              1              1
## 6         750          12          18              0              2
sapply(et, class) # Datentypen überprüfen
##           Reel        Weekday          Block    Upload.Time    IG.views.1h 
##    "character"    "character"      "integer"    "character"      "integer" 
##    IG.views.3h    IG.likes.1h    IG.likes.3h IG.comments.1h IG.comments.3h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
##    TT.views.1h    TT.views.3h    TT.likes.1h    TT.likes.3h TT.comments.1h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
## TT.comments.3h    YT.views.1h    YT.views.3h    YT.likes.1h    YT.likes.3h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
## YT.comments.1h YT.comments.3h 
##      "integer"      "integer"

Daten bereinigen

et$Block <- as.factor(et$Block) # Uhrzeitblock von int zu factor
sapply(et, class) # Überprüfen
##           Reel        Weekday          Block    Upload.Time    IG.views.1h 
##    "character"    "character"       "factor"    "character"      "integer" 
##    IG.views.3h    IG.likes.1h    IG.likes.3h IG.comments.1h IG.comments.3h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
##    TT.views.1h    TT.views.3h    TT.likes.1h    TT.likes.3h TT.comments.1h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
## TT.comments.3h    YT.views.1h    YT.views.3h    YT.likes.1h    YT.likes.3h 
##      "integer"      "integer"      "integer"      "integer"      "integer" 
## YT.comments.1h YT.comments.3h 
##      "integer"      "integer"

Deskriptive Statistik

Ermittlung des Mittelwerts, Medians, min und max für die Variablen views, likes und comments für jede der drei Plattformen

# Mittelwerte für Instagram
print(
  paste(
    mean(et$IG.views.3h, na.rm = TRUE),
    mean(et$IG.likes.3h, na.rm = TRUE),
    mean(et$IG.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "1739.13043478261 - 49.7826086956522 - 3.04347826086957"
# Mediane für Instagram
print(
  paste(
    median(et$IG.views.3h, na.rm = TRUE),
    median(et$IG.likes.3h, na.rm = TRUE),
    median(et$IG.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "1723 - 48 - 2"
# min und max für Instagram
print(
  paste(
    min(et$IG.views.3h, na.rm = TRUE),
    max(et$IG.views.3h, na.rm = TRUE),

    min(et$IG.likes.3h, na.rm = TRUE),
    max(et$IG.likes.3h, na.rm = TRUE),

    min(et$IG.comments.3h, na.rm = TRUE),
    max(et$IG.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "824 - 3236 - 10 - 125 - 0 - 10"

Die deskriptiven Statistiken für views, likes und comments auf Instagram nach 3 Stunden: VIEWS: m = 1739, median = 1723, min = 824, max = 3236 LIKES: m = 50, median = 48, min = 10, max = 125 COMMENTS: m = 3, median = 2, min = 0, max = 10

# Mittelwerte für TikTok
print(
  paste(
    mean(et$TT.views.3h, na.rm = TRUE),
    mean(et$TT.likes.3h, na.rm = TRUE),
    mean(et$TT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "953.739130434783 - 35.6521739130435 - 2.56521739130435"
# Mediane für TikTok
print(
  paste(
    median(et$TT.views.3h, na.rm = TRUE),
    median(et$TT.likes.3h, na.rm = TRUE),
    median(et$TT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "720 - 30 - 2"
# min und max für TikTok
print(
  paste(
    min(et$TT.views.3h, na.rm = TRUE),
    max(et$TT.views.3h, na.rm = TRUE),

    min(et$TT.likes.3h, na.rm = TRUE),
    max(et$TT.likes.3h, na.rm = TRUE),

    min(et$TT.comments.3h, na.rm = TRUE),
    max(et$TT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "12 - 4330 - 1 - 156 - 0 - 19"

Die deskriptiven Statistiken für views, likes und comments auf TikTok nach 3 Stunden: VIEWS: m = 954, median = 720, min = 12, max = 4330 LIKES: m = 36, median = 30, min = 1, max = 156 COMMENTS: m = 3, median = 2, min = 0, max = 19

# Mittelwerte für YouTube
print(
  paste(
    mean(et$YT.views.3h, na.rm = TRUE),
    mean(et$YT.likes.3h, na.rm = TRUE),
    mean(et$YT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "1041.17391304348 - 29.3913043478261 - 2.21739130434783"
# Mediane für YouTube
print(
  paste(
    median(et$YT.views.3h, na.rm = TRUE),
    median(et$YT.likes.3h, na.rm = TRUE),
    median(et$YT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "1028 - 25 - 2"
# min und max für YouTube
print(
  paste(
    min(et$YT.views.3h, na.rm = TRUE),
    max(et$YT.views.3h, na.rm = TRUE),

    min(et$YT.likes.3h, na.rm = TRUE),
    max(et$YT.likes.3h, na.rm = TRUE),

    min(et$YT.comments.3h, na.rm = TRUE),
    max(et$YT.comments.3h, na.rm = TRUE),
    sep = " - "
  )
)
## [1] "431 - 1893 - 8 - 67 - 0 - 12"

Die deskriptiven Statistiken für views, likes und comments auf YouTube nach 3 Stunden: VIEWS: m = 1041, median = 1028, min = 431, max = 1893 LIKES: m = 29, median = 25, min = 8, max = 67 COMMENTS: m = 2, median = 2, min = 0, max = 12

Man erkennt: TikTok bietet sowohl die Plattform mit dem meistmöglichen Engagement (views, likes und comments) als auch die Plattform mit den geringsten Werten. Die min-Werte sind wahrscheinlich auf einen shadowban des Posts zurückzuführen.

Visualisierung der Daten

# Histogramm für die Views, beispielhaft
hist(et$IG.views.3h, breaks=10, col="blue", main="Anzahl der Instagram-Views", xlab="IG Views nach 3h", ylab="Anzahl")

Streudiagramme

Um Korrelationen zwischen Zeitblock und den Variablen views, likes und comments zu erkennen

# Streudiagramme für Instagram
plot(et$IG.views.3h, et$Block, col="green", pch=16, main="Streudiagramm zwischen dem Zeitblock und den Instagram Views nach 3h", xlab="Instagram Views", ylab="Zeitblock")

Anmerkung: Ich habe alle Streudiagramme für die Variablen views, likes und comments für jeweils Instagram, TikTok und YouTube erstellt und nirgends ein Muster in der Streuung erkennen können. Um das Dokument nicht unnötig in die Länge zu strecken, werden daher keine weiteren Streudiagramme integriert.

Einfaktorielle ANOVA

Fragestellung: Hat der Wochentag einen Einfluss auf die Likes auf den verschiedenen Plattformen?

Einfluss des Wochentags auf die Instagram views

# Weekday als kategorialen Faktor
et$Weekday <- factor(et$Weekday)

# ANOVAs für Instagram
anova_ig3 <- aov(IG.views.3h ~ Weekday, data = et)

# ANOVA Instagram Ergebnisse
summary(anova_ig3)
##             Df  Sum Sq Mean Sq F value Pr(>F)
## Weekday      6 1701043  283507   0.531  0.777
## Residuals   16 8535804  533488               
## 4 observations deleted due to missingness

Interpretation Der Wochentag hat keinen Einfluss auf die views auf Instagram, da der p-Wert für 3h nach Post NICHT signifikant ist (p=0.78)

Einfluss des Wochentags auf die TikTok views

# Weekday als kategorialen Faktor
et$Weekday <- factor(et$Weekday)

# ANOVAs für TikTok
anova_tt3 <- aov(TT.views.3h ~ Weekday, data = et)

# ANOVA TikTok Ergebnisse
summary(anova_tt3)
##             Df   Sum Sq Mean Sq F value Pr(>F)
## Weekday      6  1932841  322140   0.373  0.886
## Residuals   16 13818330  863646               
## 4 observations deleted due to missingness

Interpretation Der Wochentag hat keinen Einfluss auf die views auf TikTok, da der p-Wert für 3h nach Post NICHT signifikant sind (p=0.89)

Einfluss des Wochentags auf die YouTube views

# Weekday als kategorialen Faktor
et$Weekday <- factor(et$Weekday)

# ANOVAs für TikTok
anova_yt3 <- aov(YT.views.3h ~ Weekday, data = et)

# ANOVA TikTok Ergebnisse
summary(anova_yt3)
##             Df  Sum Sq Mean Sq F value Pr(>F)
## Weekday      6  999954  166659   1.194  0.358
## Residuals   16 2232527  139533               
## 4 observations deleted due to missingness

Interpretation Der Wochentag hat keinen Einfluss auf die views auf YouTube, da der p-Wert für 3h nach Post NICHT signifikant ist (p=0.36)

Zweifaktorielle ANOVA

Fragestellung: Haben Wochentag und Uhrzeit und die Interaktion der beiden Werte einen Einfluss auf die views?

Einfluss der Kombination aus Wochentag und Uhrzeit auf Instagram views

# Weekday und Block als factor
et$Weekday <- factor(et$Weekday)
et$Block <- factor(et$Block)

# Zweifaktorielle ANOVA mit Interaktion
anova_ig_daytime <- aov(IG.views.3h ~ Weekday * Block, data = et)

# Zweifaktorielle ANOVA Ergebnisse
summary(anova_ig_daytime)
##               Df  Sum Sq Mean Sq F value Pr(>F)
## Weekday        6 1701043  283507   0.313  0.895
## Block          3  170323   56774   0.063  0.976
## Weekday:Block 10 5645795  564580   0.623  0.751
## Residuals      3 2719685  906562               
## 4 observations deleted due to missingness

Interpretation Es gibt keinen zusammenhang zwischen dem Wochentag, der Uhrzeit und den Instagram views, da die p-Werte nicht signifikant sind (p(Weekday)=.9, p(Block)=.98, p(Interaktion)=.75)

Einfluss der Kombination aus Wochentag und Uhrzeit auf TikTok views

# Weekday und Block als factor
et$Weekday <- factor(et$Weekday)
et$Block <- factor(et$Block)

# Zweifaktorielle ANOVA mit Interaktion
anova_tt_daytime <- aov(TT.views.3h ~ Weekday * Block, data = et)

# Zweifaktorielle ANOVA Ergebnisse
summary(anova_tt_daytime)
##               Df   Sum Sq Mean Sq F value Pr(>F)  
## Weekday        6  1932841  322140   2.906 0.2050  
## Block          3  1768872  589624   5.319 0.1016  
## Weekday:Block 10 11716897 1171690  10.570 0.0387 *
## Residuals      3   332561  110854                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 4 observations deleted due to missingness

Interpretation Es gibt keinen zusammenhang zwischen dem Wochentag, der Uhrzeit und den views, da die p-Werte nicht signifikant sind (p(Weekday)=.21, p(Block)=.1. Die Interaktion des Wochentags und der Tageszeit hat allerdings einen schwachen signifikanten Wert (p(Interaktion)<.05). Das bedeutet, dass es Kombinationen aus Wochentag und Tageszeit gibt, die besser für die views auf TikTok sind, als andere

Einfluss der Kombination aus Wochentag und Uhrzeit auf YouTube views

# Weekday und Block als factor
et$Weekday <- factor(et$Weekday)
et$Block <- factor(et$Block)

# Zweifaktorielle ANOVA mit Interaktion
anova_yt_daytime <- aov(YT.views.3h ~ Weekday * Block, data = et)

# Zweifaktorielle ANOVA Ergebnisse
summary(anova_yt_daytime)
##               Df  Sum Sq Mean Sq F value Pr(>F)
## Weekday        6  999954  166659   1.479  0.402
## Block          3  276514   92171   0.818  0.564
## Weekday:Block 10 1617862  161786   1.435  0.425
## Residuals      3  338151  112717               
## 4 observations deleted due to missingness

Interpretation Es gibt keinen zusammenhang zwischen dem Wochentag, der Uhrzeit und den views, da die p-Werte nicht signifikant sind (p(Weekday)=.4, p(Block)=.57, p(Interaktion)=.43.

Visualisierung der ANOVA Wochentag * Block auf TikTok views (anova_tt_daytime)

Interaktionsplot für die graphische Darstellung der Interaktion aus Wochentag und Tageszeit auf die TikTok views

interaction.plot(et$Block, et$Weekday, et$TT.views.3h,
                 xlab = "Tageszeit (Block)",
                 ylab = "TikTok Views (nach 3h)",
                 trace.label = "Wochentag",
                 col = rainbow(7), lwd = 2)

Interpretation: Der Interaktionsplot zeigt, dass ein Video, dass am Dienstag um die Mittagszeit gepostet wurde, sehr gut lief. Leider ist diese Interpretation mit Vorsicht zu genießen, da der Datensatz viel zu klein und lückenhaft ist, um diese Informationen mit Sicherheit annehmen zu können.

Erweiteren Datensatz importieren

Dieser Datensatz beinhaltet eine weitere Variable, die Art des Contents. Diese enthält vier Werte: 1= Mindset, 2 = Hochschuldidaktik, 3 = Mathematik, 4 = Wissenschaftskommunikation / WissKomm

etplus <- read.csv2("Engagement_Tracker_Plus.csv") # csv2, damit die Trennzeichen richtig eingelesen werden können

ANOVA

Art des Contents ist nominalskaliert, social media Engagement (views, likes, comments) sind metrisch skaliert Im Folgenden werden mehrere ANOVAs für die jeweilige Engagement Variable auf den drei Plattformen Instagram, TikTok und YouTube durchgeführt

Art des Contents mit Instagram views

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova3.1 <- aov(IG.views.3h ~ Art.des.Contents, data = etplus)
summary(anova3.1)
##                  Df  Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3 2202265  734088   1.736  0.194
## Residuals        19 8034582  422873

NICHT signifikant (p=.19)

Art des Contents mit Instagram likes

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova3.2 <- aov(IG.likes.3h ~ Art.des.Contents, data = etplus)
summary(anova3.2)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3   6211    2070   2.002  0.148
## Residuals        19  19649    1034

NICHT signifikant (p=.15)

Art des Contents mit Instagram comments

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova3.3 <- aov(IG.comments.3h ~ Art.des.Contents, data = etplus)
summary(anova3.3)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3  57.29  19.097   2.361  0.104
## Residuals        19 153.67   8.088

NICHT signifikant (p=.1)

Art des Contents mit TikTok views

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova4.1 <- aov(TT.views.3h ~ Art.des.Contents, data = etplus)
summary(anova4.1)
##                  Df   Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3   793183  264394   0.336    0.8
## Residuals        19 14957987  787262

NICHT signifikant (p=.8)

Art des Contents mit TikTok likes

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova4.2 <- aov(TT.likes.3h ~ Art.des.Contents, data = etplus)
summary(anova4.2)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3   1914     638   0.564  0.645
## Residuals        19  21479    1130

NICHT signifikant (p=.65)

Art des Contents mit TikTok comments

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova4.3 <- aov(TT.comments.3h ~ Art.des.Contents, data = etplus)
summary(anova4.3)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3  28.97   9.655   0.598  0.624
## Residuals        19 306.69  16.141

NICHT signifikant (p=.62)

Art des Contents mit YouTube views

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova5.1 <- aov(YT.views.3h ~ Art.des.Contents, data = etplus)
summary(anova5.1)
##                  Df  Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3  602100  200700    1.45   0.26
## Residuals        19 2630381  138441

NICHT signifikant (p=.26)

Art des Contents mit YouTube likes

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova5.2 <- aov(YT.likes.3h ~ Art.des.Contents, data = etplus)
summary(anova5.2)
##                  Df Sum Sq Mean Sq F value  Pr(>F)   
## Art.des.Contents  3   3473  1157.5   7.443 0.00172 **
## Residuals        19   2955   155.5                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Signifikant (p<.05) Das bedeutet, dass nicht alle Content-Typen gleich viele Likes erhalten. Für weitere Informationen wird ein TukeyHSD Post-hoc-Test durchgeführt.

Art des Contents mit YouTube comments

etplus$Art.des.Contents <- as.factor(etplus$Art.des.Contents)

anova5.3 <- aov(YT.comments.3h ~ Art.des.Contents, data = etplus)
summary(anova5.3)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents  3  34.83  11.611   1.353  0.287
## Residuals        19 163.08   8.583

NICHT Signifikant (p=.29)

Post-hoc Test: TukeyHSD

TukeyHSD für die YouTube likes nach 3h durchführen

TukeyHSD(anova5.2)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = YT.likes.3h ~ Art.des.Contents, data = etplus)
## 
## $Art.des.Contents
##           diff        lwr       upr     p adj
## 2-1 -16.523810 -34.195280  1.147661 0.0718287
## 3-1  12.142857  -9.835757 34.121471 0.4271962
## 4-1 -23.857143 -48.054801  0.340515 0.0541376
## 3-2  28.666667   7.594781 49.738552 0.0057540
## 4-2  -7.333333 -30.710492 16.043825 0.8140748
## 4-3 -36.000000 -62.781899 -9.218101 0.0063634

Interpretation: Die einzigen signifikanten Werte sind beim Vergleich zwischen 3-2 (Mathematik - Hochschuldidaktik) und zwischen 4-3 (Mathematik - WissKomm). Die diff-Werte weisen darauf hin, dass Mathematik mehr likes als Hochschuldidaktik bekommt und WissKomm weniger likes als Mathematik. der Zusammenhang zwischen 4-1(WissKomm - Mathematik) ist mit p=.054 fast signifikant, was darauf hinweist, dass WissKomm weniger Likes als Mindset bekommt

Visualisierung der YouTube likes

Boxplot mit der Art des Contents und den YouTube-likes nach 3h

boxplot(YT.likes.3h ~ Art.des.Contents, data = etplus,
        main = "Likes nach Content-Art (3h nach Post)",
        xlab = "Art des Contents",
        ylab = "YouTube Likes (nach 3h)")

Interpretation: Der Boxplot zeigt, dass Mathematik (3) hinsichtlich der YouTube likes am besten abschneidet, gefolgt von Mindset (1) auf Platz 2. Hochschuldidaktik (2) ist auf Platz 3 und WissKomm (4) schneidet deutlich am schlechtesten ab. Ein Ausreißer bei Hochschuldidaktik (2) zeigt, dass Hochschuldidaktik das Potenzial für teilweise sogar größere Beliebtheit als Mindset-Videos hat.