5. Sitzung – Kategoriale UVs
Orga
Kategoriale UVs
Basisformel bivariat
Y = b_1 + b_2X_2 + e
Skalenniveaus mit Ausprägungen A, B, C
gender | Mittelwerte | Diff_zu_männlich |
---|---|---|
weiblich | 3.888 | 0.403 |
männlich | 3.486 | 0.000 |
is doch völlig egal | 4.667 | 1.181 |
non-binär | 3.786 | 0.300 |
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
1.366 | 57.41 | 0.177 | two.sided | 0.2 | -0.093 | 0.494 |
Regression mit Dummy
Y = b_1 + b_2D_2 + e
Kategorien | B | std.error | t | p.value |
---|---|---|---|---|
Konstante | 3.688 | 0.124 | 29.747 | 0.000 |
weiblich | 0.200 | 0.141 | 1.420 | 0.158 |
Regressionsgleichung
\begin{align} Fem\_Mean\_IDX & = b_1 + b_2\cdot weiblich + e\\ & \text{das führt zu:}\\ Fem\_Mean\_IDX & = b_1 + b_2 \cdot 0 + e & \text{wenn weiblich = 0 (m)}\\ & = b_1 + b_2 \cdot 1 + e & \text{wenn weiblich = 1 (w)}\\ & \text{also:}\\ Fem\_Mean\_IDX & = b_1 + e & \text{wenn weiblich = 0 (m)}\\ & = (b_1 + b_2) + e & \text{wenn weiblich = 1 (m)} \end{align} b_2 ist also die Mittelwertdifferenz zwischen der 0-Gruppe und der 1-Gruppe. Der Unterschied wird mit einem t-Test in der Regression getestet.
Kategoriale umkodieren
Kategoriale Variablen können in Dummys umkodiert (case_match
) werden. Für jede Ausprägung der Kategorialen wird eine Dummy angelegt mit 1, wenn die jeweile Ausprägung zutrifft und 0, wenn nicht.
die letzte Dummy ergibt sich
Wenn eine kategoriale 3 Ausprägungen daraus 3 Dummys gebaut werden, ergibt sich die letzte Dummy aus den ersten beiden!
Kategoriale | D_A | D_B | D_C |
---|---|---|---|
A | 1 | 0 | 0 |
A | 1 | 0 | 0 |
B | 0 | 1 | 0 |
C | 0 | 0 | 1 |
A | 1 | 0 | 0 |
B | 0 | 1 | 0 |
A | 1 | 0 | 0 |
Referenzkategorie weglassen
Wenn wir Dummys für eine Kategoriale in eine Regression aufnehmen wollen, müssen wir immer eine Kategorie weglassen, die wir dann die Referenzkategorie nennen.
Regressionsgleichung
\begin{align*} Fem\_Mean\_IDX & = b_1 + b_2 \cdot weiblich + b_3 \cdot nonbinär + e\\ Fem\_Mean\_IDX & = b_1 + e \quad \text{wenn weiblich = 0 und nonbinär = 0 (m)}\\ & = b_1 + b_2 + e \quad \text{wenn weiblich = 1}\\ & = b_1 + b_3 + e \quad \text{wenn nonbinär = 1} \end{align*}
In Worten
Wenn Dummyvariablen für die unterschiedlichen Ausprägugnen einer polytomen Variablen stehen, steht die Konstante für die Referenzkategorie (muss es geben, da sonst perfekte Multikollinearität herrscht). Die übrigen b’s stehen für die Mittelwertdifferenz zwischen den anderen Ausprägungen und der Referenzkategorie und werden mit t-Test (der Regression) auf Signifikanz getestet.
Die Gleichung
\begin{align} Y & = b_1 + b_2D_2 + b_3X_3 + e \\ \end{align}
In Worten
Wenn ein Dummyvariable D (zB “gender”) mit b2 in eine Regressionsgleichung eingeführt wird, dann ergeben sich zwei Parralelen mit dem Abstand von b_2.
Die Mittelwert-Indices
Kategorien | B | std.error | t | p.value |
---|---|---|---|---|
Konstante | 3.117 | 0.544 | 5.730 | 0.000 |
PS_Mean_IDX | -0.322 | 0.174 | -1.852 | 0.066 |
weiblich | 0.938 | 0.235 | 3.999 | 0.000 |
Stat_Mean_IDX | |||
Predictors | Estimates | CI | p |
(Intercept) | 3.07 | 1.95 – 4.20 | <0.001 |
PS Mean IDX | -0.32 | -0.66 – 0.03 | 0.073 |
weiblich | 0.97 | 0.45 – 1.48 | <0.001 |
nonbinär | 0.13 | -0.87 – 1.14 | 0.793 |
Observations | 166 | ||
R2 / R2 adjusted | 0.113 / 0.097 |
Hintegrund
Beim Simpsons-Paradox haben gibt es mehrere Gruppen den gleichen Anstieg, aber in der UV und der AV unterschiedliche Level. Berücksichtigt man die Gruppen nicht, wird ein falscher Zusammenhang geschätzt. #Unterspezfikation
Bespiel Impfung
Oft haben Gruppen von geimpften Personen eine höhere Sterblichkeit betreffend der Krankheit, gegen die sie sich impfen lassen. Das liegt aber daran, dass sich vulnerable Personen eher impfen lassen.
Note
Wie beschäftigen uns mit Interaktionen zwischen Dummys und metrischen Variablen (slope dummys).
E5.1 Was ist eine Dummyvariable?
E5.2 Wie viele Dummyvariablen brauchen Sie, um die volle Information einer kategorialen Variablen mit vier Ausprägungen abzubilden?
E5.3 Wie würden Sie eine kategoriale UV mit drei Ausprägungen in einer Regressionsgleichung darstellen?
E5.4 Wenn eine Kovariate in einer Regression unterschiedliche Mittelwerte für zwei Gruppen haben soll, wie würden Sie die Regressionsgleichung aufstellen?
E5.5 Was sagt in einer Regression mit einer Dummy als UV a) das b_1 und b) das b_2 aus?
E5.6 Was sagt in einer Regression mit einer Dummy und eine metrischen Variablen das b_2 der Dummy aus?
MC 5.1: Sind folgende Aussagen richtig oder falsch?
MC_5_1 = [
["Dummyvariablen haben immer die Ausprägungen 1 und 2.", "falsch"],
["In einer Regression mit einer Dummy als UV, gibt das b2 den Mittelwertunterschied der AV wieder", "richtig"],
["Baut man für jeder Ausprägung einer kategorialen UV eine Dummy, kann die Regression nicht berechnet werden.", "richtig"],
["Bei einer Regression mit einer Dummyvariablen, gibt die Konstante b1 den Mittelwert der 0-Gruppe wieder.", "richtig"]
]
viewof answers_5_1 = quizInput({
questions: MC_5_1,
options: ["richtig", "falsch"]
})
Punkte_5_1 = {
const Sum =
(answers_5_1[0] == MC_5_1[0][1])*1 +
(answers_5_1[1] == MC_5_1[1][1])*1 +
(answers_5_1[2] == MC_5_1[2][1])*1 +
(answers_5_1[3] == MC_5_1[3][1])*1
var Punkte_5_1 = Sum - 2
if (Punkte_5_1 < 1) {Punkte_5_1 = 0}
return(Punkte_5_1)
}
Punkte:
MC 5.2: Sind folgende Aussagen richtig oder falsch?
MC_5_2 = [
["R macht aus einer kategorialen Variablen (aka Faktor) immer genausoviele Dummys, wie der Faktor Ausprägungen hat.", "falsch"],
["Der t-Test einer Dummyvariablen prüft, ob es einen Mittelwertunterschied zwischen den beiden Gruppen.", "richtig"],
["Liegt der p-Wert einer Dummy über .05, ist der Mittelwertunterschied zwischen den Gruppen nicht signifikant.", "richtig"],
["Das BETA einer Dummyvariablen ist nicht interpretierbar.", "falsch"]
]
viewof answers_5_2 = quizInput({
questions: MC_5_2,
options: ["richtig", "falsch"]
})
Punkte_5_2 = {
const Sum =
(answers_5_2[0] == MC_5_2[0][1])*1 +
(answers_5_2[1] == MC_5_2[1][1])*1 +
(answers_5_2[2] == MC_5_2[2][1])*1 +
(answers_5_2[3] == MC_5_2[3][1])*1
var Punkte_5_2 = Sum - 2
if (Punkte_5_2 < 1) {Punkte_5_2 = 0}
return(Punkte_5_2)
}
Punkte:
MC 5.3: Sind folgende Aussagen richtig oder falsch?
MC_5_3 = [
["Bestehen in einer Regression die UVs aus einer Dummy und zwei metrischen Variablen, ergeben sich zwei Ebenen, die sich nicht berühren.", "richtig"],
["In einer Regression mit einem Faktor der drei Ausprägungen hat und einer metrischen Variablen, haben die drei Gruppen unterschiedliche Anstiege.", "falsch"],
["Besteht eine Regression aus zwei Dummys für eine kategoriale mit drei Ausprägungen, kann Multikollinearität ausgeschlossen werden.", "falsch"],
["In R kann man einen Faktor einfach so in eine Regressionsgleichung tun, also z.B. lm(Y ~ Faktor, data = DATEN)", "richtig"]
]
viewof answers_5_3 = quizInput({
questions: MC_5_3,
options: ["richtig", "falsch"]
})
Punkte_5_3 = {
const Sum =
(answers_5_3[0] == MC_5_3[0][1])*1 +
(answers_5_3[1] == MC_5_3[1][1])*1 +
(answers_5_3[2] == MC_5_3[2][1])*1 +
(answers_5_3[3] == MC_5_3[3][1])*1
var Punkte_5_3 = Sum - 2
if (Punkte_5_3 < 1) {Punkte_5_3 = 0}
return(Punkte_5_3)
}
Punkte:
MC 5.4: Sind folgende Aussagen richtig oder falsch?
MC_5_4 = [
["Hat man zwei unabhängige Dummys (zB Geschlecht und Abstimmungsteilnahme) in einem Modell, gibt es zwei Referenzkategorien.", "richtig"],
["Ist die AV eine Dummyvariable, gibt das b1 den Mittelwertunterschied zwischen den UV-Gruppen wieder.", "falsch"],
["Ist die AV eine Dummyvariable, wird in der Regel eine logistische Regression gerechnet.", "richtig"],
["Hat man zwei metrische Variablen als UVs, müssen sie in zwei Dummys umkodiert werden.", "falsch"]
]
viewof answers_5_4 = quizInput({
questions: MC_5_4,
options: ["richtig", "falsch"]
})
Punkte_5_4 = {
const Sum =
(answers_5_4[0] == MC_5_4[0][1])*1 +
(answers_5_4[1] == MC_5_4[1][1])*1 +
(answers_5_4[2] == MC_5_4[2][1])*1 +
(answers_5_4[3] == MC_5_4[3][1])*1
var Punkte_5_4 = Sum - 2
if (Punkte_5_4 < 1) {Punkte_5_4 = 0}
return(Punkte_5_4)
}
Punkte:
MC 5.5: Sind folgende Aussagen richtig oder falsch?
MC_5_5 = [
['Das Simpsons-Paradox stammt von der Serie "Die Simpsons"', "falsch"],
["Das Simpsons-Paradox gründet auf der Unterspezifikation eines Modells.", "richtig"],
["Das Simpsons-Paradox erklärt, warum bei Gruppenvergleichen die Homerskedastizität keine Rolle spielt.", "falsch"],
["Das Simpsons-Paradox erklärt, warum man zu falschen Schlüssen kommt, wenn man Gruppenunterschiede nicht berücksichtigt", "richtig"]
]
viewof answers_5_5 = quizInput({
questions: MC_5_5,
options: ["richtig", "falsch"]
})
Punkte_5_5 = {
const Sum =
(answers_5_5[0] == MC_5_5[0][1])*1 +
(answers_5_5[1] == MC_5_5[1][1])*1 +
(answers_5_5[2] == MC_5_5[2][1])*1 +
(answers_5_5[3] == MC_5_5[3][1])*1
var Punkte_5_5 = Sum - 2
if (Punkte_5_5 < 1) {Punkte_5_5 = 0}
return(Punkte_5_5)
}
Punkte:
Punkte_5_max = 10
Punkte_5_Gesamt = Punkte_5_1 + Punkte_5_2 + Punkte_5_3 + Punkte_5_4 + Punkte_5_5
Prozent_5_Gesamt = round(100*Punkte_5_Gesamt/Punkte_5_max, 0)
Note_5_grob = round((round(Punkte_5_Gesamt/Punkte_5_max,1)*10+2)/2, 1)
Insgesamt von Punkten, was % und etwa einer entspricht.
round = (n, places) => {
if (!places) return Math.round(n);
const d = 10 ** places;
return Math.round(n * d) / d;
}
function quizInput({ questions, options}) {
let answers = questions.map(() => null);
let root = htl.html`<div
style="
display: grid;
grid-template-columns: 10% 10% 70% 10%;"
>
${options.map(
(opt) => htl.html`<div style="font-weight: bold; font-size: HUGE">${opt}</div>`
)}
<div style="font-weight: bold">Aussagen</div>
<div style="font-weight: bold"></div>
${Array.from(questions.entries(), ([i, [question, correct]]) =>
quizInputRow({
question,
options,
correct,
onChange: (newAnswer) => {
answers[i] = newAnswer;
root.value = answers;
root.dispatchEvent(new CustomEvent("input"));
}
})
)}
</div>`;
root.value = answers;
return root;
}
function quizInputRow({
question,
options,
correct,
onChange = () => {}
}) {
let root = htl.html`<div>`;
function setAnswer(answer, initial = false) {
morph(
root,
htl.html`<div style="display: contents">
<form style="display: contents">
${options.map(
(opt) =>
htl.html`<label> </label>
<input
name=${question}  
type="radio"
value="${opt}"
checked=${opt === answer}
onChange=${() => setAnswer(opt)}
>
</input>`
)}
</form>
<div>${question}</div>
<div>   ${
answer === null ? "" : answer === correct ? "💚" : "❌"
}</div>
</div>`
);
root.value = answer;
if (!initial) {
root.dispatchEvent(new CustomEvent("input"));
onChange(answer);
}
}
setAnswer(null, true);
return root;
}
morph = require("https://bundle.run/nanomorph@5.4.2")
MathJax = require("https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML")
.catch(() => window.MathJax)
.then(MathJax => {
MathJax.Hub.Config({
CommonHTML: { scale: 110 }, // scaling to get the same size as katex (but katex still has more spacing between lines...)
tex2jax: { inlineMath: [["$", "$"], ["\\(", "\\)"]] },
displayMath: [["$$", "$$"], ["\\[", "\\]"]],
processEscapes: true,
TeX: { extensions: ["autoload-all.js"] },
});
return new Promise(resolve =>
MathJax.Hub.Register.StartupHook("End", () => resolve(MathJax))
);
})
:::
Fretwurst | Statistik Aufbau: Kategoriale UVs