From 1ae25adad658ca29119e37cc0338b3063698213e Mon Sep 17 00:00:00 2001 From: Nikola Munder <2212719@stud.th-mannheim.de> Date: Sat, 31 Oct 2026 15:15:36 +0100 Subject: [PATCH] finish aufgabe 1 testat 1 --- .RData | Bin 0 -> 8536 bytes .Rhistory | 423 ++++++++ Testat_1/Aufgabe_1/EigenesHistogramm.Rmd | 278 +++--- Testat_1/Aufgabe_1/EigenesHistogramm.html | 1073 +++++++++++---------- 4 files changed, 1149 insertions(+), 625 deletions(-) create mode 100644 .RData create mode 100644 .Rhistory diff --git a/.RData b/.RData new file mode 100644 index 0000000000000000000000000000000000000000..edf1e33f93d21e86ea4959d8d4887b33b4859a95 GIT binary patch literal 8536 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 SG<<2~$NvGr>#D+YivR#P?CYBV literal 0 HcmV?d00001 diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 0000000..f7b19bd --- /dev/null +++ b/.Rhistory @@ -0,0 +1,423 @@ +do.call(sqrt,4) +do.call(sqrt,list(4)) +pi |> sqrt +pi |> sqrt() +l1 = seq(0,2*pi,length=100) +l1.length +l1.length() +l1$length +l1 +length(l1) +plot(l1,) +sin = sin(x) +sin = sin(l1) +plot(x,sin, type="l") +plot(l1,sin, type="l") +carsten = sin(l1) +plot(carsten,sin, type="l") +plot(l1,carsten, type="l") +?rep +# Ihre Lösung +data.frame(seq(0:10)) +# Ihre Lösung +data.frame(seq(0:10), seq(3,4)) +# Ihre Lösung +data.frame(seq(0:10), seq(0:10)) +wort = rep("Wort",100) +data.frame(zahl,wort) +df.head() +df <- data.frame(zahl,wort) +# Ihre Lösung +zahl <- seq(5,25,length=100) +hl <- seq(5,25,length=100) +wort <- rep("Wort",100) +df <- data.frame(zahl,wort) +df.head() +head(df) +head(df,10) +res = df[[67]] +res = df +df +res = df$zahl +res +res = df$zahl[[67]] +res +print(round(res,2)) +# Ihre Lösung: +M +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +M +?apply +# Ihre Lösung: +apply(M,sum) +```{r} +# Ihre Lösung: +apply(M,M[:,2],sum) +# Ihre Lösung: +apply(M,M[1],sum) +# Ihre Lösung: +apply(M,M[2],sum) +# Ihre Lösung: +apply(M,M[3],sum) +# Ihre Lösung: +apply(M,M[1],sum) +# Ihre Lösung: +apply(M,M[2],sum) +# Ihre Lösung: +apply(M,M[2],sum) +# Ihre Lösung: +apply(M,M[1],sum) +# Ihre Lösung: +apply(M,M[1],sum) +# Ihre Lösung: +apply(M,c(1,2),sum) +apply(M,c(1,2),sum) +apply(M,2,sum) +k = M[:,5] +k = M[,5] +k +length(k) +sum(k) +k = M[,1] +k +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +apply(M,2,sum) +k = M[,1] +sum(k) +apply(M,2,sqrt) +0 +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 = function(a){ +if (a == 2){ +return 1 +1 +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 = function(a){ +if (a == 2){ +1 +} +0 +} +apply(M,2,sum) +apply(M,2,count_2) +?sqrt +count_2(3) +count_2(2) +0 +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 = function(a){ +if (a == 2){ +1 +} +else{ +0 +} +} +apply(M,2,count_2) +count_2(2) +?apply +```{r} +0 +?all +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +print(typeof(a)) +} +apply(M,2,count_2) +count_2(2) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +print(typeof(a)) +print(length(a)) +} +apply(M,2,count_2) +count_2(2) +apply(M,2,count_2) +sum(a) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +sum(a) +} +apply(M,2,count_2) +a[[a==2]] +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a[[a==2]] +} +apply(M,2,count_2) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a +} +apply(M,2,count_2) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a +} +res = apply(M,2,count_2) +res +?sum +?count +a==2 +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +res +num_2 = apply(M,2,sum) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +num_2 = apply(M,2,sum) +num_2 +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +num_2 = apply(res,2,sum) +num_2 +2_in_r5 = num2[[5]] +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +num_2 = apply(res,2,sum) +2in_r5 = num2[[5]] +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +num_2 = apply(res,2,sum) +two_in_r5 = num2[[5]] +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +num_2 = apply(res,2,sum) +two_in_r5 = num_2[[5]] +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +two_in_r5 = z[[5]] +print("Es gibt {two_in_r5} ") +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +two_in_r5 = z[[5]] +print(paste0("Es gibt", two_in_r5) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +two_in_r5 = z[[5]] +print(paste0("Es gibt", two_in_r5)) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +two_in_r5 = z[[5]] +print(paste0("Es gibt ", two_in_r5, " in Spalte 5")) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +a==2 +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +two_in_r5 = z[[5]] +print(paste0("Es gibt ", two_in_r5, " 2er in Spalte 5")) +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +sum(a==2) +} +res = apply(M,2,count_2) +z = apply(res,2,sum) +res +set.seed(12) # Zufallszahlengenerator gleich machen. +M = matrix(sample(c(1, 2, 3), 10 * 100, T), nrow = 100) +# Ihre Lösung: +count_2 <- function(a){ +sum(a==2) +} +z = apply(M,2,count_2) +print(paste0("Es gibt ", z[[5]], " 2er in Spalte 5")) +seq(1, 10, length.out = 20) +length(seq(1, 10, length.out = 20)) +r = seq(1, 10, length = 20) +r +r = seq(1, 10, by=0.5) +r +r = seq(0, 10, length = 20) +r +r = seq(1, 10, length = 21) +r +r = seq(0, 10, length.out = 20) +r +r = seq(0, 10, length.out = 10) +r +r = seq(1, 10, length.out = 10) +r +r = seq(1, 10, length.out = 20) +r +setwd("~/Documents/Masterstudium/1.Semester/DSR") +git pulll +clear() +if (min >= max) { +stop("min muss kleiner als max sein.") +} +# Bitte mit echter Lösung in myhistogram.R ersetzen: +myhistogram = function(x, n, min, max) { +if (missing(min)) min <- base::min(x) +if (missing(max)) max <- base::max(x) +if (missing(n)) n <- 10 +if (min >= max) { +stop("min muss kleiner als max sein.") +} +range <- min + max +interval_ranges <- (max - min) / n +borders <- seq(min, max, length.out = n + 1) +counts <- rep(0, n) +for(value in x) { +for (i in 1:n){ +if (value >= borders[i] && value < borders[i+1]){ +counts[i] <- counts[i] + 1 +break +} +} +} +print(paste("Intervallgrößen: ", interval_ranges)) +list(borders=borders, counts = counts) +} +x = seq(-5, 6, by = 1 / 3) +l = myhistogram(x) +print(l$borders) +print(l$counts) +setwd("~/Documents/Masterstudium/1.Semester/DSR_Testate") +# Bitte mit echter Lösung in myhistogram.R ersetzen: +myhistogram = function(x, n, min, max) { +if (missing(min)) min <- base::min(x) +if (missing(max)) max <- base::max(x) +if (missing(n)) n <- 10 +if (min >= max) { +stop("min muss kleiner als max sein.") +} +range <- min + max +interval_ranges <- (max - min) / n +borders <- seq(min, max, length.out = n + 1) +counts <- rep(0, n) +for(value in x) { +for (i in 1:n){ +if (value >= borders[i] && value < borders[i+1]){ +counts[i] <- counts[i] + 1 +break +} +} +} +print(paste("Intervallgrößen: ", interval_ranges)) +list(borders=borders, counts = counts) +} +x = seq(-5, 6, by = 1 / 3) +l = myhistogram(x) +print(l$borders) +print(l$counts) +x = seq(-5, 6, by = 1 / 3) +l = myhistogram(x, n = 10, min = -5, max = 6) +solution = list( +borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0), +counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3) +) +print(l$borders) +print(l$counts) +set.seed(1) +x = rnorm(0, 1, n = 1000) +# h = myhistogram(x, n = 20) +# ggplot() + ... +# Bitte mit echter Lösung in myhistogram.R ersetzen: +myhistogram = function(x, n, min, max) { +if (missing(min)) min <- base::min(x) +if (missing(max)) max <- base::max(x) +if (missing(n)) n <- 10 +if (min >= max) { +stop("min muss kleiner als max sein.") +} +range <- min + max +interval_ranges <- (max - min) / n +borders <- seq(min, max, length.out = n + 1) +counts <- rep(0, n) +for(value in x) { +for (i in 1:n){ +if (value >= borders[i] && value < borders[i+1]){ +counts[i] <- counts[i] + 1 +break +} +} +} +print(paste("Intervallgrößen: ", interval_ranges)) +list(borders=borders, counts = counts) +} +x = seq(-5, 6, by = 1 / 3) +l = myhistogram(x) +print(l$borders) +print(l$counts) diff --git a/Testat_1/Aufgabe_1/EigenesHistogramm.Rmd b/Testat_1/Aufgabe_1/EigenesHistogramm.Rmd index ffbb282..44ea79e 100644 --- a/Testat_1/Aufgabe_1/EigenesHistogramm.Rmd +++ b/Testat_1/Aufgabe_1/EigenesHistogramm.Rmd @@ -1,118 +1,160 @@ ---- -title: "Eigenes Histogramm" -output: html_document ---- - -# Eigenes Histogramm - -Es soll ein eigenes Histogramm erzeugt werden. Der Dateiname für das Skript ist `myhistogram.R`. - -## Funktion `myhistogram` - -Programmieren Sie in R die Funktion `myhistogram`, die als Parameter `x` einen Vektor aus Zahlen erhält. Die Zahlen werden in `n` Intervalle einsortiert, und es wird gezählt, wie oft eine Zahl in einem Intervall vorkommt. Der Rückgabewert ist eine Liste mit den Einträgen `borders`, die die $n+1$ Intervallgrenzen enthalten und `counts`, der die Anzahlen enthält. - - * Die $n$ Intervalle sollen gleich groß sein ($\Delta b$), d.h. für die Intervallgrenzen $b_1, b_2, \ldots, b_{n+1}$ gilt $\frac{b_{i+1}-b_{i}}{n}=\Delta b$ für $i=1, 2, \ldots n$. - * Die äußeren Grenzen $b_1$ und $b_n$ sollen als optionale Parametern `min` und `max` an die Funktion übergeben werden. Werte aus `x`, die zu keinem Intervall gehören, sollen ignoriert werden. Es wird aber eine Warnung ausgegeben, die sagt, welche Zahlen außerhalb des Bereichs liegen. - * Eine Zahl $z$ gehört zum $i$-ten Intervall, falls $b_i \leq z < b_{i+1}$ gilt. - -Bis auf `x` sollen alle Parameter optional sein. Überlegen Sie sinnvolle Default-Werte. - -Es ist natürlich **nicht** erlaubt, in der eigenen Funktion andere Funktionen zu nutzen, die ein Histogramm erzeugen. - -Hier ein Beispiel: -```{r eval = F} -# Bitte mit echter Lösung in myhistogram.R ersetzen: -myhistogram = function(x, n, min, max) { - if (missing(min)) min <- base::min(x) - if (missing(max)) max <- base::max(x) - if (missing(n)) n <- 10 - - if (min >= max) { - stop("min muss kleiner als max sein.") - } - - range <- min + max - interval_ranges <- (max - min) / n - borders <- seq(min, max, length.out = n + 1) - counts <- rep(0, n) - - for(value in x) { - for (i in 1:n){ - if (value >= borders[i] && value < borders[i+1]){ - counts[i] <- counts[i] + 1 - break - } - } - } - - print(paste("Intervallgrößen: ", interval_ranges)) - list(borders=borders, counts = counts) -} -x = seq(-5, 6, by = 1 / 3) - -l = myhistogram(x) -print(l$borders) -print(l$counts) -``` - - - -## Beispieldaten - -Hier zunächst zwei Beispiele. - -### Beispiel 1 - -Es wird eine Warnung ausgeben: -``` -## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb -## Intervallgrenzen: 6 -``` - -```{r} -x = seq(-5, 6, by = 1 / 3) -l = myhistogram(x, n = 10, min = -5, max = 6) -solution = list( - borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0), - counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3) -) -print(l$borders) -print(l$counts) -``` - -### Beispiel 2 - -```{r} -x = seq(-5, 6, by = 1 / 3) -# myhistogram(x, n = 5, min = -10, max = 10) -solution = list(borders = c(-10, -6, -2, 2, 6, 10), - counts = c(0, 9, 12, 12, 1)) -``` - -### Beispiel 3 - -Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen. - -### Beispiel 4 - -Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen. - -### Beispiel 5 - -Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen. - - -## Barplot - -Nutzen Sie Ihre Funktion `myhistogram` und erzeugen Sie einen Barplot mit _ggplot_. Die _x_-Achse zeigt dabei die Mitte des Intervalls und die _y_-Achse die Anzahl der Elemente in dieser Klasse. - -Tipp: Der Parameter `stat` von `geom_bar` ist wichtig. - -Vervollständigen Sie den Chunk. Die Kommentare sollen zu Anweisungen umgewandelt werden: - -```{r} -set.seed(1) -x = rnorm(0, 1, n = 1000) -# h = myhistogram(x, n = 20) -# ggplot() + ... -``` +--- +title: "Eigenes Histogramm" +output: + html_document: default + pdf_document: default +--- + +# Eigenes Histogramm + +Es soll ein eigenes Histogramm erzeugt werden. Der Dateiname für das Skript ist `myhistogram.R`. + +## Funktion `myhistogram` + +Programmieren Sie in R die Funktion `myhistogram`, die als Parameter `x` einen Vektor aus Zahlen erhält. Die Zahlen werden in `n` Intervalle einsortiert, und es wird gezählt, wie oft eine Zahl in einem Intervall vorkommt. Der Rückgabewert ist eine Liste mit den Einträgen `borders`, die die $n+1$ Intervallgrenzen enthalten und `counts`, der die Anzahlen enthält. + + * Die $n$ Intervalle sollen gleich groß sein ($\Delta b$), d.h. für die Intervallgrenzen $b_1, b_2, \ldots, b_{n+1}$ gilt $\frac{b_{i+1}-b_{i}}{n}=\Delta b$ für $i=1, 2, \ldots n$. + * Die äußeren Grenzen $b_1$ und $b_n$ sollen als optionale Parametern `min` und `max` an die Funktion übergeben werden. Werte aus `x`, die zu keinem Intervall gehören, sollen ignoriert werden. Es wird aber eine Warnung ausgegeben, die sagt, welche Zahlen außerhalb des Bereichs liegen. + * Eine Zahl $z$ gehört zum $i$-ten Intervall, falls $b_i \leq z < b_{i+1}$ gilt. + +Bis auf `x` sollen alle Parameter optional sein. Überlegen Sie sinnvolle Default-Werte. + +Es ist natürlich **nicht** erlaubt, in der eigenen Funktion andere Funktionen zu nutzen, die ein Histogramm erzeugen. + +Hier ein Beispiel: +```{r eval = T} +# Bitte mit echter Lösung in myhistogram.R ersetzen: +myhistogram = function(x, n, min, max) { + if (missing(min)) min <- base::min(x) + if (missing(max)) max <- base::max(x) + if (missing(n)) n <- 10 + + if (min >= max) { + stop("min muss kleiner als max sein.") + } + + range <- min + max + borders <- seq(min, max, length.out = n + 1) + counts <- rep(0, n) + + outside <- x[x < min | x >= max] + if (length(outside) > 0) { + warning(paste("Zahl(en) außerhalb Intervallgrenzen:", + paste(outside, collapse = ", "))) + } + + for(value in x) { + for (i in 1:n){ + if (value >= borders[i] && value < borders[i+1]){ + counts[i] <- counts[i] + 1 + break + } + } + } + + list(borders=borders, counts = counts) +} +x = seq(-5, 6, by = 1 / 3) + +l = myhistogram(x) +print(l$borders) +print(l$counts) +``` + + + +## Beispieldaten + +Hier zunächst zwei Beispiele. + +### Beispiel 1 + +Es wird eine Warnung ausgeben: +``` +## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb +## Intervallgrenzen: 6 +``` + +```{r} +x = seq(-5, 6, by = 1 / 3) +l = myhistogram(x, n = 10, min = -5, max = 6) +solution = list( + borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0), + counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3) +) +print(l$borders) +print(l$counts) +``` + +### Beispiel 2 + +```{r} +x = seq(-5, 6, by = 1 / 3) +myhistogram(x, n = 5, min = -10, max = 10) +solution = list(borders = c(-10, -6, -2, 2, 6, 10), + counts = c(0, 9, 12, 12, 1)) +``` + +### Beispiel 3 + +Ganze Zahlen mit Wiederholungen, Default-Werte für `n`, `min` und `max`. Da $b_{n+1}$ selbst zu keinem Intervall gehört, wird das Maximum (10) als außerhalb gemeldet: + +```{r} +x = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10) +l = myhistogram(x) +print(l$borders) +print(l$counts) +``` + +### Beispiel 4 + +Werte unterhalb von `min` und oberhalb von `max` werden ignoriert und in der Warnung aufgelistet: + +```{r} +x = c(-3, -1, 0, 0.5, 1, 2.5, 4, 4.99, 5, 7) +l = myhistogram(x, n = 5, min = 0, max = 5) +solution = list(borders = c(0, 1, 2, 3, 4, 5), + counts = c(2, 1, 1, 0, 2)) +print(l$borders) +print(l$counts) +``` + +### Beispiel 5 + +Normalverteilte Zufallszahlen, deren Bereich vollständig innerhalb von `min` und `max` liegt (keine Warnung): + +```{r} +set.seed(42) +x = rnorm(100, mean = 0, sd = 1) +l = myhistogram(x, n = 8, min = -4, max = 4) +print(l$borders) +print(l$counts) +print(sum(l$counts)) # muss 100 ergeben +``` + + +## Barplot + +Nutzen Sie Ihre Funktion `myhistogram` und erzeugen Sie einen Barplot mit _ggplot_. Die _x_-Achse zeigt dabei die Mitte des Intervalls und die _y_-Achse die Anzahl der Elemente in dieser Klasse. + +Tipp: Der Parameter `stat` von `geom_bar` ist wichtig. + +Vervollständigen Sie den Chunk. Die Kommentare sollen zu Anweisungen umgewandelt werden: + +```{r} +library("ggplot2") +set.seed(1) +x = rnorm(0, 1, n = 1000) +h = myhistogram(x, n = 10) +bins = (h$borders[-1]+h$borders[-length(h$borders)])/2 # letzte und erste Grenze entfernen sodass nebeneinanderliegende Grenzen in den Vektoren jeweils auf der gleichen Indexposition liegen. Man verschiebt die Grenzen also + +#print(h$borders[-1]) +#print(h$borders[length(-h$borders)]) + +print(h$borders) +count = h$counts #/sum(h$counts) # Damit kann man die relative statt der absoluten Häufigkeit anzeigen +ggplot() + + geom_bar(aes(x=bins, y=count), stat="identity")+ + labs(title="Histogramm für normalverteilte Daten", y="Absolute Häufigkeit", x="Intervalle") + +``` diff --git a/Testat_1/Aufgabe_1/EigenesHistogramm.html b/Testat_1/Aufgabe_1/EigenesHistogramm.html index 4c8dd03..b4beeb6 100644 --- a/Testat_1/Aufgabe_1/EigenesHistogramm.html +++ b/Testat_1/Aufgabe_1/EigenesHistogramm.html @@ -1,507 +1,566 @@ - - - - - - - - - - - - - -Eigenes Histogramm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
-

Eigenes Histogramm

-

Es soll ein eigenes Histogramm erzeugt werden. Der Dateiname für das -Skript ist myhistogram.R.

-
-

Funktion myhistogram

-

Programmieren Sie in R die Funktion myhistogram, die als -Parameter x einen Vektor aus Zahlen erhält. Die Zahlen -werden in n Intervalle einsortiert, und es wird gezählt, -wie oft eine Zahl in einem Intervall vorkommt. Der Rückgabewert ist eine -Liste mit den Einträgen borders, die die \(n+1\) Intervallgrenzen enthalten und -counts, der die Anzahlen enthält.

-
    -
  • Die \(n\) Intervalle sollen gleich -groß sein (\(\Delta b\)), d.h. für die -Intervallgrenzen \(b_1, b_2, \ldots, -b_{n+1}\) gilt \(\frac{b_{i+1}-b_{i}}{n}=\Delta b\) für -\(i=1, 2, \ldots n\).
  • -
  • Die äußeren Grenzen \(b_1\) und -\(b_n\) sollen als optionale Parametern -min und max an die Funktion übergeben werden. -Werte aus x, die zu keinem Intervall gehören, sollen -ignoriert werden. Es wird aber eine Warnung ausgegeben, die sagt, welche -Zahlen außerhalb des Bereichs liegen.
  • -
  • Eine Zahl \(z\) gehört zum \(i\)-ten Intervall, falls \(b_i \leq z < b_{i+1}\) gilt.
  • -
-

Bis auf x sollen alle Parameter optional sein. Überlegen -Sie sinnvolle Default-Werte.

-

Es ist natürlich nicht erlaubt, in der eigenen -Funktion andere Funktionen zu nutzen, die ein Histogramm erzeugen.

-

Hier ein Beispiel:

-
# Bitte mit echter Lösung in myhistogram.R ersetzen:
-myhistogram = function(x, n, min, max) {
-  if (missing(min)){
-    
-  }
-  if (missing(max)){
-    
-  }
-  if (missing(n)){
-    n <- 10
-  }
-  intervals <- length(x)/n
-  print("Intervalle: ",intervals)
-  print(paste("Intervalel: ", intervals))
-  list(borders = c(), counts = c())
-}
-
-x = seq(-5, 6, by = 1 / 3)
-l = myhistogram(x)
-print(l$borders)
-print(l$counts)
-
-
-

Beispieldaten

-

Hier zunächst zwei Beispiele.

-
-

Beispiel 1

-

Es wird eine Warnung ausgeben:

-
## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb
-## Intervallgrenzen: 6
-
x = seq(-5, 6, by = 1 / 3)
-# myhistogram(x, n = 10, min = -5, max = 6)
-solution = list(
-  borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0),
-  counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3)
-)
-
-
-

Beispiel 2

-
x = seq(-5, 6, by = 1 / 3)
-# myhistogram(x, n = 5, min = -10, max = 10)
-solution = list(borders = c(-10, -6, -2, 2, 6, 10),
-                counts = c(0, 9, 12, 12, 1))
-
-
-

Beispiel 3

-

Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.

-
-
-

Beispiel 4

-

Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.

-
-
-

Beispiel 5

-

Testen Sie nun hier Ihre Funktion mit weiteren Datensätzen.

-
-
-
-

Barplot

-

Nutzen Sie Ihre Funktion myhistogram und erzeugen Sie -einen Barplot mit ggplot. Die x-Achse zeigt dabei die -Mitte des Intervalls und die y-Achse die Anzahl der Elemente in -dieser Klasse.

-

Tipp: Der Parameter stat von geom_bar ist -wichtig.

-

Vervollständigen Sie den Chunk. Die Kommentare sollen zu Anweisungen -umgewandelt werden:

-
set.seed(1)
-x = rnorm(0, 1, n = 1000)
-# h = myhistogram(x, n = 20)
-# ggplot() + ...
-
-
- - - - -
- - - - - - - - - - - - - - - + + + + + + + + + + + + + +Eigenes Histogramm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+

Eigenes Histogramm

+

Es soll ein eigenes Histogramm erzeugt werden. Der Dateiname für das +Skript ist myhistogram.R.

+
+

Funktion myhistogram

+

Programmieren Sie in R die Funktion myhistogram, die als +Parameter x einen Vektor aus Zahlen erhält. Die Zahlen +werden in n Intervalle einsortiert, und es wird gezählt, +wie oft eine Zahl in einem Intervall vorkommt. Der Rückgabewert ist eine +Liste mit den Einträgen borders, die die \(n+1\) Intervallgrenzen enthalten und +counts, der die Anzahlen enthält.

+
    +
  • Die \(n\) Intervalle sollen gleich +groß sein (\(\Delta b\)), d.h. für die +Intervallgrenzen \(b_1, b_2, \ldots, +b_{n+1}\) gilt \(\frac{b_{i+1}-b_{i}}{n}=\Delta b\) für +\(i=1, 2, \ldots n\).
  • +
  • Die äußeren Grenzen \(b_1\) und +\(b_n\) sollen als optionale Parametern +min und max an die Funktion übergeben werden. +Werte aus x, die zu keinem Intervall gehören, sollen +ignoriert werden. Es wird aber eine Warnung ausgegeben, die sagt, welche +Zahlen außerhalb des Bereichs liegen.
  • +
  • Eine Zahl \(z\) gehört zum \(i\)-ten Intervall, falls \(b_i \leq z < b_{i+1}\) gilt.
  • +
+

Bis auf x sollen alle Parameter optional sein. Überlegen +Sie sinnvolle Default-Werte.

+

Es ist natürlich nicht erlaubt, in der eigenen +Funktion andere Funktionen zu nutzen, die ein Histogramm erzeugen.

+

Hier ein Beispiel:

+
# Bitte mit echter Lösung in myhistogram.R ersetzen:
+myhistogram = function(x, n, min, max) {
+  if (missing(min)) min <- base::min(x)
+  if (missing(max)) max <- base::max(x)
+  if (missing(n)) n <- 10
+  
+  if (min >= max) {
+    stop("min muss kleiner als max sein.")
+  }
+
+  range <- min + max
+  borders <- seq(min, max, length.out = n + 1)
+  counts <- rep(0, n)
+  
+  outside <- x[x < min | x >= max]
+  if (length(outside) > 0) {
+    warning(paste("Zahl(en) außerhalb Intervallgrenzen:",
+                  paste(outside, collapse = ", ")))
+  }
+  
+  for(value in x) {
+    for (i in 1:n){
+      if (value >= borders[i] && value < borders[i+1]){
+        counts[i] <- counts[i] + 1
+        break
+      }
+    }
+  }
+  
+  list(borders=borders, counts = counts)
+}
+x = seq(-5, 6, by = 1 / 3)
+
+l = myhistogram(x)
+
## Warning in myhistogram(x): Zahl(en) außerhalb Intervallgrenzen: 6
+
print(l$borders)
+
##  [1] -5.0 -3.9 -2.8 -1.7 -0.6  0.5  1.6  2.7  3.8  4.9  6.0
+
print(l$counts)
+
##  [1] 4 3 3 4 3 3 4 3 3 3
+
+
+

Beispieldaten

+

Hier zunächst zwei Beispiele.

+
+

Beispiel 1

+

Es wird eine Warnung ausgeben:

+
## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb
+## Intervallgrenzen: 6
+
x = seq(-5, 6, by = 1 / 3)
+l = myhistogram(x, n = 10, min = -5, max = 6)
+
## Warning in myhistogram(x, n = 10, min = -5, max = 6): Zahl(en) außerhalb
+## Intervallgrenzen: 6
+
solution = list(
+  borders = c(-5.0, -3.9, -2.8, -1.7, -0.6, 0.5, 1.6, 2.7, 3.8, 4.9, 6.0),
+  counts = c(4, 3, 3, 4, 3, 3, 4, 3, 3, 3)
+)
+print(l$borders)
+
##  [1] -5.0 -3.9 -2.8 -1.7 -0.6  0.5  1.6  2.7  3.8  4.9  6.0
+
print(l$counts)
+
##  [1] 4 3 3 4 3 3 4 3 3 3
+
+
+

Beispiel 2

+
x = seq(-5, 6, by = 1 / 3)
+myhistogram(x, n = 5, min = -10, max = 10)
+
## $borders
+## [1] -10  -6  -2   2   6  10
+## 
+## $counts
+## [1]  0  9 12 12  1
+
solution = list(borders = c(-10, -6, -2, 2, 6, 10),
+                counts = c(0, 9, 12, 12, 1))
+
+
+

Beispiel 3

+

Ganze Zahlen mit Wiederholungen, Default-Werte für n, +min und max. Da \(b_{n+1}\) selbst zu keinem Intervall +gehört, wird das Maximum (10) als außerhalb gemeldet:

+
x = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10)
+l = myhistogram(x)
+
## Warning in myhistogram(x): Zahl(en) außerhalb Intervallgrenzen: 10
+
print(l$borders)
+
##  [1]  1.0  1.9  2.8  3.7  4.6  5.5  6.4  7.3  8.2  9.1 10.0
+
print(l$counts)
+
##  [1] 1 2 3 4 1 1 1 1 1 0
+
+
+

Beispiel 4

+

Werte unterhalb von min und oberhalb von +max werden ignoriert und in der Warnung aufgelistet:

+
x = c(-3, -1, 0, 0.5, 1, 2.5, 4, 4.99, 5, 7)
+l = myhistogram(x, n = 5, min = 0, max = 5)
+
## Warning in myhistogram(x, n = 5, min = 0, max = 5): Zahl(en) außerhalb
+## Intervallgrenzen: -3, -1, 5, 7
+
solution = list(borders = c(0, 1, 2, 3, 4, 5),
+                counts = c(2, 1, 1, 0, 2))
+print(l$borders)
+
## [1] 0 1 2 3 4 5
+
print(l$counts)
+
## [1] 2 1 1 0 2
+
+
+

Beispiel 5

+

Normalverteilte Zufallszahlen, deren Bereich vollständig innerhalb +von min und max liegt (keine Warnung):

+
set.seed(42)
+x = rnorm(100, mean = 0, sd = 1)
+l = myhistogram(x, n = 8, min = -4, max = 4)
+print(l$borders)
+
## [1] -4 -3 -2 -1  0  1  2  3  4
+
print(l$counts)
+
## [1]  0  4 11 31 37 15  2  0
+
print(sum(l$counts))  # muss 100 ergeben
+
## [1] 100
+
+
+
+

Barplot

+

Nutzen Sie Ihre Funktion myhistogram und erzeugen Sie +einen Barplot mit ggplot. Die x-Achse zeigt dabei die +Mitte des Intervalls und die y-Achse die Anzahl der Elemente in +dieser Klasse.

+

Tipp: Der Parameter stat von geom_bar ist +wichtig.

+

Vervollständigen Sie den Chunk. Die Kommentare sollen zu Anweisungen +umgewandelt werden:

+
set.seed(1)
+x = rnorm(0, 1, n = 1000)
+# h = myhistogram(x, n = 20)
+# ggplot() + ...
+
+
+ + + + +
+ + + + + + + + + + + + + + +