Aufgabe 1: Verlauf der Besuchszahlen nach Monat

1a)

Nachdem wir die Projektstruktur aufgebaut haben und die Daten vorbereitet (inkl. aggregiert) sind, machen wir uns an die deskriptive Analyse. Dies macht immer Sinn. Bevor mach sich an die schliessende Statistik macht, muss man ein “Gefühl” für die Daten bekommen. Dies funktioniert am einfachsten mit explorativen Analysen.

Wir interessieren uns in den Analysen für 5 Zeitabschnitte:

  1. von Anfang Untersuchungsperiode bis vor dem 1. Lockdown (pre)
  2. Lockdown 1
  3. Zwischen beiden Lockdowns
  4. Lockdown 2
  5. Ende 2. Lockdown bis Ende Untersuchungsperiode

Und dabei immer auch für die verschiedenen Tageszeiten (Morgen, Tag, Abend, Nacht).

  • Plottet den Verlauf der monatlichen Besuchszahlen an eurer Zählstelle.
  • Auf der x-Achse steht dabei dabei Jahr und Monat (gespeichert im df depo_m), auf der y-Achse die monatlichen Besuchszahlen.
  • Zeichnet auch die beiden Lockdown ein (Hinweis: rundet das Start- und Enddatum der Lockdowns auf den Monat, da im Plot die monatlichen Zahlen gezeigt werden).

Haltet euch dabei an untenstehenden Plot:

Musterlösung
ggplot(depo_m, mapping = aes(Ym, Total, group = 1)) + # group = 1 braucht R, dass aus den Einzelpunkten ein Zusammenhang hergestellt wird
  # zeichne Lockdown 1
  geom_rect(
    mapping = aes(
      xmin = ym("2020-3"), xmax = ym("2020-5"),
      ymin = 0, ymax = max(Total + (Total / 100 * 10))),
    fill = "lightskyblue", alpha = 0.2, colour = NA) +
  # zeichne Lockdown 2
  geom_rect(
    mapping = aes(
      xmin = ym("2020-12"), xmax = ym("2021-3"),
      ymin = 0, ymax = max(Total + (Total / 100 * 10))),
    fill = "darkolivegreen2", alpha = 0.2, colour = NA) +
  geom_line(alpha = 0.6, linewidth = 1) +
  scale_x_date(date_labels = "%b%y", date_breaks = "6 months") +
  labs(title = "", y = "Fussgänger:innen pro Monat", x = "Jahr") +
  theme_classic(base_size = 15) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Hinweis: - Nutzt zum plotten ggplot() - folgende Codeschnipsel helfen euch:

Musterlösung
ggplot(data = depo_m, mapping = aes(Ym, Total, group = 1)) + # group 1 braucht R, dass aus den Einzelpunkten ein Zusammenhang hergestellt wird
    # zeichne Lockdown 1; ein einfaches Rechteck. bestimme mit min und max die Dimensionen
  geom_rect(
    mapping = aes(
      xmin = ym("2020-3"), xmax = ym("2020-5"),
      ymin = 0, ymax = max(Total + (Total / 100 * 10))
    ), # das Rechteck soll 10 % grösser als die maximale Besuchszahl sein
    fill = "lightskyblue", alpha = 0.2, colour = NA
  ) +
  # zeichne Lockdown 2
  ... +
  # zeichne die Linie
  geom_line(...) +
  scale_x_date(...)+
  theme_linedraw(base_size = 15) +
  ...
  • Exportiert euren Plot mit ggsave() nach results. Breite = 20, Höhe = 10, Einheiten = cm, dpi = 1000

1b)

Der erste Plot zeigt, wie sich die Besuchszahlen allgemein entwickelt haben. Interessant ist aber auch, wie sie während den einzelnen Monaten zueinander stehen (z.B. “Waren im Mai 2020 mehr Menschen unterwegs als im Mai 2017?”). Dies zeigt folgender Plot:

Musterlösung
ggplot(depo_m, aes(Monat, Total, group = Jahr, color = Jahr, linetype = Jahr)) +
  geom_line(size = 2) +
  geom_point() +
  scale_colour_viridis_d() +
  scale_linetype_manual(values = c(rep("solid", 3), "twodash", "twodash", "solid", "solid")) +
  scale_x_discrete(breaks = c(seq(0, 12, by = 1))) +
  geom_vline(xintercept = c(seq(1, 12, by = 1)), linetype = "dashed", color = "gray") +
  labs(title = "", y = "Fussgänger:innen pro Monat", x = "Monat") +
  theme_classic(base_size = 15) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
  • Erstellt diesen Plot und speichert ihn.

Hinweis: Dieser Plot wird erstellt mit dem Argument group, linetype und color innerhalb des _aes()__ Arguments. geom_line() wiederum zeichnet die Linien.

1c)

Unser Fokus liegt auf der dunklen Tageszeit. Wie verteilen sich die Besuchenden also auf Morgen, Tag, Abend und Nacht?

  • Erstellt und speichert folgenden Plot:

Musterlösung
ggplot(depo_m_daytime, aes(Ym, Total, fill = Tageszeit)) +
  geom_area(position = "fill", alpha = 0.8) +
  scale_fill_manual(values = mycolors) +
  scale_x_date(date_labels = "%b%y", date_breaks = "6 months", 
               limits = c(min(depo_m_daytime$Ym), max = max(depo_m_daytime$Ym)), expand = c(0, 0)) +
  geom_vline(xintercept = seq(as.Date(min(depo_m_daytime$Ym)), as.Date(max(depo_m_daytime$Ym)), 
                              by = "6 months"), linetype = "dashed", color = "black")+
  theme_classic(base_size = 15) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1), 
        legend.position = "bottom") +
  labs(title = "", y = "Verteilung Fussgänger:innen / Monat [%]", x = "Jahr")

Diese Codeschnipsel helfen euch:

Musterlösung
ggplot(depo_m_daytime, aes(Ym, Total, fill = Tageszeit)) +
  geom_area(...) +
  scale_x_date(date_labels = "%b%y", date_breaks = "6 months", 
               limits = c(min(depo_m_daytime$Ym), max = max(depo_m_daytime$Ym)), expand = c(0, 0)) +
  geom_vline(xintercept = seq(as.Date(min(depo_m_daytime$Ym)), as.Date(max(depo_m_daytime$Ym)), 
                              by = "6 months"), linetype = "dashed", color = "black")+
  ...

Aufgabe 2: Wochengang

Nun möchten wir genauer untersuchen, wie sich die Besuchszahlen je nach Phase (Pre, Lockdown 1, Inter, Lockdown 2 und Post) auf die Wochentage und Tageszeiten verteilen.

2a)

  • Erstellt dazu einen Violinplot nach untenstehender Vorgabe. Was sagt uns dieser komplexe Plot?

Musterlösung
ggplot(data = depo, aes(x = Wochentag, y = Total, fill = Tageszeit)) +
  geom_violin(alpha = 0.5) +
  labs(title = "", y = "Fussgänger:innen pro Tag [log10]") +
  facet_grid(cols = vars(Tageszeit), rows = vars(Phase))+
  scale_y_log10()+
  scale_fill_manual(values = mycolors) +
  theme_classic(base_size = 15) +
  theme(
    panel.background = element_rect(fill = NA, color = "black"),
    axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
    legend.title = element_blank(), 
    legend.position = "none")

Hinweis:

  • Nutzt zum plotten ggplot()
  • folgende Codeschnipsel helfen euch:
Musterlösung
ggplot(data = depo, aes(x = Wochentag, y = Total, fill = Tageszeit)) +
  geom_violin() +
  facet_grid(cols = vars(...), rows = vars(...))+
  scale_y_log10()+ 
  ...
  • Warum macht es Sinn, hier die y-Achse zu logarithmieren?
  • Gibt es alternative Darstellungsformen, welche besser geeignet wären?
  • Exportiert auch diesen Plot mit ggsave(). Welche Breite und Höhe passt hier?

Aufgabe 3: Tagesgang

Von der Übersicht ins Detail. Jetzt widmen wir uns dem Tagesgang, das heisst der Verteilung der Besuchenden auf die 24 Tagesstunden je nach Phase.

3a)

  • Berechnet zuerst den Mittelwert der totalen Besuchszahlen pro Wochentag, pro Stunde pro Phase und speichert das df unter Mean_h.
Musterlösung
Mean_h <- depo |>
  group_by(Wochentag, Stunde, Phase) |>
  summarise(Total = mean(Total))

Vergewissert euch vor dem Plotten, dass der Datensatz im long-Format vorliegt.

3b)

  • Plottet den Tagesgang, unterteilt nach den 7 Wochentagen nun für die verschiedenen Phasen.

Musterlösung
ggplot(Mean_h, aes(x = Stunde, y = Total, colour = Wochentag, linetype = Wochentag)) +
  geom_line(size = 1) +
  scale_colour_viridis_d() +
  scale_linetype_manual(values = c(rep("solid", 5), "twodash", "twodash")) +
  scale_x_continuous(breaks = c(seq(0, 23, by = 1)), labels = c(seq(0, 23, by = 1))) +
  facet_grid(rows = vars(Phase)) +
  labs(x = "Uhrzeit [h]", y = "Durchscnnitt Fussganger_Innen / h", title = "") +
  lims(y = c(0, 25)) +
  theme_linedraw(base_size = 15) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Hinweis: - Nutzt zum plotten ggplot() - folgende Codeschnipsel helfen euch:

Musterlösung
ggplot(Mean_h, aes(x = Stunde, y = Total, colour = Wochentag, linetype = Wochentag)) +
  geom_line(...) +
  facet_grid(...)
...

Aufgabe 4: Kennzahlen

Bis hier hin haben wir in diesem Kapitel v.a. visuell gearbeitet. Für den Bericht kann es aber sinnvoll sein, auch einige Kennzahlen in der Hinterhand zu haben. Wir haben das bereits im Kapitel [Datenverarbeitung] berechnet.

  • Reflektiert, welche Zahlen ihr habt und was für den Bericht spannend sein könnte, resp. eure Abbildungen unterstützen oder ergänzen.