Code aus der Vorlesung

Vorlesung vom 25.06.2026

# Aufgabe 10.9

## (a)

# Erwartungstreuer Schätzer für Erfolgswahrscheinlichkeit p der Binomialverteilung:
# arithmetisches Mittel, d.h. Anzahl Erfolge / Anzahl Versuche
# Hier Erfolg = kurzfristige Absage

p_hat <- 57/380

## (b)

prop.test(x = 57, n = 380, p = 0.1, alternative = "two.sided", 
          conf.level = 0.95)

    1-sample proportions test with continuity correction

data:  57 out of 380, null probability 0.1
X-squared = 10.007, df = 1, p-value = 0.001559
alternative hypothesis: true p is not equal to 0.1
95 percent confidence interval:
 0.1164351 0.1908247
sample estimates:
   p 
0.15 
## Alternative
n <- 380
alpha <- 0.05
z_alpha2 <- qnorm(1-alpha/2)
sigma_hat <- sqrt(p_hat*(1-p_hat))

ki <- c(p_hat - z_alpha2*sigma_hat/sqrt(n), 
        p_hat + z_alpha2*sigma_hat/sqrt(n))
ki
[1] 0.1140986 0.1859014
## (c)

### Länge des Konfidenzintervalls
diff(ki)
[1] 0.0718028
### Berechnung
4*z_alpha2*sigma_hat^2/0.05^2
[1] 399.8327
# Der Stichprobenumfang müsste mindestens 400 betragen, damit die Länge des Konfi-
# denzintervalls kleiner ist als 0.05


## (d)

### X = "Anzahl kurzfristiger Absagen"
### X ~ Bin(n = 10, p = 0.15)
### gesucht: P(X >= 1) = 1 - P(X <= 0) = 1-F(0)

1-pbinom(0, size = 10, prob = 0.15)
[1] 0.8031256
### Die Wahrscheinlichkeit für mindestens eine kurfristige Absage beträgt
### ca. 80,3125%


# Aufgabe 11.4

## H_0: mu = 100   gg.   H_1: mu != 100

## Prüfgröße

n <- 10
x_quer <- 102.4
mu_0 <- 100
sigma <- 5

t <- sqrt(n)*(x_quer-mu_0)/(sigma)

alpha <- 0.05
z <- qnorm(1-alpha/2)

# -> Die Nullhypothese kann nicht abgelehnt werden, da die Realisation der 
# Prüfgröße t nicht größer ist als das (1-alpha/2)-Quantil der 
# Standardnormalverteilung (bzw. nicht kleiner ist als -(1-alpha/2)-Quantil).
# D.h. wir gehen davon aus, dass der erwartete Wasserverbrauch der Maschinen
# 100 Litern entspricht


# p-Wert = P(|T| > t) = P(-t < T < t) = P(T < t) - P(T < -t)

pnorm(t) - pnorm(-t)
[1] 0.8709587
# -> Wir können die Nullhypothese nicht ablehnen, da p-Wert < alpha

Vorlesung vom 23.06.2026

df_icecream <- data.frame(
  Temperatur = c(10, 15, 20, 15, 25, 25, 30, 30, 40, 40),
  Eismenge = c(2000, 2000, 6000, 4000, 6000, 4000, 4000, 7000, 7000, 8000),
  Niederschlag = c(25, 8, 1, 1, 15, 10, 20, 0, 20, 0)
)

lm_model_inf <- lm(
  Eismenge ~ Temperatur + Niederschlag,
  data = df_icecream
)


confint(lm_model_inf, level = 0.90)
                    5 %        95 %
(Intercept)  -289.92110 3686.000551
Temperatur     95.70456  229.830948
Niederschlag -149.08375   -4.362954
# Aufgabe 12.1

mtcars
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
# (a)

lm_mtcars <- lm(mpg ~ cyl + disp + hp, data = mtcars)
summary(lm_mtcars)

Call:
lm(formula = mpg ~ cyl + disp + hp, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.0889 -2.0845 -0.7745  1.3972  6.9183 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34.18492    2.59078  13.195 1.54e-13 ***
cyl         -1.22742    0.79728  -1.540   0.1349    
disp        -0.01884    0.01040  -1.811   0.0809 .  
hp          -0.01468    0.01465  -1.002   0.3250    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.055 on 28 degrees of freedom
Multiple R-squared:  0.7679,    Adjusted R-squared:  0.743 
F-statistic: 30.88 on 3 and 28 DF,  p-value: 5.054e-09
# (b) Der p-Wert des F-Tests lautet 5.054e-09, d.h. zum Niveau von 5%
#     ist das Modell insgesamt signifikant, d.h. mindestens einer der
#     Koeffizienten ist ungleich 0


# (c)

confint(lm_mtcars, level = 0.95)
                  2.5 %       97.5 %
(Intercept) 28.87795186 39.491886473
cyl         -2.86056643  0.405726550
disp        -0.04014908  0.002472913
hp          -0.04469028  0.015331608
# Nur das Konfidenzintervall für den Intercept enthält NICHT den 
# Wert 0, d.h. nur der Intercept unterscheidet sich signifikant von 0.
# Die Konfidenzintervalle für cyl, disp und hp enthalten die 0,
# d.h. diese Koffizienten unterscheiden sich NICHT signifikant von 0.

# (d)

neues_fahrzeug <- data.frame(cyl = 8,
                             disp = 200,
                             hp = 150)

predict(lm_mtcars, 
        newdata = neues_fahrzeug,
        interval = "prediction", 
        level = 0.95)
       fit      lwr      upr
1 18.39604 11.17565 25.61643

Vorlesung vom 16.06.2026

#| echo: true
#| eval: true
tooth_1 <- subset(ToothGrowth, dose == 1)
# Klassischer t-Test (gleiche Varianzen):
# t.test(len ~ supp, data = tooth_1, var.equal = TRUE)

# Welch-t-Test (ungleiche Varianzen):
t.test(len ~ supp, data = tooth_1,
       alternative = "two.sided",
       var.equal = FALSE)

    Welch Two Sample t-test

data:  len by supp
t = 4.0328, df = 15.358, p-value = 0.001038
alternative hypothesis: true difference in means between group OJ and group VC is not equal to 0
95 percent confidence interval:
 2.802148 9.057852
sample estimates:
mean in group OJ mean in group VC 
           22.70            16.77 
gp1 <- ToothGrowth$len[ToothGrowth$supp == "VC" & ToothGrowth$dose == 1]
gp2 <- ToothGrowth$len[ToothGrowth$supp == "OJ" & ToothGrowth$dose == 1]

t.test(x = gp1, y = gp2)

    Welch Two Sample t-test

data:  gp1 and gp2
t = -4.0328, df = 15.358, p-value = 0.001038
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -9.057852 -2.802148
sample estimates:
mean of x mean of y 
    16.77     22.70 
sleep_wide <- reshape(sleep, idvar = "ID",
                      timevar = "group",
                      direction = "wide")

t.test(sleep_wide$extra.1, sleep_wide$extra.2,
       paired = TRUE, 
       alternative = "two.sided")

    Paired t-test

data:  sleep_wide$extra.1 and sleep_wide$extra.2
t = -4.0621, df = 9, p-value = 0.002833
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
 -2.4598858 -0.7001142
sample estimates:
mean difference 
          -1.58 
# Aufgabe 11.13

t.test(mpg ~ am, data = mtcars)

    Welch Two Sample t-test

data:  mpg by am
t = -3.7671, df = 18.332, p-value = 0.001374
alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
95 percent confidence interval:
 -11.280194  -3.209684
sample estimates:
mean in group 0 mean in group 1 
       17.14737        24.39231 
# H_0 kann abgelehnt werden, d.h. die Reichweite unterscheidet sich je nah
# Art der Schaltung

Vorlesung vom 09.06.2026

# Aufgabe 10.5

volumen_espresso <- c(1.95, 1.80, 2.10, 2.82, 1.75, 2.01, 1.83, 1.90)


## erwartungstreue Schätzung der Standardabweichung des Expressovolumens
sd(volumen_espresso)
[1] 0.3429286
## Konfidenzintervall für den Erwartungswert des Kaffeevolumens
conf_int <- t.test(volumen_espresso, conf.level = 0.95)$conf.int
conf_int
[1] 1.733305 2.306695
attr(,"conf.level")
[1] 0.95

Vorlesung vom 26.05.2026

x <- rnorm(1000000, mean = 0, sd = 1)
hist(x, freq = FALSE, breaks = 100)
curve(dnorm, col = "red", add = TRUE)

## Aufgabe 8.16

# (a) P(X>5) = 1 - P(X <= 5) = 1 - F(5)

1-pnorm(5, mean = 0.5, sd = sqrt(4))
[1] 0.01222447
# Alternative:
# 1 - P(X <= 5) = 1 - P((X-0.5)/2 <= (5-0.5)/2)
# = 1 - P(Y <= 2.25) (mit Y ~ N(0,1))
# = 1 - Phi(2.25)

1 - pnorm(2.25)
[1] 0.01222447
# (b) P(|X| < 4) = P(-4 < X < 4) = P(X < 4) - P(X < -4) 
# = F(4) - F(-4)

pnorm(4, mean = 0.5, sd = 2) - pnorm(-4, mean = 0.5, sd = 2)
[1] 0.9477164

Vorlesung vom 21.05.2026

# Wahrscheinlichkeitsfunktion der Binomialverteilung
plot(0:12, dbinom(x = 0:12, size = 12, prob = 0.4), type = "h")

# Verteilungsfunktion der Binomialverteilung
pbinom(0:12, 12, 0.4)
 [1] 0.002176782 0.019591041 0.083443323 0.225337283 0.438178222 0.665208558
 [7] 0.841787707 0.942690079 0.984732733 0.997189816 0.999681233 0.999983223
[13] 1.000000000
# Aufgabe 8.15
# (b)

pbinom(1, 30, 0.15)
[1] 0.0480289
dbinom(0, 30, 0.15) + dbinom(1,30,0.15)
[1] 0.0480289
# 2. Variante
1-pbinom(28,30,0.85)
[1] 0.0480289
# Normalverteilung
pnorm(3,1,2)
[1] 0.8413447
pnorm(1)
[1] 0.8413447

Vorlesung vom 30.04.2026

round(cor(mtcars),2)
       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42  0.66  0.60  0.48 -0.55
cyl  -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59 -0.81 -0.52 -0.49  0.53
disp -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43 -0.71 -0.59 -0.56  0.39
hp   -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71 -0.72 -0.24 -0.13  0.75
drat  0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09  0.44  0.71  0.70 -0.09
wt   -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17 -0.55 -0.69 -0.58  0.43
qsec  0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00  0.74 -0.23 -0.21 -0.66
vs    0.66 -0.81 -0.71 -0.72  0.44 -0.55  0.74  1.00  0.17  0.21 -0.57
am    0.60 -0.52 -0.59 -0.24  0.71 -0.69 -0.23  0.17  1.00  0.79  0.06
gear  0.48 -0.49 -0.56 -0.13  0.70 -0.58 -0.21  0.21  0.79  1.00  0.27
carb -0.55  0.53  0.39  0.75 -0.09  0.43 -0.66 -0.57  0.06  0.27  1.00
mtcars$am_factor <- factor(mtcars$am)
levels(mtcars$am_factor) <- c("automatic", "manual")
mtcars$gear_factor <- factor(mtcars$gear)


# Multiple Lineare Regression
model <- lm(mpg ~ wt + cyl  + hp + am_factor + gear_factor, data = mtcars)
summary(model)

Call:
lm(formula = mpg ~ wt + cyl + hp + am_factor + gear_factor, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.5391 -1.7849 -0.5956  1.2845  5.6237 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)     36.58455    3.68080   9.939 3.63e-10 ***
wt              -2.58611    1.00901  -2.563   0.0168 *  
cyl             -0.81901    0.68255  -1.200   0.2414    
hp              -0.02439    0.01749  -1.395   0.1753    
am_factormanual  1.73375    1.82298   0.951   0.3507    
gear_factor4    -0.43510    1.76951  -0.246   0.8078    
gear_factor5    -0.44534    2.42212  -0.184   0.8556    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.604 on 25 degrees of freedom
Multiple R-squared:  0.8494,    Adjusted R-squared:  0.8133 
F-statistic:  23.5 on 6 and 25 DF,  p-value: 3.827e-09
# Kolinearität? -> VIF
library(car)
Loading required package: carData
vif(model)
                GVIF Df GVIF^(1/(2*Df))
wt          4.454727  1        2.110622
cyl         6.791124  1        2.605979
hp          6.569113  1        2.563028
am_factor   3.781727  1        1.944666
gear_factor 7.152087  2        1.635341
plot(x = mtcars$wt,
     y = mtcars$mpg)
abline(model, col = "red")
Warning in abline(model, col = "red"): only using the first two of 7 regression
coefficients

plot(model, which = 1)

plot(model, which = 4)

Vorlesung vom 28.04.2026

# Aufgabe 6.8

library(MSBStatsData)

model <- lm(demand ~ selling_price_eur + product_quality, 
            data = product_demand_testphases)
model

Call:
lm(formula = demand ~ selling_price_eur + product_quality, data = product_demand_testphases)

Coefficients:
      (Intercept)  selling_price_eur    product_quality  
              4.0               -1.5                0.6  
cor(product_demand_testphases) |> round(2)
                  selling_price_eur product_quality demand
selling_price_eur              1.00            0.00  -0.62
product_quality                0.00            1.00   0.76
demand                        -0.62            0.76   1.00
# Variable Inflation Factor (VIF) -> Kolinearität?
# install.packages("car")
library(car)
vif(model)
selling_price_eur   product_quality 
                1                 1 
summary(model)

Call:
lm(formula = demand ~ selling_price_eur + product_quality, data = product_demand_testphases)

Residuals:
         1          2          3          4          5          6 
 5.000e-01 -1.590e-15 -5.000e-01 -5.000e-01  1.035e-16  5.000e-01 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)   
(Intercept)        4.00000    1.37437   2.910  0.06198 . 
selling_price_eur -1.50000    0.28868  -5.196  0.01385 * 
product_quality    0.60000    0.09428   6.364  0.00785 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.5774 on 3 degrees of freedom
Multiple R-squared:  0.9574,    Adjusted R-squared:  0.9291 
F-statistic: 33.75 on 2 and 3 DF,  p-value: 0.008778
# -> beide = 1, also unproblematisch

Vorlesung vom 23.04.2026

# Aufgabe 6.4

library(MSBStatsData)

## Regressionsmodell berechnn
study_model <- lm(points ~ study_days, data = exam_study_time)

## Visualisierung
plot(x = exam_study_time$study_days,
     y = exam_study_time$points,
     xlab = "Lerntage",
     ylab = "Klausurpunkte",
     xlim = c(0,22),
     ylim = c(0,50))
abline(study_model, col = "red")

## Vorhersage
koeffizienten <- coef(study_model)
koeffizienten[1] + koeffizienten[2]*21
(Intercept) 
   46.26667 
exam_study_time_new <- data.frame(study_days = c(21, 30, 15, 23))
predict(study_model, newdata = exam_study_time_new)
       1        2        3        4 
46.26667 68.46667 31.46667 51.20000 
## Model summary
summary(study_model)

Call:
lm(formula = points ~ study_days, data = exam_study_time)

Residuals:
      1       2       3       4       5 
 6.0000 -3.9333 -0.7333 -4.2000  2.8667 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  -5.5333     6.8982  -0.802   0.4811  
study_days    2.4667     0.4651   5.304   0.0131 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.095 on 3 degrees of freedom
Multiple R-squared:  0.9036,    Adjusted R-squared:  0.8715 
F-statistic: 28.13 on 1 and 3 DF,  p-value: 0.01308
## Modelldiagnostik
plot(study_model, which = 1)

plot(study_model, which = 4)

## Anscome Beispiele

### Beispiel Nicht-Linearität

plot(anscombe$x2, anscombe$y2)
ans2 <- lm(y2 ~ x2, data = anscombe)
abline(ans2, col = "red")

plot(ans2, which = 1)

### Beispiel Ausreißer/Influential Point
plot(anscombe$x3, anscombe$y3)
ans3 <- lm(y3 ~ x3, data = anscombe)
abline(ans3, col = "red")

plot(ans3, which = 4)

plot(anscombe$x3, anscombe$y3, 
     pch = as.character(1:nrow(anscombe)))

Vorlesung vom 16.04.2026

library(MSBStatsData)

# Korrelation von zwei Merkmalen
cor(decathlon$race100m, decathlon$longjump)
[1] -0.4838989
# Korrelationsmatrix
cor(decathlon) |> round(2)
                race100m longjump shotput highjump race400m race110mhurdles
race100m            1.00    -0.48   -0.15    -0.12     0.57            0.45
longjump           -0.48     1.00    0.25     0.36    -0.31           -0.38
shotput            -0.15     0.25    1.00     0.16    -0.03           -0.25
highjump           -0.12     0.36    0.16     1.00    -0.11           -0.25
race400m            0.57    -0.31   -0.03    -0.11     1.00            0.38
race110mhurdles     0.45    -0.38   -0.25    -0.25     0.38            1.00
discus             -0.12     0.20    0.72     0.14    -0.04           -0.22
polevault          -0.17     0.27    0.25     0.19    -0.13           -0.29
javelinthrow       -0.06     0.17    0.44     0.07    -0.02           -0.13
race1500m          -0.09     0.02    0.11    -0.01     0.38            0.01
                discus polevault javelinthrow race1500m
race100m         -0.12     -0.17        -0.06     -0.09
longjump          0.20      0.27         0.17      0.02
shotput           0.72      0.25         0.44      0.11
highjump          0.14      0.19         0.07     -0.01
race400m         -0.04     -0.13        -0.02      0.38
race110mhurdles  -0.22     -0.29        -0.13      0.01
discus            1.00      0.27         0.42      0.08
polevault         0.27      1.00         0.19     -0.01
javelinthrow      0.42      0.19         1.00      0.02
race1500m         0.08     -0.01         0.02      1.00
# Visualisierung der Korrelation
# install.packages("corrplot")
library(corrplot)
corrplot 0.95 loaded
corrplot(cor(decathlon))

# Rangkorrelation nach Spearman

library(ggplot2)

plot(x = diamonds$carat,
     y = diamonds$price,
     xlab = "Gewicht in Karat",
     ylab = "Preis in USD")

cor(diamonds$carat, 
    diamonds$price,
    method = "pearson")
[1] 0.9215913
cor(diamonds$carat, 
    diamonds$price,
    method = "spearman")
[1] 0.9628828
cor(diamonds$carat, 
    diamonds$price,
    method = "kendall")
[1] 0.8341049
# Rangkorrelation zwischen cut und color

cor(rank(diamonds$cut),
    rank(diamonds$color),
    method = "spearman")
[1] -0.01718216
cor(rank(diamonds$cut),
    diamonds$price,
    method = "spearman")
[1] -0.09297484
# Beispiel von den Folien

df_rating <- data.frame(
  Bestellung = 1:10,
  Lieferzeit = factor(
    c("sehr kurz", "kurz", "kurz", "mittel", "mittel",
      "lang", "lang", "sehr lang", "sehr lang", "sehr lang"),
    levels = c(
      "sehr kurz", "kurz", "mittel", "lang", "sehr lang"
    ),
    ordered = TRUE
  ),
  Zufriedenheit = factor(
    c("sehr hoch", "hoch", "hoch", "mittel", "mittel",
      "niedrig", "niedrig", "sehr niedrig", "niedrig", "sehr niedrig"),
    levels = c(
      "sehr niedrig", "niedrig", "mittel", "hoch", "sehr hoch"
    ),
    ordered = TRUE
  )
)

Vorlesung vom 14.04.2026

# Aufgabe 4.3
mieten <- c(300,250,400,500,250,600,300,300,450,400)

library(MSBStatsData)
mieten <- cold_rents$monthly_rent_eur

# arithmetische Mittel
mean(mieten)
[1] 375
mean(cold_rents$monthly_rent_eur)
[1] 375
# Stichprobenvarianz, Stichprobenstandardabweichung (Version mit 1/(n-1))
var(mieten)
[1] 13472.22
sd(mieten)
[1] 116.0699
var(mieten) |> sqrt()
[1] 116.0699
# Varianz, Standardabweichung (Version mit 1/n)
n <- length(mieten)
(n-1)/n * var(mieten)
[1] 12125
(n-1)/n * var(mieten) |> sqrt()
[1] 104.4629
# Mittlere absolute Abweichung
(mieten - median(mieten)) |> abs() |> mean()
[1] 95
mean(abs(mieten - median(mieten)))
[1] 95
# Median der absoluten Abweichungen
(mieten - median(mieten)) |> abs() |> median()
[1] 75
# Spannweite
max(mieten) - min(mieten)
[1] 350
range(mieten) |> diff()
[1] 350
# Summary
summary(cold_rents)
 monthly_rent_eur
 Min.   :250.0   
 1st Qu.:300.0   
 Median :350.0   
 Mean   :375.0   
 3rd Qu.:437.5   
 Max.   :600.0   
summary(mieten)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  250.0   300.0   350.0   375.0   437.5   600.0 
summary(mtcars)
      mpg             cyl             disp             hp       
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
 Median :19.20   Median :6.000   Median :196.3   Median :123.0  
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
      drat             wt             qsec             vs        
 Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
 1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
 Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
 Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
 3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
 Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
       am              gear            carb           am_factor  gear_factor
 Min.   :0.0000   Min.   :3.000   Min.   :1.000   automatic:19   3:15       
 1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000   manual   :13   4:12       
 Median :0.0000   Median :4.000   Median :2.000                  5: 5       
 Mean   :0.4062   Mean   :3.688   Mean   :2.812                             
 3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000                             
 Max.   :1.0000   Max.   :5.000   Max.   :8.000                             
# Korrelationskoeffizient

library(MSBStatsData)
summary(decathlon)
    race100m        longjump        shotput         highjump    
 Min.   :10.22   Min.   :5.920   Min.   : 8.87   Min.   :1.510  
 1st Qu.:11.06   1st Qu.:6.760   1st Qu.:12.25   1st Qu.:1.880  
 Median :11.25   Median :6.960   Median :13.08   Median :1.940  
 Mean   :11.25   Mean   :6.969   Mean   :13.12   Mean   :1.938  
 3rd Qu.:11.44   3rd Qu.:7.180   3rd Qu.:13.96   3rd Qu.:2.000  
 Max.   :12.28   Max.   :8.110   Max.   :17.45   Max.   :2.270  
    race400m     race110mhurdles     discus        polevault    
 Min.   :46.21   Min.   :13.47   Min.   :17.78   Min.   :2.850  
 1st Qu.:49.63   1st Qu.:14.85   1st Qu.:36.80   1st Qu.:4.200  
 Median :50.55   Median :15.21   Median :39.54   Median :4.400  
 Mean   :50.61   Mean   :15.24   Mean   :39.64   Mean   :4.405  
 3rd Qu.:51.51   3rd Qu.:15.61   3rd Qu.:42.38   3rd Qu.:4.650  
 Max.   :56.70   Max.   :17.98   Max.   :54.78   Max.   :5.760  
  javelinthrow     race1500m    
 Min.   :32.20   Min.   :241.0  
 1st Qu.:49.96   1st Qu.:273.0  
 Median :53.70   Median :281.8  
 Mean   :53.98   Mean   :283.5  
 3rd Qu.:57.93   3rd Qu.:291.9  
 Max.   :79.80   Max.   :401.2  
plot(x = decathlon$race100m, 
     y = decathlon$longjump, 
     xlab = "100m in Sekunden",
     ylab = "Weitsprung in Metern")

cov(decathlon$race100m, 
    decathlon$longjump)
[1] -0.04342787

Vorlesung vom 02.04.2026

# Mittlere absolute Abweichung

library(ggplot2)

mean(abs(diamonds$price - median(diamonds$price)))
[1] 2807.819
## Anwendung von Pipes

(diamonds$price - median(diamonds$price)) |> abs() |> mean()
[1] 2807.819
log(mean(abs(diamonds$price), na.rm = TRUE), base = 2)
[1] 11.94134
log(
  mean(
    abs(
      diamonds$price
      ), na.rm = TRUE
    ), base = 2
  )
[1] 11.94134
diamonds$price |> 
  abs() |> 
  mean(na.rm = TRUE) |> 
  log(base = 2)
[1] 11.94134
# Varianz und Standardabweichung

var(diamonds$price) # empirische Varianz: 1/(n-1)
[1] 15915629
sd(diamonds$price)
[1] 3989.44
n <- length(diamonds$price) # alternativ: nrow(diamonds)
var(diamonds$price) * (n-1)/n # Varianz: 1/n
[1] 15915334
# Aufgabe 4.1

# (b)

## Mittelwert und Standardabweichung der Preise von 
## Diamanten mit Schliff "Ideal"
diamonds$price[diamonds$cut == "Ideal"] |> mean() # mit Pipe
[1] 3457.542
mean(diamonds$price[diamonds$cut == "Ideal"])     # ohne Pipe
[1] 3457.542
diamonds$price[diamonds$cut == "Ideal"] |> sd()   # mit Pipe
[1] 3808.401
sd(diamonds$price[diamonds$cut == "Ideal"])       # ohne Pipe
[1] 3808.401
diamonds$carat[diamonds$cut == "Ideal"] |> mean()
[1] 0.702837
## Mittelwert und Standardabweichung der Preise von 
## Diamanten mit Schliff "Premium"
diamonds$price[diamonds$cut == "Premium"] |> mean() # mit Pipe
[1] 4584.258
diamonds$price[diamonds$cut == "Premium"] |> sd()   # mit Pipe
[1] 4349.205
diamonds$carat[diamonds$cut == "Premium"] |> mean() # mit Pipe
[1] 0.8919549
aggregate(x = diamonds$price,
          by = list(cut = diamonds$cut),
          FUN = mean)
        cut        x
1      Fair 4358.758
2      Good 3928.864
3 Very Good 3981.760
4   Premium 4584.258
5     Ideal 3457.542
aggregate(x = diamonds$price,
          by = list(cut = diamonds$cut),
          FUN = sd)
        cut        x
1      Fair 3560.387
2      Good 3681.590
3 Very Good 3935.862
4   Premium 4349.205
5     Ideal 3808.401

Vorlesung vom 31.03.2026

# Boxplots zum Vergleich von Häufigkeitsverteilungen
library(ggplot2)

boxplot(diamonds$price ~ diamonds$cut)

boxplot(mtcars$hp ~ mtcars$cyl)

# Aufgabe 3.8

library(MSBStatsData)

papierA <- c(20,30,120,160,80)

# einzeln berechnen
r1 <- (papierA[2]-papierA[1])/papierA[1]

# alle Wachstumsraten
r <- (papierA[-1] - papierA[-length(papierA)])/papierA[-length(papierA)]
f <- r+1

# Geometrisches Mittel
f_geo <- (prod(f))^(1/length(f))
r_geo <- f_geo-1

# Durchschnittliche Wachstumsrate
r_geo
[1] 0.4142136

Vorlesung vom 24.03.2026

# Histogramm für Meilen pro Gallone (Reichweite)

hist(mtcars$mpg, freq = FALSE, breaks = 10)

hist(mtcars$mpg, 
     breaks = c(10,15,20,25,35), 
     right = FALSE,
     xlab = "Meilen pro Gallone",
     ylab = "Dichte",
     main = "Histogramm der Reichweite",
     col = "lightblue",
     border = "white"
     )
box()

Vorlesung vom 16.03.2026

# Aufgabe 2.2

bl <- c("Bayern", "Niedersachsen", "Hessen", 
        "Saarland", "Nordrhein-Westfalen")
ah <- c(120,136,301,80,326)
rh <- ah/sum(ah)

sum(ah) # sollte 963 sein laut Aufgabenstellung
[1] 963
sum(rh) # sollte sich zu 1 aufsummieren
[1] 1
df <- data.frame(Bundesland = bl,
                 H = ah,
                 h = rh)


barplot(height = df$H,
        names.arg = df$Bundesland,
        col = "darkblue",
        ylim = c(0,400),
        xlab = "Bundesländer")
box()

## Aufgabe 2.4

library(MSBStatsData)
bvb_rankings
# A tibble: 35 × 2
    year ranking
   <int>   <dbl>
 1  1988      13
 2  1989       7
 3  1990       4
 4  1991      10
 5  1992       2
 6  1993       4
 7  1994       4
 8  1995       1
 9  1996       1
10  1997       3
# ℹ 25 more rows
# relative Häufigkeiten
prop.table(table(bvb_rankings$ranking))

         1          2          3          4          5          6          7 
0.14285714 0.20000000 0.14285714 0.14285714 0.02857143 0.05714286 0.11428571 
         9         10         11         13 
0.02857143 0.05714286 0.02857143 0.05714286 
# Histogramm
hist(bvb_rankings$ranking, right = FALSE)

# Histogramm mit 4 Klassen
hist(bvb_rankings$ranking, right = FALSE, 
     breaks = c(0,4,8,12,16))

# empirische Verteilungsfunktion
plot(ecdf(bvb_rankings$ranking))

# relative Häufigkeit einstelliger Platzierungen
sum(bvb_rankings$ranking < 10)/length(bvb_rankings$ranking)
[1] 0.8571429
mean(bvb_rankings$ranking < 10)
[1] 0.8571429
boxplot(mtcars$hp)

Zurück nach oben