275 lines
10 KiB
R
275 lines
10 KiB
R
library(gtools)
|
|
library(purrr)
|
|
|
|
# Global variables
|
|
data = read.csv2("./results.csv", dec=".")
|
|
preparation.tight_barplot = function () par(mar=c(3,3,1,1)+.1)
|
|
preparation.tight_boxplot = function () par(mar=c(3,1,1,1)+.1)
|
|
|
|
# Hilfsfunktionen
|
|
draw_boxplot <- function(data, file_name, preparation, width=600, height=350, names=NA) {
|
|
png(
|
|
filename=paste("results/", file_name, ".png", sep=""),
|
|
width=width, height=height, units="px"
|
|
)
|
|
|
|
if (!missing(preparation)) {
|
|
preparation()
|
|
}
|
|
|
|
boxplot(data, horizontal=TRUE, names=names, las=1)
|
|
dev.off()
|
|
}
|
|
|
|
draw_barplot <- function(data, file_name, preparation, xlim, width=600, height=350, horizontal=FALSE, names.arg) {
|
|
png(
|
|
filename=paste("results/", file_name, ".png", sep=""),
|
|
width=width, height=height, units="px"
|
|
)
|
|
|
|
if (!missing(preparation)) {
|
|
preparation()
|
|
}
|
|
|
|
if (missing(xlim)) {
|
|
if (missing(names.arg)) {
|
|
barplot(data, horiz=horizontal,las=1)
|
|
} else {
|
|
barplot(data, horiz=horizontal,las=1, names.arg=names.arg)
|
|
}
|
|
} else {
|
|
if (missing(names.arg)) {
|
|
barplot(data, horiz=horizontal,las=1, xlim=xlim)
|
|
} else {
|
|
barplot(data, horiz=horizontal,las=1, xlim=xlim, names.arg=names.arg)
|
|
}
|
|
}
|
|
|
|
dev.off()
|
|
}
|
|
|
|
# Allgemeine Angaben
|
|
|
|
## Gesamtzahl der Teilnehmer*innen
|
|
write(nrow(data), file = "results/gesamtzahl.tex", append = FALSE)
|
|
|
|
## Bachelor-Erstis
|
|
erstis = nrow(subset(data,
|
|
fachsemester == 1 & (
|
|
studiengang == "B. Sc. Wirtschaftsinformatik" |
|
|
studiengang == "B. Sc. Angewandte Informatik" |
|
|
studiengang == "B. Sc. Informatik: Software Systems Science" |
|
|
studiengang == "B. Sc. International Information Systems Management"
|
|
)
|
|
))
|
|
write(erstis, file="results/erstis-bachelor.tex", append = FALSE)
|
|
|
|
## Studiengänge
|
|
studiengaenge.abs = table(data$studiengang, useNA="no", exclude=c(""))
|
|
studiengaenge.rel = table(data$studiengang, exclude=c(""))/nrow(data)
|
|
studiengaenge.preparation = function () par(mar=c(3,24,1,2)+.1)
|
|
|
|
draw_barplot(studiengaenge.abs, "studiengaenge", preparation=studiengaenge.preparation, horiz=TRUE, names.arg = rownames(studiengaenge.abs))
|
|
|
|
## Fachsemester
|
|
fachsemester = ceiling(data$fachsemester)
|
|
preparation = function () par(mar=c(3,3,1,1)+.1)
|
|
draw_barplot(table(fachsemester), "fachsemester", preparation=preparation.tight_barplot, width=700, height=300)
|
|
draw_boxplot(fachsemester, "fachsemester-boxplot", width=700, height=150, preparation=preparation.tight_boxplot)
|
|
|
|
## Unisemester
|
|
unisemester = nrow(subset(data, unisemester=="Ja"))
|
|
write(unisemester, file = "results/erstes_unisemester.tex", append = FALSE)
|
|
|
|
## Vollzeit vs. Teilzeit
|
|
data.vz = subset(data, vollzeit=="Ja")
|
|
data.tz = subset(data, vollzeit=="Nein")
|
|
data.vz.table = table(data$vollzeit)
|
|
|
|
data.vz.preparation = function () par(mar=c(3, 8, 1, 3))
|
|
|
|
draw_barplot(data.vz.table, "vollzeit-vs-teilzeit", width=600, height=180, names = c("Ja", "Keine Antwort", "Nein"), preparation=data.vz.preparation, horizontal=TRUE)
|
|
|
|
## ECTS
|
|
|
|
# data.vz.mean_ects = mean(subset(data.vz, ects != "NA")$ects)
|
|
# data.tz.mean_ects = mean(subset(data.tz, ects != "NA")$ects)
|
|
|
|
draw_boxplot(data.vz$ects, "ects-boxplot-vollzeit", width=700, height=150, preparation=preparation.tight_boxplot)
|
|
draw_boxplot(data.tz$ects, "ects-boxplot-teilzeit", width=700, height=150, preparation=preparation.tight_boxplot)
|
|
draw_barplot(table(round(data.vz$ects)), "ects-barchart-vollzeit", width=700, height=300, preparation=preparation.tight_barplot)
|
|
draw_barplot(table(round(data.tz$ects)), "ects-barchart-teilzeit", width=700, height=200, preparation=preparation.tight_barplot)
|
|
|
|
# Persönliche Belastung
|
|
|
|
## Arbeitsbelastung
|
|
draw_barplot(table(data$arbeitsbelastung), "arbeitsbelastung-barchart", width=400, height=300)
|
|
draw_boxplot(data$arbeitsbelastung, "arbeitsbelastung-boxplot", width=400, height=300)
|
|
|
|
## Gründe
|
|
mehr_ects = nrow(subset(data, gruende.SQ001.=="Ja"))
|
|
weniger_ects = nrow(subset(data, gruende.SQ005.=="Ja"))
|
|
mehr_nebenberuf = nrow(subset(data, gruende.SQ002.=="Ja"))
|
|
weniger_nebenberuf = nrow(subset(data, gruende.SQ006.=="Ja"))
|
|
mehr_anforderungen = nrow(subset(data, gruende.SQ004.=="Ja"))
|
|
weniger_anforderungen = nrow(subset(data, gruende.SQ007.=="Ja"))
|
|
mehr_technik = nrow(subset(data, gruende.SQ003.=="Ja"))
|
|
weniger_pendeln = nrow(subset(data, gruende.SQ008.=="Ja"))
|
|
anderes = nrow(subset(data, gruende.other.!=""))
|
|
|
|
gruende.werte = c(mehr_ects, mehr_nebenberuf, mehr_anforderungen, mehr_technik, weniger_ects, weniger_nebenberuf, weniger_anforderungen, weniger_pendeln, anderes)
|
|
|
|
gruende.label = c(
|
|
"höhere ECTS-Anzahl",
|
|
"höhere Belastung im Nebenberuf",
|
|
"erhöhte Anforderungen seitens der Modulverantwortlichen",
|
|
"techn. Zusatzaufwand f. Teilnahme a. d. Lehrveranstaltungen",
|
|
"geringere ECTS-Anzahl",
|
|
"geringere Belastung im Nebenberuf",
|
|
"geringere Anforderungen seitens der Modulverantwortlichen",
|
|
"Pendelwege entfallen",
|
|
"Sonstiges"
|
|
)
|
|
|
|
gruende.tabelle = array(gruende.werte, dimnames=list(gruende.label))
|
|
|
|
gruende.preparation = function ()
|
|
par(mar=c(3,24,1,2)+.1)
|
|
|
|
draw_barplot(gruende.werte, "arbeitsbelastung-gruende-barchart", horizontal=TRUE, gruende.preparation, names.arg=gruende.label)
|
|
|
|
## Aussagen
|
|
|
|
a1 <- which(colnames(data)=="aussagen.SQ001." )
|
|
a2 <- which(colnames(data)=="aussagen.SQ008." )
|
|
aussagen = data[a1:a2]
|
|
|
|
draw_boxplot(aussagen, "aussagen-boxplots",
|
|
names=c(
|
|
"A",# "Ich fühle mich durch das Studieren von zu Hause aus gestresst.",
|
|
"B",# "Ich kann meinen Studienalltag weitestgehend flexibel gestalten.",
|
|
"C",# "Ohne feste Termine fällt es mir schwer, über längere Zeiträume fokussiert zu arbeiten.",
|
|
"D",# "Der fehlende Kontakt zu Kommiliton*innen senkt meine Motivation, mir Vorlesungen anzuschauen.",
|
|
"E",# "Lerngruppen zu bilden ist in diesem Semester leichter als zuvor.",
|
|
"F",# "Ich empfinde die Situation im Homeoffice als beengend.",
|
|
"G",# "Mit meinem bisherigen Lernfortschritt seit Semesterbeginn bin ich insgesamt zufrieden.",
|
|
"H" # "Meine schlechte Internetverbindung erschwert das Studieren."
|
|
)
|
|
)
|
|
|
|
for (column in 1:8) {
|
|
draw_boxplot(aussagen[column], paste("aussagen-boxplot-", chr(64 + column), sep=""), width=400, height=300)
|
|
|
|
draw_barplot(table(aussagen[column]), paste("aussagen-barchart-", chr(64 + column), sep=""), names.arg=c(1, 2, 3, 4, 5), width=400, height=300)
|
|
}
|
|
|
|
# Modulangebot
|
|
|
|
## Ausfall
|
|
modulausfall.betroffene = subset(data, ausfall=="Ja")
|
|
write(nrow(modulausfall.betroffene), file="results/betroffene-modulwegfall.tex", append = FALSE)
|
|
|
|
modulausfall.studiendauer.ja = subset(modulausfall.betroffene, studiendauer=="Ja, meine Studiendauer wird voraussichtlich länger als geplant sein.")
|
|
write(nrow(modulausfall.studiendauer.ja), file="results/betroffene-studiendauer.tex", append = FALSE)
|
|
|
|
modulausfall.studiendauer.nein = subset(modulausfall.betroffene, studiendauer=="Nein, das trifft auf mich nicht zu.")
|
|
write(nrow(modulausfall.studiendauer.nein), file="results/betroffene-studiendauer-nein.tex", append = FALSE)
|
|
|
|
modulausfall.wi = nrow(subset(modulausfall.betroffene, studiengang=="M. Sc. Wirtschaftsinformatik"
|
|
| studiengang=="B. Sc. International Information Systems Management"
|
|
| studiengang=="B. Sc. Wirtschaftsinformatik"
|
|
| studiengang=="M. Sc. International Information Systems Management"))
|
|
|
|
# Unterrichtsformen und Technologien
|
|
|
|
## Lehrmethoden
|
|
lehrmethoden.audiovl = table(data$lehrmethoden.SQ001.)["Ja"]
|
|
lehrmethoden.videovl = table(data$lehrmethoden.SQ002.)["Ja"]
|
|
lehrmethoden.podcast = table(data$lehrmethoden.SQ003.)["Ja"]
|
|
lehrmethoden.textchat = table(data$lehrmethoden.SQ004.)["Ja"]
|
|
lehrmethoden.videochat = table(data$lehrmethoden.SQ005.)["Ja"]
|
|
|
|
lehrmethoden.table = array(c(
|
|
lehrmethoden.audiovl,
|
|
lehrmethoden.videovl,
|
|
lehrmethoden.podcast,
|
|
lehrmethoden.textchat,
|
|
lehrmethoden.videochat
|
|
), dimnames=list(c(
|
|
"Audio-Vorlesung",
|
|
"Video-Vorlesung",
|
|
"Podcast (nur Audio)",
|
|
"Textchat",
|
|
"Interaktiver Audio-/Videochat"
|
|
)))
|
|
|
|
lehrmethoden.preparation = function () par(mar=c(3, 14, 1, 3)+.1)
|
|
draw_barplot(lehrmethoden.table, "lehrmethoden", horizontal=TRUE, preparation=lehrmethoden.preparation, height=200)
|
|
|
|
## Technologien
|
|
technologien.labels = c(
|
|
"Microsoft Teams",
|
|
"Panopto / sonstiger Videoupload",
|
|
"Zoom",
|
|
"VC-Foren",
|
|
"Big Blue Button",
|
|
"Rocket.Chat",
|
|
"DFNconf",
|
|
"Skype",
|
|
"Sonstige"
|
|
)
|
|
technologien.table = array(c(0, 0, 0, 0, 0, 0, 0, 0, 0), dimnames=list(technologien.labels))
|
|
|
|
technologien.preparation=function () par(mar=c(3,14,1,3)+.1)
|
|
for (x in c(1:9)) {
|
|
t = table(data[paste("technologien.", x, ".", sep="")], exclude = c(""))
|
|
draw_barplot(sort(t),
|
|
paste("technologien-", x, sep=""),
|
|
horizontal=TRUE,
|
|
preparation=technologien.preparation,
|
|
height=30*nrow(t)+50)
|
|
|
|
for (label in technologien.labels) {
|
|
if (label %in% names(t)) {
|
|
technologien.table[label] = technologien.table[label] + t[label]
|
|
}
|
|
}
|
|
}
|
|
|
|
draw_barplot(sort(technologien.table),
|
|
"technologien-gesamt",
|
|
horizontal=TRUE,
|
|
preparation=technologien.preparation)
|
|
|
|
## Zoombesorgnis
|
|
zoom_users = subset(data,
|
|
(technologien.1. == "Zoom"
|
|
| technologien.2. == "Zoom" | technologien.3. == "Zoom"
|
|
| technologien.4. == "Zoom" | technologien.5. == "Zoom"
|
|
| technologien.6. == "Zoom" | technologien.7. == "Zoom"
|
|
| technologien.8. == "Zoom" | technologien.9. == "Zoom"))
|
|
|
|
zoom_users.total = nrow(zoom_users)
|
|
write(zoom_users.total, file = "results/zoom-users.tex", append = FALSE)
|
|
|
|
zoom_users.worried = nrow(subset(data, zoombesorgnis == "Ja."))
|
|
write(zoom_users.worried, file = "results/zoom-users-worried.tex", append = FALSE)
|
|
|
|
zoom_users.not_worried = nrow(subset(data, zoombesorgnis == "Nein."))
|
|
write(zoom_users.not_worried, file = "results/zoom-users-not-worried.tex", append = FALSE)
|
|
|
|
|
|
## Zoomteilnahme
|
|
zoom_users.criteria_satisfied = nrow(subset(data, zoomteilnahme == "Die Lehrveranstaltungen erfüllen überwiegend eines oder beide der Kriterien."))
|
|
write(zoom_users.criteria_satisfied, file = "results/zoom-users-criteria-satisfied.tex", append = FALSE)
|
|
|
|
zoom_users.criteria_not_satisfied = nrow(subset(data, zoomteilnahme == "Die Lehrveranstaltungen erfüllen überwiegend keines der Kriterien."))
|
|
write(zoom_users.criteria_not_satisfied, file = "results/zoom-users-criteria-not-satisfied.tex", append = FALSE)
|
|
|
|
|
|
|
|
# barplot(studiengaenge.rel, horiz=TRUE, legend=c("B. Sc. WI", "B. Sc. AI", …))
|
|
# pie(studiengaenge.rel, horiz=TRUE, legend=c("B. Sc. WI", "B. Sc. AI", …))
|
|
# boxplot(data$ects~data$vollzeit)
|
|
|