Local-IT Bedarfsanalyse

Analyse

Datenbereinigung
Show the code
# Datenbereinigung 
library(tidyverse)
library(janitor)
survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
Show the code
survey <- survey_raw %>% 
  mutate(
    # G1Q06_SQ001 = ehrenamtlich engagiert fix missings
    G1Q06_SQ001 = case_when(is.na(G1Q06_SQ001) & G1Q04 == "Keine" ~ "Ja",
                            TRUE ~ as.character(G1Q06_SQ001)
                            ),
    # G1Q06_SQ002 = hauptamtlich engagiert fix missings
    G1Q06_SQ002 = case_when(is.na(G1Q06_SQ002) & G1Q04 == "Keine" ~ "Nicht gewählt",
                            TRUE ~ as.character(G1Q06_SQ002)
                            ),
    G1Q06_SQ001 = as_factor(G1Q06_SQ001),
    G1Q06_SQ002 = as_factor(G1Q06_SQ002),
    # generate one variable that combines the multiple choice information about the role of the respondent 
    role_respondent = case_when(
      # decision: Teilnehmende die beide Rollen angegeben haben werden zu hauptamtlich gezählt (es sind nur 6 und eine binary Variable ist besser geeignet für Gruppenvergleiche)
      G1Q06_SQ001 == "Ja" & G1Q06_SQ002 == "Ja" ~ "ehrenamtlich", 
      G1Q06_SQ001 == "Ja" ~ "ehrenamtlich",
      G1Q06_SQ002 == "Ja" ~ "hauptamlich",
      # decision: Teilnehmende die keine der Kategorien angegeben haben werden zu NA anstatt eine vierte Kategorie "keine" einzuführen, da das wahrcheinlich nicht von Interesse ist.
      G1Q06_SQ001 == "Nicht gewählt" & G1Q06_SQ002 == "Nicht gewählt" ~ NA_character_,
      is.na(G1Q06_SQ001) & is.na(G1Q06_SQ002) ~ NA_character_,
      TRUE ~ "error")
    )

G1Q06_SQ001 filter

Wir sind daran interessiert zu wissen, ob die Teilnehmenden selbst ehrenamtlich, hauptamtlich oder in beiden Positionen arbeiten. Diese Information findet sich in der Frage G1Q06: “Welche Rolle(n) haben sie in der Organisation. Die Filterführung des Fragebogens hat allerdings dazu geführt, dass Personen die angegeben haben, dass in ihrer Organisation keine hauptamtlichen Mitarbeiten vorhanden, sind die G1Q06 Frage nicht bekommen haben, da schon klar ist, dass sie dann ehrenamtlich sind. Dadurch haben sie momentan Missings auf den Variablen die zur G1Q06 Frage gehören. Die logische Verbindung zwischen G1Q04 und G1Q06 wollen wir also im Nachhinein recoden.

Show the code
survey_raw %>% tabyl(G1Q04, G1Q06_SQ001)
 G1Q04 Ja Nicht gewählt NA_
 Keine  0             0  36
   < 5 10            22   0
  5-10  9            16   0
 11-50  2            29   0
  > 50  5            21   0
  <NA>  0             8  26
Show the code
#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus ()
survey_raw %>% tabyl(G1Q05, G1Q06_SQ002)
   G1Q05 Ja Nicht gewählt NA_
   Keine  7             0   1
     < 5  9             0   5
  5 - 10 10             8  15
 11 - 50 26             4  10
    > 50 41             8   5
    <NA>  1             8  26

36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren

Show the code
survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002)
   G1Q06_SQ001 Ja Nicht gewählt NA_
            Ja  6            56   0
 Nicht gewählt 88             8   0
          <NA>  0             0  26
Show the code
testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0)

Stichprobe

Show the code
# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?)

Rolle der befragten Personen

Show the code
survey %>% count(role_respondent)
  role_respondent  n
1    ehrenamtlich 62
2     hauptamlich 88
3            <NA> 34

Anzahl Hauptamtlicher und Ehrenamtlicher

Show the code
# facet wrap plot: beide Fragen haben die gleiche Skala
tmp_long <- survey %>% 
  select(id, G1Q05, G1Q04) %>% 
  pivot_longer(-id, names_to = "var", values_to = "value")

tmp_long %>% 
  ggplot(aes(x = value)) +
  geom_bar()+
  facet_wrap(~var)+
  labs(caption = "G1Q04 Anzahl Hauptamtlicher\nG1Q05 Anzahl Ehrenamtlicher", 
       title = "Anzahl Hauptamtlicher (G1Q04) \n und Anzahl Ehrenamtlicher (G1Q05)")+
  coord_flip()

Show the code
create_dot_plot <- function(data, x_var, y_var) {
  tmp <- data %>% 
    count({{ x_var }}, {{ y_var }}) %>% 
    drop_na({{ x_var }}, {{ y_var }})
  
  x_var_pos <- which(attributes(survey)$names == enexpr(x_var))
  x_var_lab <- attributes(survey)$variable.labels[x_var_pos] %>% 
    str_replace(pattern = "\\?.+$", replacement = "?") 

  y_var_pos <- which(attributes(survey)$names == enexpr(y_var))
  y_var_lab <- attributes(survey)$variable.labels[y_var_pos] %>% 
    str_replace(pattern = "\\?.+$", replacement = "?") 
  
  # plot
  ggplot(tmp) +
    aes(x = {{ x_var }},
        y = {{ y_var }},
        size = n,
        label = n) +
    geom_point() +
    labs(caption = glue::glue("{enexpr(x_var)}: {x_var_lab} \n {enexpr(y_var)}: {y_var_lab}")) +
    scale_fill_viridis_c() +
    theme_minimal()
}

create_dot_plot(survey, G1Q04, G1Q05)

Hypothesen

  1. Grundsätzlich

Gibt es signifikante Zusammenhänge zwischen - G1Q04 Anzahl Hauptamtlicher - G1Q05 Anzahl Ehrenamtlicher - G5Q04 Bereich (Sport/ Bidung etc) Und allen anderen Fragen.

Show the code
tmp <- survey_raw %>% 
  count(G1Q05, G1Q04) %>% 
  drop_na(G1Q05, G1Q04)

ggplot(tmp) +
 aes(x = G1Q05, y = G1Q04, fill = n) +
 geom_tile(size = 1.2) +
labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
  scale_fill_viridis_c()+
 theme_minimal()

Show the code
ggplot(tmp) +
 aes(x = G1Q05, y = G1Q04, size = n) +
 geom_point() +
labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") + 
  scale_fill_viridis_c()+
 theme_minimal()

Show the code
p <- survey_raw %>%
  count(G4Q02, G1Q04) %>%
  drop_na() %>% 
  ggplot() +
  aes(x = G4Q02, y = G1Q04, size = n) +
  geom_point() +
  labs(y = "Anzahl Hauptamtlicher", x = "Nutzung") +
  coord_flip()+
  theme_light() 
p

Show the code
survey_raw %>% 
  select(G4Q02, G1Q04) %>% 
  drop_na() %>% 
  janitor::tabyl(G4Q02, G1Q04) %>% 
  janitor::adorn_totals() %>% 
  janitor::adorn_percentages() %>% 
  janitor::adorn_pct_formatting()
                                               G4Q02 Keine   < 5  5-10 11-50
          nutzen wir in unserer Organisation aktuell 40.5% 21.4% 11.9% 11.9%
              haben wir mal genutzt oder ausprobiert 25.0% 18.8% 18.8% 31.2%
            nutzen wir nicht in unserer Organisation 15.8% 28.9% 21.1% 18.4%
 ich weiß nicht ob wir sie nutzen oder genutzt haben  6.2% 18.8%  6.2% 37.5%
                         ich kenne den Begriff nicht  0.0% 33.3% 33.3% 33.3%
                                               Total 24.3% 23.5% 15.7% 20.9%
  > 50
 14.3%
  6.2%
 15.8%
 31.2%
  0.0%
 15.7%

Erklärungsansaetze für Ergebnisse: - Sampling Bias in der Umfrage -

Anzahl ehrenamtliche

Show the code
survey_raw %>%
  count(G4Q02) %>%
  drop_na() %>% 
  ggplot(aes(x = G4Q02, y = n))+
  geom_col()+
  coord_flip()

Show the code
survey_raw %>%
  count(G4Q02, G1Q05) %>%
  drop_na() %>% 
  ggplot() +
  aes(x = G4Q02, y = G1Q05, size = n) +
  geom_point() +
  labs(y = "Anzahl Ehrenamtlicher", x = "Nutzung") +
  coord_flip()+
  theme_minimal()

Show the code
survey_raw %>% 
  select(G4Q02, G1Q05) %>% 
  drop_na() %>% 
  janitor::tabyl(G4Q02, G1Q05) %>% 
  janitor::adorn_totals() %>% 
  janitor::adorn_percentages(denominator = "col") %>% 
  janitor::adorn_pct_formatting()
                                               G4Q02  Keine    < 5 5 - 10
          nutzen wir in unserer Organisation aktuell  33.3%  45.5%  37.0%
              haben wir mal genutzt oder ausprobiert   0.0%   0.0%  11.1%
            nutzen wir nicht in unserer Organisation  50.0%  36.4%  44.4%
 ich weiß nicht ob wir sie nutzen oder genutzt haben  16.7%  18.2%   7.4%
                         ich kenne den Begriff nicht   0.0%   0.0%   0.0%
                                               Total 100.0% 100.0% 100.0%
 11 - 50   > 50
   40.7%  30.2%
   22.2%  16.3%
   25.9%  27.9%
    7.4%  20.9%
    3.7%   4.7%
  100.0% 100.0%

Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht:

Show the code
chisq.test(survey$G4Q02, survey$G1Q05)
Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
incorrect

    Pearson's Chi-squared test

data:  survey$G4Q02 and survey$G1Q05
X-squared = 12.462, df = 16, p-value = 0.7116

Werden Cluster sichtbar?

  1. Für welche Organisationen ist SKA interessant? Hypothesen:
  2. Große Organisationen mit vielen Hauptamtlichen und eigenen IT Abteilungen haben kein Interessen an Open Source Lösungen sondern entscheiden sich für bekannte, teure propritäre Tools
  3. Organisationen mit eigenen IT Abteilungen haben Wissen und Kompetenz selbst Open Source Lösungen aufzusetzen (also Zugang) und nutzen sie somit häufiger.

G2Q02 Wer kümmert sich um eure digitale Infrastruktur G1Q04 Wie viele hauptamtlich Mitarbeitende hat deine Organisation? In Korrelation zu Bisherige Erfahrung mit Open Source (G4Q02) oder der Wichtigkeit bestimmter Eigenschaften des Tools (G03Q03 und G03Q03b)