Kategorien als Einflussgrößen

Die bisherigen Artikel zur linearen Regression haben sich mit einem Beispiel beschäftigt, in dem wir die Ringgröße für eine Freundin möglichst genau schätzen wollen, um ihr unbemerkt einen (passenden!) Ring zu kaufen.

Zuerst haben wir die Ringgröße anhand ihrer Körpergröße geschätzt (eine einfache lineare Regression). Danach haben wir zusätzlich ihr Gewicht und ihr Alter verwendet, um mit drei Einflussgrößen eine genauere, sicherere Schätzung zu bekommen (die multiple lineare Regression).

Alle diese Variablen waren verhältnisskaliert, also Zahlen, die in diesem Fall von 0 bis unendlich gehen können. Es gibt aber nun noch andere Variablentypen, z.B. nominalskalierte Variablen, wie etwa der Beruf einer Person. Was wäre zum Beispiel, wenn unsere Freundin Handwerkerin ist, und wir wissen, dass Handwerker tendenziell kräftigere, größere Finger haben als Büroarbeiter?

Diese Information ist sicher hilfreich für uns, und wir möchten sie in unserer Regression berücksichtigen.

Wie behandelt man eine ja/nein-Kovariable?

Denken wir nochmal kurz zürück an das Beispiel aus dem Artikel zur einfachen linearen Regression: Wir haben eine EInflussgröße \(x\), die Körpergröße, die stetig und intervallskaliert ist. Die Zielgröße \(y\), die Ringgröße, sagen wir nun vorher durch eine Gerade:

Diese Gerade wird durch zwei Parameter, \(a\) und \(b\) beschrieben:

\[ y = a + b \cdot x \]

In unserem Beispiel haben wir die Parameter bestimmt als \(a = 2.8457\) und \(b = 0.2836\), die „fertige“ Regressionsgerade, die man auch in dem Bild oben sieht, lautet also

\[y = 2.8457 + 0.2836 \cdot x\]

Wie würde aber nun ein Regressionsmodell aussehen, das nur aus einer ja/nein-Kovariable besteht – z.B. die Kovariable „Handwerker“? Für dieses kurze Gedankenexperiment ignorieren wir die Körpergröße also.

Wir verwenden dieselbe Gleichung für das Modell, \( y = a + b \cdot x \), aber die Kovariable \(x\) kann nur die Werte „ja“ und „nein“ annehmen. Wir müssen die zwei Werte natürlich in zwei Zahlen kodieren. Die Wahl die das spätere Rechnen am einfachsten macht, ist die 0 für „nein“, und die 1 für „ja“. Für eine Person wäre also \(x=1\) wenn sie einen Handwerkerberuf hat, und \(x=0\), wenn nicht.

Diese Wahl hat einen schönen Vorteil: Die Gleichung wird sehr einfach. Wenn nämlich \(x=0\) ist, dann wird aus der Regressionsgleichung nur noch \(y = a\), weil ja der zweite Teil \(b\cdot x = 0\) (da \(x=0\) ist). Schauen wir uns mal eine „fertige“ Regression mit fiktiven Werten als Beispiel an:

\[y = 48.5 + 1.5 \cdot x \]

Was bedeutet das nun, wenn die Kovariable \(x\) für die Frage „Handwerker?“ steht? Die Variable kann nur zwei Werte annehmen, entweder 0 oder 1. Das heißt auch, dass die Vorhersage für \(y\) nur zwei Werte annehmen kann: Für Nichthandwerker, also z.B. Büroangestellte, ist ja \(x=0\), also wird die Vorhersage für die Ringgröße \(y = 48.5 + 0 \cdot 1.5 = 48.5\) sein. Und für Handwerker prognostizieren wir \(y = 48.5 + 1 \cdot 1.5 = 50\), also einen Ring der Größe 50.

Dieses Modell ist auch sehr einfach zu interpretieren: Die Vorhersage für Nichthandwerker liest man direkt aus dem Intercept, also \(a\), ab: 48.5cm. Und der Parameter \(b\) sagt uns, wieviel größer (oder evtl. kleiner) die Vorhersage für Handwerker wird: 1.5cm.

Das ist dann auch schon fast das ganze Geheimnis hinter kategorialen Kovariablen.

Stetige und kategoriale Einflussgrößen gemischt

Wir haben ja schon ein Regressionsmodell mit mehreren Einflussgrößen gesehen, die multiple Regression. Wir können die eben betrachtete kategoriale Einflussgröße nun genauso wie eine stetige Einflussgröße zusätzlich in das Modell aufnehmen.

Nennen wir die Einflussgröße für die Frage „Handwerker?“ \(x_1\), und die bereits bekannte EInflussgröße für die Körpergröße \(x_2\). Dann haben wir das folgende Regressionsmodell:

\[y = a + b_1 x_1 + b_2 x_2\]

Hierbei kann \(x_1\) nur die Werte 0 oder 1 annehmen, aber \(x_2\) als stetige Kovariable alle möglichen Körpergrößen.

Wenn wir nun Daten sammeln, und daraus die Parameter \(a, b_1, b_2\) schätzen wollen, kommt vielleicht das folgende fertige Modell dabei raus:

\[y = 0.16 + 0.28\cdot x_1 + 0.94\cdot x_2\]

Für eine Person mit \(x_1=168\text{cm}\) Körpergröße und einem Job als Handwerker (\(x_2=1\)) prognostizieren wir also eine Ringgröße von \(y=0.16+0.28\cdot 168 + 0.94\cdot 1 = 48.14\) – also sollte ein Ring der Größe 48 hoffentlich passen.

Einflussgrößen mit mehr als zwei Kategorien

Ein Problem gibt es noch: Wie gehen wir mit einer Einflussgröße vor, die nicht nur zwei mögliche Ausprägungen „ja/nein“, hat, sondern mehrere?

Ein Beispiel: Eine neue Einflussgröße „Sport“. Für die Ringgröße ist wohl wichtig, ob die Person Gewichte stemmt oder Marathon läuft. Wir haben also z.B. die Auswahlmöglichkeiten „kein Sport“, „Joggen“ „Klettern“, „Gewichtheben“.

Es wäre falsch, nun einfach eine Variable \(x_1\) anzulegen, die für diese Sportarten die Werte „kein Sport = 0“, „Joggen = 1“, „Klettern = 2“, und „Gewichtheben = 3“ annehmen kann. Das Problem ist, dass wir dann nur einen Parameter \(b_1\) erhalten, und z.B. der Unterschied zwischen „kein Sport“ und „joggen“ genauso groß sein muss wie der zwischen „Joggen“ und „Klettern“. Das kann man nachprüfen, indem man für Nichtsportler \(0\cdot b_1\) vergleicht mit \(1\cdot b_1\) für Jogger und \(2\cdot b_1\) für Kletterer. Falls sich aber die Ringgröße z.B. zwischen Joggern und Kletterern gar nicht unterscheidet, könnte unser Modell das gar nicht abbilden. Fachlich heißt das: Wir unterstellen einen linearen Zusammenhang, wo es gar keinen gibt.

WIe lösen wir dieses Problem nun am besten?

Wir müssen einen kleinen Umweg gehen, indem wir die eine Einflussgröße mit vier Kategorien aufteilen in drei separate Einflussgrößen mit jeweils zwei Kategorien „ja/nein“:

  • \(x_1\): Joggen, ja/nein?
  • \(x_2\): Klettern, ja/nein?
  • \(x_3\): Gewichtheben, ja/nein?

Für eine bestimmte Person ist dann höchstens eine dieser drei Einflussgrößen 1, alle anderen sind 0. Ein Gewichtheber hätte also \(x_1=0\), \(x_2 = 0\), und \(x_3=1\). Für den Fall „kein Sport“ brauchen wir keine extra Einflussgröße, denn diese Möglichkeit ergibt sich automatisch, wenn wir \(x_1=0\), \(x_2=0\), und \(x_3=0\) setzen – dann bleibt ja keine andere Möglichkeit übrig. (Es hat auch einen mathematischen Grund, warum wir das so lösen müssen – die Regression wäre nämlich sonst nicht eindeutig lösbar – aber darauf möchte ich hier nicht eingehen.)

Ein einfaches lineares Modell mit nur der Einflussgröße „Sport?“ sähe also so aus:

\[y = a + b_1 \cdot x_1 + b_2 \cdot x_2 + b_3\cdot x3\]

Es hätte vier Parameter. Man kann sich ausrechnen, dass in diesem Modell die vorhergesagte Ringgröße für jemanden der keinen Sport macht, genau \(a\) ist – denn alle anderen \(x_i\) sind ja Null.

Die Kontrolle, ob du diesen Teil verstanden hast, ist, dass du erklären kannst, warum unsere Vorhersage für einen Gewichtheber nun genau \(a+b_3\) ist. Ich hoffe, ich konnte das hier gut genug erklären – falls nicht, kannst du in den Kommentaren unten gerne nochmal nachfragen, ich passe den Artikel dann nochmal an.

Beispielaufgabe

Ein Forschungslabor untersucht die Auswirkung eines neuen Medikaments auf die Reaktionszeit (in Millisekunden) von Patienten. Es möchte erstens herausfinden, ob die Höhe der Dosis einen Einfluss hat, und zweitens, ob die Schwere der Krankheit einen Einfluss hat. Die Einflussgröße \(x_1\), die Dosis, wird in Milligramm (mg) als stetige Variable gemessen, und die Schwere der Krankheit als kategoriale Variable mit den Ausprägungen „gesund“, „leicht krank“, und „schwer krank“. Die kategoriale Variable wird durch eine Dummykodierung in das Modell eingefügt: Dabei wird „gesund“ als Referenzkategorie verwendet, und „leicht krank“ wird durch \(x_\text{leicht}\) dargestellt (d.h. \(x_\text{leicht}=1\) wenn der Patient „leicht krank“ ist, und \(x_\text{leicht}=0\) falls er gesund oder schwer krank ist). Die Einflussgröße \(x_\text{schwer}\) ist 1 wenn der Patient „schwer krank“ ist, und 0 falls er gesund oder leicht krank ist. Für eine gesunde Person ist also \(x_\text{leicht}=0\) und \(x_\text{schwer}=0\).

Es wurden 20 Patienten untersucht, und die Ergebnisse der Regression in der folgenden Tabelle zusammengefasst:

Parameter Schätzer p-Wert
\(a\) 328.22 0.000
\(b_1\) 0.95 0.003
\(b_\text{leicht}\) 47.67 0.406
\(b_\text{schwer}\) 141.21 0.019

Die Regressionsgerade für die Zielgröße \(y\), die Reaktionszeit in Sekunden, lautet also:

\[ y = 328.22 + 0.95 \cdot x_1 + 47.67 \cdot x_\text{leicht} + 141.21 \cdot x_\text{schwer} \]

  • a) Interpretiere die drei Parameter \(b_1, b_\text{leicht}, b_\text{schwer}\). Was bedeuten sie für die Reaktionszeit von Patienten?
  • b) Interpretiere die drei p-Werte für die drei \(b\)-Parameter. Wir geben ein Signifikanzniveau von \(\alpha=0.05\) vor.
  • c) Prognostiziere die erwartete Reaktionszeit für einen gesunden Patienten, der eine Dosis von 100mg bekommt.
  • d) Prognostiziere die erwartete Reaktionszeit für einen leicht kranken Patienten, der eine Dosis von 10mg bekommt.
Lösung (klick)

a)

\(b_1\) ist der Einfluss für die metrische Variable „Dosis“. Das bedeutet hier: Wenn die Dosis für einen Patienten um 1mg erhöht wird, erwarten wir, dass seine Reaktionszeit um 0.95 Millisekunden steigt (Vorsicht: nicht „um 0.95 Sekunden“! Denn in der Datenerhebung wurde sie in Millisekunden gemessen). Der Einfluss ist positiv, d.h. eine höhere Dosis führt zu einer höheren Reaktionszeit

Der Parameter \(b_\text{leicht}\) beschreibt, wie sehr sich die Reaktionszeit eines leicht kranken Patienten gegenüber eines gesunden Patienten unterscheidet. Der gesunde Patient hat in diesem Modell keinen Parameter, er ist die Referenzkategorie (siehe auch Aufgabe c)). Die Parameter für eine kategoriale Variable bschreiben hier immer die Abweichung zur Referenzkategorie. Ein leicht kranker Patient hat also eine um \(b_\text{leicht}\) = 47.67 Millisekunden langsamere (d.h. höhere) Reaktionszeit als ein gesunder Patient.

Analog dazu hat ein schwer kranker Patient eine um \(b_\text{schwer}\) = 141.21 Millisekunden höhere Reaktionszeit als ein gesunder Patient.

Man kann sich nun auch ausrechnen, dass der Unterschied eines schwer kranken zu einem leicht kranken Patienten genau die Differenz \(b_\text{schwer} – b_\text{leicht}\) ist: \(141.21 – 47.67 = 93.54\). Ein schwer kranker Patient hat also im Mittel eine um 93.54 Millisekunden höhere Reaktionszeit als ein leicht kranker.

b)

\(b_1\) ist mit einem p-Wert von 0.003 signifikant, denn der p-Wert ist kleiner als das vorgegebene Signifikanzniveau von \(\alpha=0.05\). Damit hat dieses Regressionsmodell gezeigt, dass die Dosis einen signifikanten Einfluss auf die Reaktionszeit hat.

\(b_\text{leicht}\) ist mit einem p-Wert von 0.406 nicht signifikant. Wir konnten nicht nachweisen, dass ein leicht kranker Patient langsamer reagiert als ein gesunder.

\(b_\text{schwer}\) ist mit einem p-Wert von 0.019 allerdings wieder signifikant. Wir konnten also hier nachweisen, dass ein schwer kranker Patient langsamer reagiert als ein gesunder.

c)

Wir setzen einfach in die Regressionsgleichung ein:

– \(x_1 = 100\)
– \(x_\text{leicht} = 0\)
– \(x_\text{schwer} = 0\)

Damit erhalten wir als Prognose:

\[ y = 328.22 + 0.95 \cdot 100 + 47.67 \cdot 0 + 141.21 \cdot 0 = 423.22 \]

Wir erwarten also eine Reaktionszeit von 423.22 Millisekunden.

d)

Analog zu Aufgabe c), allerdings ist der Patient jetzt leicht krank:

– \(x_1 = 10\)
– \(x_\text{leicht} = 1\)
– \(x_\text{schwer} = 0\)

Damit erhalten wir als Prognose:

\[ y = 328.22 + 0.95 \cdot 10 + 47.67 \cdot 1 + 141.21 \cdot 0 = 385.39 \]

Wir erwarten also eine Reaktionszeit von 385.39 Millisekunden.

Klausuraufgabe

In einer Großstadt wird die Abgasbelastung durch Autos zu einem Problem. Mit einem Regressionsmodell möchte man nun ausrechnen, wovon die Belastung abhängig ist. Man vermutet einen Zusammenhang mit der Außentemperatur. Außerdem vermutet man, dass an Arbeitstagen die Belastung wegen der Berufspendler höher ist.

Als Zielgröße verwendet man \(y\), den Anteil an Kohlenmonoxid (kurz: CO) in der Luft. Er wird in Milligramm pro Kubikmeter (\(\frac{\text{mg}}{m^3}\)) gemessen, und im Bereich von 0 bis 5 ist alles im grünen Bereich. Eine hohe Belastung ist ab ca. 8 \(\frac{\text{mg}}{m^3}\) gegeben.

Die Einflussgrößen sind \(x_1\), die Außentemperatur in °C, sowie eine kategoriale Variable für den Arbeitstag, mit den Ausprägungen „Arbeitstag“, „Wochenende“, und „Feiertag“. Die kategoriale Variable wird durch eine Dummykodierung in das Modell eingefügt: Dabei wird „Arbeitstag“ als Referenzkategorie verwendet, und „Wochenende“ wird durch \(x_\text{WE}\) dargestellt (d.h. \(x_\text{WE}=1\) wenn an diesem Tag Wochenende ist, und \(x_\text{WE}=0\) falls nicht). Die Einflussgröße \(x_\text{F}\) ist 1 wenn es Feiertag ist, und 0 falls es Arbeitstag oder Wochenende ist. An einem Arbeitstag ist also \(x_\text{WE}=0\) und \(x_\text{F}=0\).

Über das letzte Jahr wurde an 365 Tagen die CO-Belastung gemessen und ein Regressionsmodell gerechnet. Die Ergebnisse sind in der folgenden Tabelle zusammengefasst:

Parameter Schätzer p-Wert
\(a\) 1.94 0.000
\(b_1\) 0.03 0.019
\(b_\text{WE}\) -2.01 0.006
\(b_\text{F}\) -1.98 0.623

Die Regressionsgerade für die Zielgröße \(y\), die Reaktionszeit in Sekunden, lautet also:

\[ y = 1.94 + 0.03 \cdot x_1 – 2.01 \cdot x_\text{WE} – 1.98 \cdot x_\text{F} \]

a) Interpretiere die drei Parameter \(b_1, b_\text{WE}, b_\text{F}\). Was bedeuten sie für die CO-Belastung in der Luft?

b) Interpretiere die drei p-Werte für die drei \(b\)-Parameter. Wir geben ein Signifikanzniveau von \(\alpha=0.05\) vor.

c) Prognostiziere die erwartete CO-Belastung an einem Arbeitstag mit -8°C Temperatur.

d) Prognostiziere die erwartete Reaktionszeit an einem Feiertag mit 24°C Temperatur.

Lösung (klick)

a)

Der Parameter \(b_1\) sagt uns, um wieviel sich \(y\), also die CO-Konzentration, verändert, wenn die Außentemperatur um 1°C steigt. Da \(b_1\) hier 0.03 ist, haben wir einen positiven Zusammenhang: Die CO-Konzentration steigt mit höherer Außentemperatur, und zwar um 0.03 \(\frac{\text{mg}}{m^3}\) pro zusätzlichem °C.

Da \(b_\text{WE}\) negativ ist, hat das Wochenende einen negativen Einfluss auf die CO-Konzentration. An Wochenenden erwarten wir 2.01 \(\frac{\text{mg}}{m^3}\) weniger CO in der Luft.

An Feiertagen erwarten wir ebenso weniger CO in der Luft, nämlich 1.98 \(\frac{\text{mg}}{m^3}\) weniger.

Da \(b_\text{WE}\) ungefähr gleich groß ist wie \(b_\text{F}\), können wir schon mal vermuten, dass es keinen Unterschied macht ob heute Wochenende oder Feiertag ist: Beide Situationen haben einen ähnlichen (negativen) Einfluss auf die Schadstoffkonzentration.

b)

\(b_1\) ist signifikant, da sein p-Wert mit 0.019 kleiner ist als \(\alpha=0.05\). Wir konnten also mit dieser Regression nachweisen, dass die Außentemperatur einen signifikanten Einfluss auf die CO-Konzentration in der Luft hat.

Ebenso ist \(b_\text{WE}\) signifikant. Am Wochenende ist die Luftqualität also nachweislich besser als an Arbeitstagen.

Aber \(b_\text{F}\) ist nicht signifikant – der p-Wert beträgt 0.623. Wir konnten hier nicht nachweisen dass an Feiertagen eine unterschiedliche CO-Konzentration herrscht wie an Arbeitstagen. Das kann allerdings daran liegen, dass unsere Stichprobe zu klein war: Wir hatten als Stichprobe nur ein Jahr, also \(n=365\), und es gibt nicht so viele Feiertage in 365 Tagen. Mit einer größeren Stichprobe könnte es sein, dass dieser Parameter auch noch signifikant wird.

c)

Unsere Regressionsgerade lautet:

\[ y = 1.94 + 0.03 \cdot x_1 – 2.01 \cdot x_\text{WE} – 1.98 \cdot x_\text{F} \]

Wir setzen also ein: \(x_1 = -8\) (Vorsicht mit dem Minus!), und \(x_\text{WE} = 0\), und \(x_\text{F}=0\). Damit erhalten wir:

\[ y = 1.94 + 0.03 \cdot (-8) – 2.01 \cdot 0 – 1.98 \cdot 0 = 1.7 \]

Wir erwarten also eine CO-Konzentration von \(1.7 \frac{\text{mg}}{m^3}\).

d)

Analog zu Aufgabe c) setzen wir hier ein: \(x_1 = 24\), und \(x_\text{WE} = 0\), und \(x_\text{F}=1\). Damit erhalten wir:

\[ y = 1.94 + 0.03 \cdot 24 – 2.01 \cdot 0 – 1.98 \cdot 1 = 0.68 \]

Wir erwarten also eine CO-Konzentration von \(0.68 \frac{\text{mg}}{m^3}\).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.