Letzte Änderung am 22. October 2025 um 16:30:20

VorsichtStand des Kapitels: Konstruktion (seit 07.2025)

Dieses Kapitel wird in den nächsten Wochen geschrieben. Ich plane zum Beginn des WiSe 2025/26 eine neue Version des Kapitels erstellt zu haben. Während das Kapitel entsteht, funktioniert so manches dann nicht so wie es soll.

VorsichtDieses Kapitel ist archiviert

Ich benötige die Thematik aktuell nicht in meiner Lehre oder der statistischen Beratung. Mir ist es als Nachschlagewerk aber immer noch wichtig zu behalten. Archivierte Kapitel werden nicht von mir weiter gepflegt oder ergänzt. Auftretende Fehler werden aber natürlich beseitigt, wenn die Fehler mir auffallen oder gemeldet werden.

Abbildung 84.1— foo. [Zum Vergrößern anklicken]
Abbildung 84.2— foo. [Zum Vergrößern anklicken]

84.1 Genutzte R Pakete

Wir wollen folgende R Pakete in diesem Kapitel nutzen.

R Code [zeigen / verbergen]
pacman::p_load(tidyverse, gtsummary, marginaleffects, emmeans, scales,
               ggpmisc, readxl, conflicted)
conflicts_prefer(dplyr::mutate)
conflicts_prefer(dplyr::summarize)
conflicts_prefer(dplyr::filter)
conflicts_prefer(ggplot2::annotate)
cb_pal <- c("#000000", "#E69F00", "#56B4E9", 
            "#009E73", "#F0E442", "#F5C710", 
            "#0072B2", "#D55E00", "#CC79A7")
## 
nice_number <- label_number(style_negative = "minus", accuracy = 0.01)
nice_p <- label_pvalue(prefix = c("p < ", "p = ", "p > "))
find_intercept <- function(x1, y1, slope) {
  intercept <- slope * (-x1) + y1
  return(intercept)
}

An der Seite des Kapitels findest du den Link Quellcode anzeigen, über den du Zugang zum gesamten R-Code dieses Kapitels erhältst.

84.2 Daten

R Code [zeigen / verbergen]
flea_model_tbl <- read_excel("data/fleas_model_data.xlsx") |> 
  mutate(feeding = as_factor(feeding),
         stage = as_factor(stage),
         bonitur = as.numeric(bonitur),
         infected = factor(infected, labels = c("healthy", "infected"))) |> 
  select(feeding, stage, jump_length, weight, hatched, count_leg,  bonitur, infected)

84.3 Prädiktion

R Code [zeigen / verbergen]
simple_2_tbl <- flea_model_tbl |> 
  filter(stage == "adult")
simple_2_fit <- lm(jump_length ~ weight*feeding, simple_2_tbl)
coef(simple_2_fit)
          (Intercept)                weight          feedingblood 
          43.21968178            2.11178610           29.67377681 
       feedingketchup   weight:feedingblood weight:feedingketchup 
          43.24721935           -0.03097599           -1.65129790 
R Code [zeigen / verbergen]
simple_2_fit |> broom::augment()
# A tibble: 24 × 9
   jump_length weight feeding    .fitted  .resid  .hat .sigma .cooksd .std.resid
         <dbl>  <dbl> <fct>        <dbl>   <dbl> <dbl>  <dbl>   <dbl>      <dbl>
 1        77.2  16.4  sugar_wat…    77.9  -0.695 0.128   25.0 2.30e-5    -0.0306
 2        56.2  12.6  sugar_wat…    69.9 -13.6   0.350   24.7 4.34e-2    -0.695 
 3        73.4  15.6  sugar_wat…    76.1  -2.68  0.147   25.0 4.11e-4    -0.119 
 4        85.2  24.4  sugar_wat…    94.7  -9.56  0.797   24.5 5.01e-1    -0.874 
 5        79.3  16.4  sugar_wat…    78.0   1.32  0.128   25.0 8.28e-5     0.0582
 6        77.3  14.8  sugar_wat…    74.5   2.87  0.180   25.0 6.21e-4     0.130 
 7        90.2  17.0  sugar_wat…    79.2  11.0   0.125   24.8 5.57e-3     0.484 
 8        93.0  18.2  sugar_wat…    81.6  11.4   0.144   24.8 7.19e-3     0.506 
 9       150.   11.1  blood         96.1  54.3   0.139   20.6 1.56e-1     2.41  
10        94.4   9.77 blood         93.2   1.15  0.169   25.0 9.08e-5     0.0518
# ℹ 14 more rows
R Code [zeigen / verbergen]
predictions(simple_2_fit)

 Estimate Std. Error     z Pr(>|z|)     S 2.5 % 97.5 %
     77.9       8.70  8.96   <0.001  61.4  60.8   94.9
     69.9      14.37  4.86   <0.001  19.7  41.7   98.0
     76.1       9.33  8.16   <0.001  51.4  57.8   94.4
     94.7      21.70  4.37   <0.001  16.3  52.2  137.2
     78.0       8.69  8.98   <0.001  61.6  60.9   95.0
     74.5      10.31  7.23   <0.001  40.9  54.3   94.7
     79.2       8.59  9.21   <0.001  64.8  62.3   96.0
     81.6       9.22  8.85   <0.001  60.0  63.6   99.7
     96.1       9.06 10.61   <0.001  84.9  78.3  113.8
     93.2       9.98  9.34   <0.001  66.5  73.7  112.8
     99.4       8.59 11.56   <0.001 100.3  82.5  116.2
    126.4      22.64  5.58   <0.001  25.3  82.1  170.8
     98.2       8.67 11.33   <0.001  96.5  81.3  115.2
     86.3      13.58  6.35   <0.001  32.2  59.7  112.9
    101.0       8.65 11.68   <0.001 102.3  84.1  118.0
     97.1       8.84 10.99   <0.001  90.9  79.8  114.4
     90.1      12.68  7.11   <0.001  39.6  65.2  114.9
     90.8      10.59  8.57   <0.001  56.4  70.0  111.5
     96.3      20.50  4.70   <0.001  18.5  56.1  136.4
     92.7       8.91 10.40   <0.001  81.8  75.2  110.1
     93.0       9.34  9.95   <0.001  75.1  74.7  111.3
     92.6       8.81 10.51   <0.001  83.5  75.3  109.8
     91.9       8.70 10.56   <0.001  84.2  74.8  108.9
     90.0      12.95  6.95   <0.001  38.0  64.6  115.4

Type: response
R Code [zeigen / verbergen]
predictions(simple_2_fit, by = "feeding")

     feeding Estimate Std. Error     z Pr(>|z|)     S 2.5 % 97.5 %
 sugar_water     79.0       8.59  9.19   <0.001  64.5  62.1   95.8
 blood           99.7       8.59 11.61   <0.001 101.1  82.9  116.5
 ketchup         92.1       8.59 10.73   <0.001  86.8  75.3  109.0

Type: response
R Code [zeigen / verbergen]
tibble(weight = simple_2_tbl$weight,
       jump_length = simple_2_tbl$jump_length, 
       feeding = simple_2_tbl$feeding,
       estimate = predictions(simple_2_fit)$estimate) |> 
  ggplot(aes(weight, estimate, shape = feeding)) +
  geom_point(aes(weight, jump_length), color = "blue") +
  geom_point(color = "red") +
  geom_line(aes(y = predict(simple_2_fit))) +
  geom_hline(yintercept = avg_predictions(simple_2_fit, by = "feeding")$estimate)

84.4 Weitere R Pakete

Das R Paket {modelbased}

84.5 Analyse von Zeitreihen

Hier nochmal {mgcv} und {gamm4}

Introduction to Generalized Additive Mixed Models

s() und Interaktion mit s(x_1, by = f_1)

Referenzen