author an.Menu | File | Knit Document.
Achtung: das HTML-Dokument wird nur erstellt, wenn der R Code fehlerfrei
ist. Überprüfen Sie mögliche Fehlerquellen, z.B. Syntax,
Variablenbenennung, …Themenblock: Schätzen von Verteilungsparametern I
Datensatz: Lufttemperaturen
Problemstellung: Durch welchen Mittelwert und welche Standardabweichung werden die bodennahen Lufttemperaturen von Berliner Messstationen mittels einer Normalverteilung annäherungsweise beschrieben? Wie unterscheiden sich diese Parameter zwischen den Messstandorten?
Übungsziel: Berechnung der Schätzer von Mittelwert und Standardabweichung ‘per Hand’, d.h. durch Programmierung in R. Einführung in die R-Programmierung.
Schönefeld, Berlin-Dahlem und
Berlin-Alexanderplatz für die Sommermonate (d.h.
JJA) ein. Speichern Sie dabei jeden Datensatz auf einer
eigenen Variable. (1P)#setwd("/Users/julianmarschner/Downloads/Uni /Statistik/Session05_Datensaetze")
schoenefeld_data <- read.csv("/Users/julianmarschner/Downloads/Uni /Statistik/Session05_Datensaetze/t2m_Berlin-Schoenefeld_JJA.csv")
berlin_dahlem_data <- read.csv("/Users/julianmarschner/Downloads/Uni /Statistik/Session05_Datensaetze/t2m_Berlin-Dahlem(FU)_JJA.csv")
berlin_alexanderplatz_data <- read.csv("/Users/julianmarschner/Downloads/Uni /Statistik/Session05_Datensaetze/t2m_Berlin-Alexanderplatz_JJA.csv")
head(schoenefeld_data)
## date mean max min station season
## 1 1981-06-01 22.5 29.5 13.7 Berlin-Schönefeld JJA
## 2 1981-06-02 23.9 30.6 16.3 Berlin-Schönefeld JJA
## 3 1981-06-03 21.9 28.0 18.5 Berlin-Schönefeld JJA
## 4 1981-06-04 17.5 23.9 16.4 Berlin-Schönefeld JJA
## 5 1981-06-05 17.5 22.9 11.6 Berlin-Schönefeld JJA
## 6 1981-06-06 18.8 24.6 12.1 Berlin-Schönefeld JJA
head(berlin_dahlem_data)
## date mean max min station season
## 1 1981-06-01 22.6 28.9 14.8 Berlin-Dahlem (FU) JJA
## 2 1981-06-02 24.0 30.1 17.9 Berlin-Dahlem (FU) JJA
## 3 1981-06-03 21.1 25.5 18.8 Berlin-Dahlem (FU) JJA
## 4 1981-06-04 16.5 20.8 15.4 Berlin-Dahlem (FU) JJA
## 5 1981-06-05 17.9 22.5 12.9 Berlin-Dahlem (FU) JJA
## 6 1981-06-06 19.0 23.6 11.8 Berlin-Dahlem (FU) JJA
head(berlin_alexanderplatz_data)
## date mean max min station season
## 1 1981-06-01 23.6 29.3 17.1 Berlin-Alexanderplatz JJA
## 2 1981-06-02 24.6 31.8 17.2 Berlin-Alexanderplatz JJA
## 3 1981-06-03 22.4 28.8 20.4 Berlin-Alexanderplatz JJA
## 4 1981-06-04 16.9 24.2 16.2 Berlin-Alexanderplatz JJA
## 5 1981-06-05 18.2 22.4 14.3 Berlin-Alexanderplatz JJA
## 6 1981-06-06 18.9 22.7 15.5 Berlin-Alexanderplatz JJA
#### 2. Stellen Sie die `Minimumtemperatur` aller drei Stationen in jeweils einem Histogramm graphisch dar, und nutzen Sie dabei eine geeignete Bin-Zahl. Nutzen Sie dazu das Paket *ggplot* und plotten Sie alle drei Abbildungen nebeneinander. (2P)
library(ggplot2)
hist_schoenefeld <- ggplot(schoenefeld_data, aes(x = Minimumtemperatur)) +
geom_histogram(bins = 30, fill = "lightblue", color = "black") +
ggtitle("Histogramm Schönefeld") +
theme_minimal()
hist_berlin_dahlem <- ggplot(berlin_dahlem_data, aes(x = Minimumtemperatur)) +
geom_histogram(bins = 30, fill = "lightgreen", color = "black") +
ggtitle("Histogramm Berlin-Dahlem") +
theme_minimal()
hist_berlin_alexanderplatz <- ggplot(berlin_alexanderplatz_data, aes(x = Minimumtemperatur)) +
geom_histogram(bins = 30, fill = "lightcoral", color = "black") +
ggtitle("Histogramm Berlin-Alexanderplatz") +
theme_minimal()
Minimumtemperatur der drei Stationen. Erstellen Sie
zunächst einen neuen data.frame, in dem die drei einzelnen Datensätze
untereinander zusammengeführt werden - recherchieren Sie dazu, wie Sie
die Funktion rbind() nutzen können. Benutzen Sie anschließend
die Ihnen bereits bekannten Funktionen aus dem Paket tidyverse
um die beiden Schätzer für jede Station zu berechnen (Tipp: eine der
Stationen enthält NA-Werte - was müssen Sie hierzu bei der Berechnung in
R beachten?). (2P)schoenefeld_data$Station <- "Schoenefeld"
berlin_dahlem_data$Station <- "Berlin-Dahlem"
berlin_alexanderplatz_data$Station <- "Berlin-Alexanderplatz"
alle_stationen <- rbind(schoenefeld_data, berlin_dahlem_data, berlin_alexanderplatz_data)
head(alle_stationen)
## date mean max min station season Station
## 1 1981-06-01 22.5 29.5 13.7 Berlin-Schönefeld JJA Schoenefeld
## 2 1981-06-02 23.9 30.6 16.3 Berlin-Schönefeld JJA Schoenefeld
## 3 1981-06-03 21.9 28.0 18.5 Berlin-Schönefeld JJA Schoenefeld
## 4 1981-06-04 17.5 23.9 16.4 Berlin-Schönefeld JJA Schoenefeld
## 5 1981-06-05 17.5 22.9 11.6 Berlin-Schönefeld JJA Schoenefeld
## 6 1981-06-06 18.8 24.6 12.1 Berlin-Schönefeld JJA Schoenefeld
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
schätzer <- alle_stationen %>%
group_by(Station) %>%
summarise(
Mittelwert = mean("Temperature", na.rm = TRUE),
Stdabweichung = sd("Temperature", na.rm = TRUE))
## Warning: There were 6 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `Mittelwert = mean("Temperature", na.rm = TRUE)`.
## ℹ In group 1: `Station = "Berlin-Alexanderplatz"`.
## Caused by warning in `mean.default()`:
## ! argument is not numeric or logical: returning NA
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 5 remaining warnings.
print(schätzer)
## # A tibble: 3 × 3
## Station Mittelwert Stdabweichung
## <chr> <dbl> <dbl>
## 1 Berlin-Alexanderplatz NA NA
## 2 Berlin-Dahlem NA NA
## 3 Schoenefeld NA NA
library(tidyverse)
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
n <- 1000
stationen <- unique(schätzer$Station)
plots <- list()
for (station in stationen) {
params <- schätzer %>%
filter(Station == station) %>%
select(Mittelwert, Stdabweichung) %>%
unlist(use.names = FALSE)
simulated_data <- rnorm(n, mean = params[1], sd = params[2])
simulated_data <- simulated_data[!is.na(simulated_data) & !is.nan(simulated_data)]
hist_plot <- ggplot(data.frame(x = simulated_data), aes(x)) +
geom_histogram(aes(y = after_stat(density)), bins = 30, fill = "lightblue", color = "black") +
stat_function(fun = function(x) dnorm(x, mean = params[1], sd = params[2]),
color = "red", size = 1) +
ggtitle(paste("Histogramm der Station", station)) +
theme_minimal()
qq_plot <- ggplot(data.frame(x = simulated_data), aes(sample = x)) +
geom_qq() +
geom_qq_line() +
ggtitle(paste("QQ-Plot der Station", station)) +
theme_minimal()
plots[[paste("hist_", station, sep = "")]] <- hist_plot
plots[[paste("qq_", station, sep = "")]] <- qq_plot}
## Warning in rnorm(n, mean = params[1], sd = params[2]): NAs produced
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in rnorm(n, mean = params[1], sd = params[2]): NAs produced
## Warning in rnorm(n, mean = params[1], sd = params[2]): NAs produced
summary_stats <- schätzer %>%
group_by(Station) %>%
summarise(
Mittelwert = mean(Mittelwert, na.rm = TRUE),
Stdabweichung = mean(Stdabweichung, na.rm = TRUE))
print(summary_stats)
## # A tibble: 3 × 3
## Station Mittelwert Stdabweichung
## <chr> <dbl> <dbl>
## 1 Berlin-Alexanderplatz NaN NaN
## 2 Berlin-Dahlem NaN NaN
## 3 Schoenefeld NaN NaN