Analyse der Attribute, welche den SportlerInnen in den Medien zugeschrieben werden —–

Die untenstehende Wörter wurden auf Basis einer österreichischen Studie (https://www.exploristas.at/die-studie/) ausgesucht:

\(\bullet\) erfolgreich
\(\bullet\) ehrgeizig
\(\bullet\) zielstrebig
\(\bullet\) selbstbewusst
\(\bullet\) sympathisch
\(\bullet\) fair
\(\bullet\) bescheiden
\(\bullet\) dankbar
\(\bullet\) aggressiv
\(\bullet\) unfair
\(\bullet\) naiv
\(\bullet\) dumm
\(\bullet\) faul
\(\bullet\) antriebslos

Preliminaries —–

Daten —–

Für diese Analyse wurde nicht der ursprüngliche Datensatz gebraucht, da öfters innerhalb der Artikel andere SkifahrerInnen erwähnt werden und es somit unmöglich macht ein Artikel präzis einem Geschlecht zuzuordnen. Um die Analyse präziser zu machen, verwende ich für diese Studie die Resultate der KWIC-Filterung. Das heisst, dass ich anhand der Namen der SkimeisterInnen die 15 Wörter vorher und die 15 Wörter nacher zusammengefügt habe und einem Geschlecht zugeordnet habe.

#import data
kwic_results_all <- read.csv("Inputs/kwic_results_all3.csv")
kwic_results_f <- read.csv("Inputs/kwic_results_f3.csv")
kwic_results_m <- read.csv("Inputs/kwic_results_m3.csv")

#data frame und select
kwic_results <- kwic_results_all[c("sex", "text")]
kwic_results_f.analysis <- as.data.frame(kwic_results_f)
kwic_results_frauen <- kwic_results_f.analysis[c("sex", "text")]
kwic_results_m.analysis <- as.data.frame(kwic_results_m)
kwic_results_manner <- kwic_results_m.analysis[c("sex", "text")]

Korpus, Tokens, Attribute, DFM —–

#Textkorpus erstellen
korpus_attribute <- corpus(kwic_results, text_field = "text")
korpus_attribute_frauen <- corpus(kwic_results_frauen, text_field = "text")
korpus_attribute_manner <- corpus(kwic_results_manner, text_field = "text")

#Korpus tokenisieren
toks_attribute <- tokens(korpus_attribute, remove_punct=T, remove_numbers=T, remove_symbols=T, remove_url=T, remove_separators=T)
toks_attribute_frauen <- tokens(korpus_attribute_frauen, remove_punct=T, remove_numbers=T, remove_symbols=T, remove_url=T, remove_separators=T)
toks_attribute_manner <- tokens(korpus_attribute_manner, remove_punct=T, remove_numbers=T, remove_symbols=T, remove_url=T, remove_separators=T)

#compound words 
words <- list(
  erfolgreich = c("erfolgreich", "erfolgreiche", "erfolgreicher", "erfolgreichen"),
  ehrgeizig = c("ehrgeizig", "ehrgeizige", "ehrgeiziger", "ehrgeizigen"),
  zielstrebig = c("zielstrebig", "zielstrebige", "zielstrebiger", "zielstrebigen"),
  selbstbewusst = c("selbstbewusst", "selbstbewusste", "selbstbewusster", "selbstbewussten"),
  sympathisch = c("sympathisch", "sympathische", "sympathischer", "sympathischen"),
  fair = c("fair", "faire", "fairer", "fairen"),
  bescheiden = c("bescheiden", "bescheidene", "bescheidener", "bescheidenen"),
  dankbar = c("dankbar", "dankbare", "dankbarer", "dankbaren"),
  aggressiv = c("aggressiv", "aggressive", "aggressiver", "aggressiven"),
  unfair = c("unfair", "unfaire", "unfairer", "unfairen"),
  naiv = c("naiv", "naive", "naiver", "naiven"),
  dumm = c("dumm", "dumme", "dummer", "dummen"),
  faul = c("faul", "faule", "fauler", "faulen"),
  antriebslos = c("antriebslos", "antriebslose", "antriebsloser", "antriebslosen"),
  kriminell = c("kriminell", "kriminelle", "krimineller", "kriminellen")
  
)

for (word in names(words)) {
  comp <- rep(word, length(words[[word]]))
  toks_attribute <- tokens_replace(toks_attribute, words[[word]], comp, valuetype = "fixed")
  toks_attribute_manner <- tokens_replace(toks_attribute_manner, words[[word]], comp, valuetype = "fixed")
  toks_attribute_frauen <- tokens_replace(toks_attribute_frauen, words[[word]], comp, valuetype = "fixed")
}

#document-feature matrix (DFM)
dfm <- dfm(toks_attribute)
dfm.f <- dfm(toks_attribute_frauen)
dfm.m <- dfm(toks_attribute_manner)

Analyse der Attribute nach Geschlecht —–

#count the words
##START LOOP AREA
df_haufigkeiten <- data.frame(name=character(), occ_total = numeric(), 
                      occ_frauen = numeric(), occ_manner = numeric())
if(length(df_haufigkeiten$name)<1) {
  for (i in 1:length(words)) {
      word_to_count <- words[[i]][[1]]
      word_counts <- colSums(dfm[, word_to_count])
      word_counts.f <- colSums(dfm.f[, word_to_count])
      word_counts.m <- colSums(dfm.m[, word_to_count])
      df_haufigkeiten <- df_haufigkeiten %>%
        add_row(name=word_to_count, occ_total = word_counts, 
                      occ_frauen = word_counts.f, occ_manner = word_counts.m)
  }
}


View(df_haufigkeiten)
df_haufigkeiten$pct.f <- round((df_haufigkeiten$occ_frauen / sum(df_haufigkeiten$occ_frauen) * 100),3)
df_haufigkeiten$pct.m <- round((df_haufigkeiten$occ_manner / sum(df_haufigkeiten$occ_manner) * 100),3)
##END LOOP AREA

#write.csv(df_haufigkeiten,"./Inputs/haufigkeiten.csv", row.names = FALSE)
df_haufigkeiten <- read.csv("Inputs/haufigkeiten.csv")

Plot —–

df_haufigkeiten_long <- melt(df_haufigkeiten, id.vars = c("name"),
                             measure.vars = c('pct.f', 'pct.m'),
                             variable.name = "Geschlecht",
                             value.name = "percent")

df_haufigkeiten_long <- df_haufigkeiten_long %>%
  mutate(percent_round = round(percent))

gender_colors <- c("pct.f" = "#008081", "pct.m" = "#FD7601")

plot_attribute <- df_haufigkeiten_long %>%
  mutate(across(c("percent"), round, 0)) %>%
  mutate(name = reorder(name, desc(percent))) %>%
  ggplot(aes(x = name, y = percent, fill = Geschlecht)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = paste0(percent_round, "%")),
            vjust = 0.3,
            size = 4,
            angle = 90,
            hjust = -0.2,
            position = position_dodge(width = 0.9),
            alpha = 0.7) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 0.7),
        axis.title = element_text(size = 14, family = "Futura Bk BT"),
        axis.text = element_text(size = 12, family = "Futura Bk BT"),
        text = element_text(size = 12, family = "Futura Bk BT"),
        legend.title = element_blank(),
        legend.text = element_text(size = 12),
        legend.position = c(0.8, 0.9), 
        legend.justification = c(0.5, 1),  
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(color = "gray70", size = 0.5, linetype = "dashed"),
        panel.grid.major.x = element_blank(),
        plot.title = element_text(hjust = 0, size = 18, face = "bold"),
        plot.subtitle = element_text(hjust = 0, size = 16),
        axis.title.y = element_text(margin = margin(r = 15))) +
  scale_fill_manual(values = gender_colors) +
  scale_y_continuous(labels = function(x) paste0(x , "%")) +
  labs(title = "Erfolgreich wird am meisten benutzt um SkimeisterInnen zu beschreiben",
       subtitle = "Attribute, welche SportlerInnen in Medien zugeschrieben werden",
       x = "Attribute",
       y = "Auftreten im Verhältnis zu anderen Attributen",
       caption = "Daten: SWISSDOX@LiRI") +
  scale_fill_manual(values = gender_colors,
                    labels = c("pct.m" = "Skifahrer", "pct.f" = "Skifahrerinnen")) +
  geom_hline(yintercept = 60, linetype = "dashed", color = "gray70")

plot_attribute