238 lines
7.0 KiB
Plaintext
238 lines
7.0 KiB
Plaintext
---
|
|
title: "Local-IT Bedarfsanalyse"
|
|
format:
|
|
html:
|
|
code-fold: true
|
|
code-summary: "Show the code"
|
|
---
|
|
# Analyse
|
|
<details>
|
|
<summary>Datenbereinigung</summary>
|
|
```{r import data, message=FALSE}
|
|
# Datenbereinigung
|
|
library(tidyverse)
|
|
library(janitor)
|
|
survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))
|
|
```
|
|
|
|
```{r wrangle data}
|
|
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.
|
|
|
|
```{r explore G1Q06_SQ001 filter, inlcude = FALSE}
|
|
survey_raw %>% tabyl(G1Q04, G1Q06_SQ001)
|
|
#TODO wurde der Filter auch für G1Q05 gesetzt? Sieht nicht so aus ()
|
|
survey_raw %>% tabyl(G1Q05, G1Q06_SQ002)
|
|
```
|
|
|
|
36 Personen haben angegeben, dass sich keine Hauptamtlichen in der Org. befinden -> die wollen wir recodieren
|
|
|
|
```{r}
|
|
survey %>% tabyl(G1Q06_SQ001, G1Q06_SQ002)
|
|
```
|
|
|
|
```{r}
|
|
testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0)
|
|
```
|
|
</details>
|
|
|
|
# Stichprobe
|
|
```{r}
|
|
# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?)
|
|
```
|
|
|
|
## Rolle der befragten Personen
|
|
```{r}
|
|
survey %>% count(role_respondent)
|
|
```
|
|
|
|
|
|
## Anzahl Hauptamtlicher und Ehrenamtlicher
|
|
```{r}
|
|
# 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()
|
|
```
|
|
|
|
|
|
```{r}
|
|
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.
|
|
|
|
|
|
```{r}
|
|
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()
|
|
```
|
|
|
|
```{r}
|
|
ggplot(tmp) +
|
|
aes(x = G1Q05, y = G1Q04, size = n) +
|
|
geom_point() +
|
|
labs(y = "Anzahl Hauptamtlicher", x = "Anzahl Ehrenamtlicher") +
|
|
scale_fill_viridis_c()+
|
|
theme_minimal()
|
|
|
|
|
|
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
|
|
```
|
|
|
|
|
|
```{r}
|
|
survey_raw %>%
|
|
select(G4Q02, G1Q04) %>%
|
|
drop_na() %>%
|
|
janitor::tabyl(G4Q02, G1Q04) %>%
|
|
janitor::adorn_totals() %>%
|
|
janitor::adorn_percentages() %>%
|
|
janitor::adorn_pct_formatting()
|
|
```
|
|
|
|
|
|
Erklärungsansaetze für Ergebnisse:
|
|
- Sampling Bias in der Umfrage
|
|
-
|
|
|
|
## Anzahl ehrenamtliche
|
|
```{r}
|
|
|
|
survey_raw %>%
|
|
count(G4Q02) %>%
|
|
drop_na() %>%
|
|
ggplot(aes(x = G4Q02, y = n))+
|
|
geom_col()+
|
|
coord_flip()
|
|
|
|
|
|
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()
|
|
|
|
|
|
survey_raw %>%
|
|
select(G4Q02, G1Q05) %>%
|
|
drop_na() %>%
|
|
janitor::tabyl(G4Q02, G1Q05) %>%
|
|
janitor::adorn_totals() %>%
|
|
janitor::adorn_percentages(denominator = "col") %>%
|
|
janitor::adorn_pct_formatting()
|
|
```
|
|
|
|
Chi-Square Test, um zu sehen, ob zw. den zwei kategorialen Variablen ein signifikanter Zusammenhang besteht:
|
|
|
|
```{r}
|
|
chisq.test(survey$G4Q02, survey$G1Q05)
|
|
```
|
|
|
|
Werden Cluster sichtbar?
|
|
|
|
|
|
|
|
2. Für welche Organisationen ist SKA interessant?
|
|
Hypothesen:
|
|
1. 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
|
|
2. 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)
|