53 Marginal effect models
Letzte Änderung am 04. July 2025 um 08:35:42
“Life is difficult.” — Morgan Scott Peck, The Road Less Traveled
Dieses Kapitel wird in den nächsten Wochen geschrieben und ist damit meine aktuelle Großbaustelle. Ich plane zum Beginn des WiSe 2025/26 eine fertige Version des Kapitels erstellt zu haben. Während das Kapitel entsteht, funktioniert so manches dann nicht so wie es soll. Bitte daher hier dann abwarten.
Lange habe ich gebraucht um mich dazu durchzuringen das Kapitel zu den Marginal effect models (deu. marginale Effektmodelle, ungebräuchlich) zu schreiben. Ich werde hier bei dem englischen Begriff bleiben, den deutschen Begriff habe ich eher selten gehört und daher sind es für mich Marginal effect models. Insbesondere da der Begriff “marginal” auch sehr an gering oder minderwertig erinnert. Damit haben aber die Marginal effect models nicht im geringsten zu tun. Die Modelle sind sehr mächtig und können uns helfen wichtige Fragen an unsere Daten zu beantworten. Insbesondere die Dualität der beiden Pakete {emmeans}
für experimentelle Daten und {marginaleffects}
für beobachtete Daten ist spannend und möchte ich hier nochmal genauer betrachten. Neben diesen beiden Ecksteinen gibt es noch andere Pakete und ich werde auch hier einmal in die Pakete reinschauen. Anfangen kann ich aber nicht ohne Heiss (2022) mit seinem Blogpost Marginalia: A guide to figuring out what the heck marginal effects, marginal slopes, average marginal effects, marginal effects at the mean, and all these other marginal things are zu erwähnen. Vieles entlehnt sich direkt oder indirekt an seine Ausführungen. Wie immer habe ich etwas angepasst, wenn ich der Meinung war, dass es noch besser zu verstehen ist. Fangen wir also an Marginal effect models zu zerforschen.
53.1 Allgemeiner Hintergrund
“Statistics is all about lines, and lines have slopes, or derivatives. These slopes represent the marginal changes in an outcome. As you move an independent/explanatory variable, what happens to the dependent/outcome variable?” — Heiss (2022)
Wenn wir mit dem Verstehen und Zerforschen vorankommen wollen, dann können wir Heiss (2022) und Arel-Bundock et al. (2024) mit der Veröffentlichung Model to meaning — How to Interpret Statistical Models With marginaleffects for R and Python nicht ignorieren. Ich nutze jetzt eine etwas allgemeinere Erklärung der Marginal effect models und konzentriere mich erstmal auf ein normalverteiltes \(x\) sowie ein normalverteiltes \(y\). Daher haben wir hier in unserem \(x\) keine Gruppen vorliegen sondern einen klassischen Scatterplot mit Punkten als Beobachtungen. Wir können die Marginal effect models auch auf beliebige kategorielle \(x\) wie eben Behandlungsgruppen sowie jedes beliebige \(y\) anwenden, aber hier fangen wir einmal einfach an.
- Die zentrale Frage, die wir beantworten wollen:
-
Wenn sich das \(x\) um einen Wert oder eine Einheit erhöht, um wieviele Einheiten verändert sich dann der Wert von \(y\)?
In der folgenden Abbildung siehst du einmal zwei Scatterplots. In dem linkenm Scatterplot haben wir einen linearen Zusammenhang zwischen unseren \(x\)-Werten und den \(y\)-Werten. Wir können sagen, dass wenn sich \(x\) um einen Wert erhöht, dann erhöht sich auch y um einen konstanten Wert. Dieser konstante Wert um den sich die \(y\)-Werte mit ansteigenden \(x\) erhöhen, nennen wir auch die Steigung \(\beta_1\). In einem linearen Zusammenhang ist die Frage damit mit der Steigung der Geraden eigentlich beantwortet. Straigt \(x\) um einen Wert, dann steigt \(y\) um den Wert der Steigung \(\beta_1\) der Geraden. Spanndender wird die Sachlage in einem quadratischen Zusammenhang. Oder allgemeiner gesprochen, wenn wir keinen linearen Zusammenhang vorliegen haben. Jetzt ändert sich die Steigung von \(x\) in Abhängigkeit von dem betrachteten \(x\)! Wenn wir \(x\)-Werte links betrachten, dann leigt hier eher eine Steigung nahe Null vor. Wenn wir nach rechts laufen, dann sehen wir immer stärkere negative Steigungen. Und hier kommen dann die Marginal effect models ins Spiel. Wir können allgemein gesprochen uns mit den Marginal effect models für jedes \(x\) die Steigung wiedergeben lassen.
Text
Text
- Marginal effect
-
der statistische Effekt für kontinuierliche erklärende Variablen; die partielle Ableitung einer Variablen in einem Regressionsmodell; der Effekt eines einzelnen Schiebereglers.
- Conditional effect oder Gruppenkontrast (eng. group contrast)
-
der statistische Effekt für kategoriale erklärende Variablen; der Unterschied in den Mittelwerten, wenn eine Bedingung eingeschaltet ist und wenn sie ausgeschaltet ist; der Effekt eines einzelnen Schalters.
Unterschied zwischen {marginaleffects}
und {emmeans}
Das R Paket {marginaleffects}
und das R Paket R Paket {emmeans}
emmeans erstellt Durchschnittswerte und fügt sie dann ein; marginaleffects fügt alle Werte ein und erstellt dann Durchschnittswerte:
Is least squares means (lsmeans) statistical nonsense?
“To start off with, we should emphasize that the underpinnings of estimated marginal means – and much of what the emmeans package offers – relate more to experimental data than to observational data. In observational data, we sample from some population, and the goal of statistical analysis is to characterize that population in some way. In contrast, with experimental data, the experimenter controls the environment under which test runs are conducted, and in which responses are observed and recorded. Thus with experimentation, the population is an abstract entity consisting of potential outcomes of test runs made under conditions we enforce, rather than a physical entity that we observe without changing it.” — R Paket
{emmeans}
53.1.1 Steigung (eng. slopes)
53.1.2 Kontrafaktische Vergleiche (eng. counterfactual)
53.1.3 Vorhersagen (eng. predictions)
53.1.4 Hypothesen- und Äquivalenztests
53.2 Theoretischer Hintergrund
Wir oben schon erwähnt, kann dieses Kapitel nicht alle Themen der Marginal effects models abarbeiten. Daher präsentiere ich hier eine Liste von Literatur und Links, die mich für dieses Kapitel hier inspiriert haben. Nicht alles habe ich genutzt, aber vielleicht ist für dich was dabei.
- Ohne den Blogpost Marginalia: A guide to figuring out what the heck marginal effects, marginal slopes, average marginal effects, marginal effects at the mean, and all these other marginal things are von Heiss (2022) wäre dieses Kapitel nicht möglich gewesen.
53.3 Genutzte R Pakete
Wir wollen folgende R Pakete in diesem Kapitel nutzen.
R Code [zeigen / verbergen]
::p_load(tidyverse, gtsummary, marginaleffects, emmeans, scales,
pacman
conflicted)conflicts_prefer(dplyr::mutate)
conflicts_prefer(dplyr::summarize)
conflicts_prefer(dplyr::filter)
<- c("#000000", "#E69F00", "#56B4E9",
cb_pal "#009E73", "#F0E442", "#F5C710",
"#0072B2", "#D55E00", "#CC79A7")
##
<- label_number(style_negative = "minus", accuracy = 0.01)
nice_number <- label_pvalue(prefix = c("p < ", "p = ", "p > "))
nice_p <- function(x1, y1, slope) {
find_intercept <- slope * (-x1) + y1
intercept 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.
53.4 Daten
R Code [zeigen / verbergen]
<- read_excel("data/fleas_model_data.xlsx") |>
flea_model_tbl 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)
feeding | stage | jump_length | weight | count_leg | hatched | bonitur | infected |
---|---|---|---|---|---|---|---|
sugar_water | adult | 70.9 | 16.42 | 63.4 | 516.41 | 4 | infected |
sugar_water | adult | 50.75 | 12.62 | 53.96 | 363.5 | 1 | healthy |
sugar_water | adult | 62.22 | 15.57 | 120.44 | 303.01 | 2 | healthy |
… | … | … | … | … | … | … | … |
ketchup | juvenile | 41.08 | 7.18 | 423.07 | 429.18 | 4 | infected |
ketchup | juvenile | 49.68 | 6.6 | 550.97 | 629.58 | 5 | infected |
ketchup | juvenile | 43.28 | 4.19 | 873.28 | 192.66 | 5 | healthy |
Characteristic | healthy, N = 211 | infected, N = 271 |
---|---|---|
feeding | ||
sugar_water | 9 / 21 (43%) | 7 / 27 (26%) |
blood | 3 / 21 (14%) | 13 / 27 (48%) |
ketchup | 9 / 21 (43%) | 7 / 27 (26%) |
stage | ||
adult | 14 / 21 (67%) | 10 / 27 (37%) |
juvenile | 7 / 21 (33%) | 17 / 27 (63%) |
1 n / N (%) |