Show the code
# Datenbereinigung
library(tidyverse)
library(janitor)
survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))# Datenbereinigung
library(tidyverse)
library(janitor)
survey_raw <- readr::read_rds(here::here("data", "processed", "survey_with_labels.rds"))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")
)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.
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
#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
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
testthat::expect_equal(survey %>% filter(role_respondent == "error") %>% nrow(), 0)# TODO: Analyse der Missings (wie weit sind Fragebögen ausgefuellt? schmeißen wir sie alle weg?)survey %>% count(role_respondent) role_respondent n
1 ehrenamtlich 62
2 hauptamlich 88
3 <NA> 34
# 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()
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)
Gibt es signifikante Zusammenhänge zwischen - G1Q04 Anzahl Hauptamtlicher - G1Q05 Anzahl Ehrenamtlicher - G5Q04 Bereich (Sport/ Bidung etc) Und allen anderen Fragen.
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()
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
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 -
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() 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:
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?
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)