et_long <- read.csv2("Engagement_Tracker_Plus.csv") # working directory ist der gleiche Ordner
et_long$Block <- as.factor(et_long$Block) # Uhrzeitblock von int zu factor
sapply(et_long, class) # Überprüfen
## Reel Weekday Art.des.Contents Block
## "character" "character" "integer" "factor"
## Upload.Time IG.views.1h IG.views.3h IG.likes.1h
## "character" "integer" "integer" "integer"
## IG.likes.3h IG.comments.1h IG.comments.3h TT.views.1h
## "integer" "integer" "integer" "integer"
## TT.views.3h TT.likes.1h TT.likes.3h TT.comments.1h
## "integer" "integer" "integer" "integer"
## TT.comments.3h YT.views.1h YT.views.3h YT.likes.1h
## "integer" "integer" "integer" "integer"
## YT.likes.3h YT.comments.1h YT.comments.3h
## "integer" "integer" "integer"
anova_result <- aov(IG.views.3h ~ Art.des.Contents, data = et_long)
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## Art.des.Contents 1 775553 775553 1.721 0.204
## Residuals 21 9461293 450538
Nicht signifikant (p=.2). Folglich kein signifikanter Zusammenhang zwischen den IG views und der Art des Contents.
Übersicht anzeigen lassen, um die durchschnittliche Anzahl der likes je nach Art des Contents auf IG zu sehen:
aggregate(IG.views.3h ~ Art.des.Contents, data = et_long, mean)
## Art.des.Contents IG.views.3h
## 1 1 1937.429
## 2 2 1665.889
## 3 3 2074.500
## 4 4 1049.000
Man sieht: Mathematik (3) läuft am besten, gefolgt von Mindset (1), Unterrichtsdidaktik (2) und WissKomm (4) am Schluss
# Datensatz umbauen für größere Stichprobe -> long format
names(et_long)[names(et_long) == "IG.views.3h"] <- "views_IG"
names(et_long)[names(et_long) == "TT.views.3h"] <- "views_TT"
names(et_long)[names(et_long) == "YT.views.3h"] <- "views_YT"
# Neuen Datensatz mit ausgewählten Spalten erstellen
data_selected <- et_long[, c("Reel", "Weekday", "Art.des.Contents", "Block", "views_IG", "views_TT", "views_YT")]
# Datensatz in long-format umwandeln
data_long <- pivot_longer(data_selected,
cols = c("views_IG", "views_TT", "views_YT"),
names_to = "plattform",
values_to = "views")
# In Faktro umwanden
data_long$Weekday <- factor(data_long$Weekday)
data_long$Block <- factor(data_long$Block)
head(data_long)
## # A tibble: 6 × 6
## Reel Weekday Art.des.Contents Block plattform views
## <chr> <fct> <int> <fct> <chr> <int>
## 1 Rechnen ohne Taschenrechner Tuesday 1 1 views_IG 3236
## 2 Rechnen ohne Taschenrechner Tuesday 1 1 views_TT 1308
## 3 Rechnen ohne Taschenrechner Tuesday 1 1 views_YT 1249
## 4 Duzen oder Siezen Thursday 2 2 views_IG 2917
## 5 Duzen oder Siezen Thursday 2 2 views_TT 4330
## 6 Duzen oder Siezen Thursday 2 2 views_YT 1231
anova_long_2way <- aov(views ~ Block * Weekday, data = data_long)
summary(anova_long_2way)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 621883 207294 0.448 0.7198
## Weekday 6 3436930 572822 1.238 0.3035
## Block:Weekday 10 11012038 1101204 2.380 0.0218 *
## Residuals 49 22672127 462696
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: es gibt eine signifikante Interaktion zwischen dem Wochentag und der Uhrzeit (p=.022)
summary_df <- aggregate(views ~ Weekday + Block, data = data_long, mean)
summary_df[order(-summary_df$views), ]
## Weekday Block views
## 8 Thursday 2 2826.0000
## 11 Monday 3 2251.3333
## 14 Wednesday 3 1667.3333
## 3 Tuesday 1 1382.6667
## 19 Tuesday 4 1370.6667
## 18 Thursday 4 1361.3333
## 4 Friday 2 1358.6667
## 5 Monday 2 1208.6667
## 16 Monday 4 1197.6667
## 9 Wednesday 2 1183.6667
## 1 Monday 1 1181.6667
## 20 Wednesday 4 1168.3333
## 17 Saturday 4 1113.3333
## 7 Sunday 2 1031.6667
## 12 Thursday 3 931.0000
## 2 Thursday 1 912.6667
## 10 Friday 3 897.0000
## 13 Tuesday 3 893.6667
## 6 Saturday 2 793.3333
## 15 Friday 4 727.0000
man sieht: Donnerstags um die Mittagszeit (Zeitblock 2) eignet sich am besten, gefolgt von Montag Nachmittag (Zeitblock 3)
library(ggplot2)
ggplot(summary_df, aes(x = Block, y = Weekday, fill = views)) +
geom_tile(color = "white") +
scale_fill_gradient(low = "lightblue", high = "darkblue") +
labs(title = "Durchschnittliche Views pro Wochentag und Zeitblock",
x = "Time Block", y = "Wochentag", fill = "Ø Views") +
theme_minimal() +
theme(axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
plot.title = element_text(size = 14, face = "bold"))
Man sieht: Donnerstag Mittag und Montag Nachmittag
erzielen die meisten views
Interaktion aus Wochentag, Uhrzeit und der Plattform
data_long$plattform <- factor(data_long$plattform)
anova_3way <- aov(views ~ Block * Weekday * plattform, data = data_long)
summary(anova_3way)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 621883 207294 0.550 0.6605
## Weekday 6 3436930 572822 1.521 0.2743
## plattform 2 8522479 4261239 11.312 0.0035 **
## Block:Weekday 10 11012038 1101204 2.923 0.0609 .
## Block:plattform 6 1069713 178286 0.473 0.8126
## Weekday:plattform 12 1721021 143418 0.381 0.9392
## Block:Weekday:plattform 20 7968516 398426 1.058 0.4904
## Residuals 9 3390397 376711
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: Die Plattform hat einen signifikanten Effekt (p=.0035). Die Interaktion aus Zeitblock und Plattform ist knapp nicht signifikant (p=.06).
Die Analyse war knapp nicht signifikant, durch aggregate kann man aber einen Überblich bekommen, welcher Wochentag zu welcher Uhrzeit am meisten views eingebracht hat
summary_combo <- aggregate(views ~ Weekday + Block, data = data_long, mean)
summary_combo[order(-summary_combo$views), ]
## Weekday Block views
## 8 Thursday 2 2826.0000
## 11 Monday 3 2251.3333
## 14 Wednesday 3 1667.3333
## 3 Tuesday 1 1382.6667
## 19 Tuesday 4 1370.6667
## 18 Thursday 4 1361.3333
## 4 Friday 2 1358.6667
## 5 Monday 2 1208.6667
## 16 Monday 4 1197.6667
## 9 Wednesday 2 1183.6667
## 1 Monday 1 1181.6667
## 20 Wednesday 4 1168.3333
## 17 Saturday 4 1113.3333
## 7 Sunday 2 1031.6667
## 12 Thursday 3 931.0000
## 2 Thursday 1 912.6667
## 10 Friday 3 897.0000
## 13 Tuesday 3 893.6667
## 6 Saturday 2 793.3333
## 15 Friday 4 727.0000
Man sieht: Donnerstag Mittag sowie Montag und Mittwoch Nachmittag eignen sich mit am besten. Freitag Abend sowie Samstag Mittag eignen sich am schlechtesten.
aggregate(views ~ plattform, data = data_long, mean)
## plattform views
## 1 views_IG 1739.1304
## 2 views_TT 953.7391
## 3 views_YT 1041.1739
Man sieht: Auf Instagram werden die meisten views erzielt, gefolgt von YouTube und TikTok auf dem letzten Platz
# Datensatz umbauen für größere Stichprobe -> long format
names(et_long)[names(et_long) == "IG.likes.3h"] <- "likes_IG"
names(et_long)[names(et_long) == "TT.likes.3h"] <- "likes_TT"
names(et_long)[names(et_long) == "YT.likes.3h"] <- "likes_YT"
# Neuen Datensatz mit ausgewählten Spalten erstellen
data_selected <- et_long[, c("Reel", "Weekday", "Art.des.Contents", "Block", "likes_IG", "likes_TT", "likes_YT")]
# Datensatz in long-format umwandeln
data_long_likes <- pivot_longer(data_selected,
cols = c("likes_IG", "likes_TT", "likes_YT"),
names_to = "plattform",
values_to = "likes")
# In Faktor umwanden
data_long_likes$Weekday <- factor(data_long_likes$Weekday)
data_long_likes$Block <- factor(data_long_likes$Block)
head(data_long_likes)
## # A tibble: 6 × 6
## Reel Weekday Art.des.Contents Block plattform likes
## <chr> <fct> <int> <fct> <chr> <int>
## 1 Rechnen ohne Taschenrechner Tuesday 1 1 likes_IG 106
## 2 Rechnen ohne Taschenrechner Tuesday 1 1 likes_TT 43
## 3 Rechnen ohne Taschenrechner Tuesday 1 1 likes_YT 49
## 4 Duzen oder Siezen Thursday 2 2 likes_IG 125
## 5 Duzen oder Siezen Thursday 2 2 likes_TT 156
## 6 Duzen oder Siezen Thursday 2 2 likes_YT 23
anova_long_2way_likes <- aov(likes ~ Block * Weekday, data = data_long_likes)
summary(anova_long_2way_likes)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 1142 380.8 0.625 0.60229
## Weekday 6 9349 1558.2 2.558 0.03107 *
## Block:Weekday 10 20354 2035.4 3.341 0.00223 **
## Residuals 49 29854 609.3
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: es gibt signifikante Effekte zwischen den likes und dem Wochentag (p=.03) sowie der Interaktion aus Wochentag und Zeitblock (p=.002).
summary_df_likes <- aggregate(likes ~ Weekday + Block, data = data_long_likes, mean)
summary_df_likes[order(-summary_df_likes$likes), ]
## Weekday Block likes
## 8 Thursday 2 101.33333
## 14 Wednesday 3 83.00000
## 18 Thursday 4 62.66667
## 11 Monday 3 49.00000
## 4 Friday 2 47.33333
## 7 Sunday 2 45.00000
## 12 Thursday 3 44.66667
## 16 Monday 4 43.33333
## 19 Tuesday 4 43.33333
## 3 Tuesday 1 39.16667
## 17 Saturday 4 37.33333
## 20 Wednesday 4 34.33333
## 5 Monday 2 31.00000
## 13 Tuesday 3 25.00000
## 1 Monday 1 24.33333
## 9 Wednesday 2 23.33333
## 2 Thursday 1 20.33333
## 10 Friday 3 12.66667
## 15 Friday 4 12.33333
## 6 Saturday 2 11.66667
library(ggplot2)
ggplot(summary_df_likes, aes(x = Block, y = Weekday, fill = likes)) +
geom_tile(color = "white") +
scale_fill_gradient(low = "lightgreen", high = "darkgreen") +
labs(title = "Durchschnittliche Likes pro Wochentag und Zeitblock",
x = "Time Block", y = "Wochentag", fill = "Ø Likes") +
theme_minimal() +
theme(axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
plot.title = element_text(size = 14, face = "bold"))
Man sieht: Donnerstag Mittag sowie Mittwoch Nachmittag
ergeben die meisten likes. Donnerstag Mittag kam auch bei den views am
besten an.
Interaktion aus Wochentag, Uhrzeit und der Plattform mit LIKES
data_long_likes$plattform <- factor(data_long_likes$plattform)
anova_3way_likes <- aov(likes ~ Block * Weekday * plattform, data = data_long_likes)
summary(anova_3way_likes)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 1142 380.8 0.560 0.6549
## Weekday 6 9349 1558.2 2.290 0.1272
## plattform 2 5019 2509.6 3.688 0.0676 .
## Block:Weekday 10 20354 2035.4 2.991 0.0571 .
## Block:plattform 6 2593 432.1 0.635 0.7012
## Weekday:plattform 12 5766 480.5 0.706 0.7183
## Block:Weekday:plattform 20 10352 517.6 0.761 0.7100
## Residuals 9 6125 680.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: Hier gibt es keinerlei signifikante Werte, also kein Zusammenhang zwischen dem Wochentag, der Uhrzeit und den verschiedenen Plattformen.
aggregate(likes ~ plattform, data = data_long_likes, mean)
## plattform likes
## 1 likes_IG 49.78261
## 2 likes_TT 35.65217
## 3 likes_YT 29.39130
Man sieht: Instagram erzielt die meisten likes, gefolgt von TikTok und schließlich YouTube
# Datensatz umbauen für größere Stichprobe -> long format
names(et_long)[names(et_long) == "IG.comments.3h"] <- "comments_IG"
names(et_long)[names(et_long) == "TT.comments.3h"] <- "comments_TT"
names(et_long)[names(et_long) == "YT.comments.3h"] <- "comments_YT"
# Neuen Datensatz mit ausgewählten Spalten erstellen
data_selected_comments <- et_long[, c("Reel", "Weekday", "Art.des.Contents", "Block", "comments_IG", "comments_TT", "comments_YT")]
# Datensatz in long-format umwandeln
data_long_comments <- pivot_longer(data_selected_comments,
cols = c("comments_IG", "comments_TT", "comments_YT"),
names_to = "plattform",
values_to = "comments")
# In Faktor umwanden
data_long_comments$Weekday <- factor(data_long_comments$Weekday)
data_long_comments$Block <- factor(data_long_comments$Block)
head(data_long_comments)
## # A tibble: 6 × 6
## Reel Weekday Art.des.Contents Block plattform comments
## <chr> <fct> <int> <fct> <chr> <int>
## 1 Rechnen ohne Taschenrechner Tuesday 1 1 comments… 8
## 2 Rechnen ohne Taschenrechner Tuesday 1 1 comments… 2
## 3 Rechnen ohne Taschenrechner Tuesday 1 1 comments… 0
## 4 Duzen oder Siezen Thursday 2 2 comments… 9
## 5 Duzen oder Siezen Thursday 2 2 comments… 19
## 6 Duzen oder Siezen Thursday 2 2 comments… 5
anova_long_2way_comments <- aov(comments ~ Block * Weekday, data = data_long_comments)
summary(anova_long_2way_comments)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 12.1 4.047 0.572 0.63634
## Weekday 6 143.8 23.970 3.386 0.00714 **
## Block:Weekday 10 249.6 24.958 3.525 0.00145 **
## Residuals 49 346.9 7.079
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: es gibt signifikante Effekte zwischen den likes und dem Wochentag (p=.007) sowie der Interaktion aus Wochentag und Zeitblock (p=.0015).
summary_df_comments <- aggregate(comments ~ Weekday + Block, data = data_long_comments, mean)
summary_df_comments[order(-summary_df_comments$comments), ]
## Weekday Block comments
## 8 Thursday 2 11.0000000
## 14 Wednesday 3 6.6666667
## 12 Thursday 3 5.3333333
## 17 Saturday 4 5.0000000
## 7 Sunday 2 3.6666667
## 16 Monday 4 3.0000000
## 18 Thursday 4 3.0000000
## 5 Monday 2 2.6666667
## 1 Monday 1 2.3333333
## 19 Tuesday 4 2.3333333
## 3 Tuesday 1 2.0000000
## 11 Monday 3 2.0000000
## 20 Wednesday 4 2.0000000
## 13 Tuesday 3 1.2222222
## 2 Thursday 1 1.0000000
## 15 Friday 4 1.0000000
## 6 Saturday 2 0.6666667
## 9 Wednesday 2 0.6666667
## 4 Friday 2 0.0000000
## 10 Friday 3 0.0000000
library(ggplot2)
ggplot(summary_df_comments, aes(x = Block, y = Weekday, fill = comments)) +
geom_tile(color = "white") +
scale_fill_gradient(low = "pink", high = "purple") +
labs(title = "Durchschnittliche Comments pro Wochentag und Zeitblock",
x = "Time Block", y = "Wochentag", fill = "Ø Comments") +
theme_minimal() +
theme(axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
plot.title = element_text(size = 14, face = "bold"))
Man sieht: Die comments weisen ein ähnliches Bild auf, wie die views und die likes.
Interaktion aus Wochentag, Uhrzeit, Art des Contents und der Plattform mit VIEWS
data_long$plattform <- factor(data_long$plattform)
anova_4way <- aov(views ~ Block * Weekday * plattform * Art.des.Contents, data = data_long)
summary(anova_4way)
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 621883 207294 1.866 0.236125
## Weekday 6 3436930 572822 5.157 0.033080 *
## plattform 2 8522479 4261239 38.365 0.000381 ***
## Art.des.Contents 1 109700 109700 0.988 0.358687
## Block:Weekday 10 12706354 1270635 11.440 0.003722 **
## Block:plattform 6 1069713 178286 1.605 0.289932
## Weekday:plattform 12 1721021 143418 1.291 0.395069
## plattform:Art.des.Contents 2 1153015 576508 5.190 0.049140 *
## Block:Weekday:plattform 20 7735461 386773 3.482 0.063843 .
## Residuals 6 666420 111070
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Man sieht: Wie bereits gesehen, gibt es signifikante Effekte beim Wochentag (p=.03), der Plattform (p=.0004), der Interaktion aus Wochentag und Zeit (p=.004) (vgl. Abschnitt zu views). Neu ist hier der signifikante Effekt zwischen der Plattform und der Art des Contents in Bezug auf die views (p=.049).
ggplot(data_long, aes(x = Art.des.Contents, y = views,
color = plattform, group = plattform)) +
stat_summary(fun = mean, geom = "line", size = 1.2) +
stat_summary(fun = mean, geom = "point", size = 3) +
stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.2) +
labs(title = "Interaktion: Plattform × Art des Contents (Linienplot)",
x = "Art des Contents", y = "Durchschnittliche Views") +
theme_light()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Man sieht: Mathematik-Content (3) funktioniert überall
am besten, gefolgt von Mindset (1) auf IG und YT und Hochschuldidaktik
(2) auf TT. WissKomm wird auf allen Plattformen am wenigsten
geschaut.
Nachdem die Datensätze verlängert wurden und views, likes und comments über alle Plattformen hinweg vereint wurden, ergaben sich signifikante Zusammenhänge zwischen dem Wochentag, der Zeit des posts sowie dem Engagement (alle drei AVs). Verschiedene Analysen sowie graphische Darstellungen zeigen, dass Donnerstag Mittag (12-14 Uhr) sowie Montag und Mittwoch Nachmittag (14-16 Uhr) gut funktioniert.
Bei allen Erkenntnissen ist jedoch zu beachten, dass der Datensatz sehr klein sowie lückenhaft ist. Um aussagekräftige Ergebnisse zu erhalten, müsste der Datensatz viel umfangreicher sein.