8. Sitzung – Dimensionsreduktion
Photo courtesy of Lisa Vogel
Allgemeine Fragen bitte ins Forum ⏎ entsprechende Teams-Anfragen oder Emails beantworte ich nicht mehr.
NICHT BLOSS SCREENSHOTS bei R-Problemen!!!
R-Übung 3 am Ende der Folien und auf unserer Seite unter 9 «Übung: Dimensionsreduktion».
LEF 8: Wesentlich zum Text Song et al. (2004).
Faktorenanalyse
Multikollinearität
In einem Koordinationsystem macht jede Variable eine Dimension auf, also 3 Variablen, 3 Achsen → 3D.
Korrelieren die Variablen stark miteinander, liegen sie auf einer Geraden, die nur eine Dimension hat. Man kann die Variablen auf diese eine Dimension reduzieren. Dann müssen wir uns nur noch um eine Variable (Index) «kümmern», statt um drei! Wir versuchen also eine Dimensionsreduktion.
Wenn wir mehrere Variablen (zB einer Skala) zu einer reduzieren können, können wir damit Multikollinearitätsprobleme lösen können.
x | |
---|---|
R101_16 | RAQ: Ich weine offen, wenn von zentraler Tendenz die Rede ist. |
R101_17 | RAQ: Ich falle in ein Koma, wenn ich eine Gleichung sehe. |
R101_03 | RAQ: Standardabweichungen begeistern mich. |
R101_04 | RAQ: Ich träume davon, dass Pearson mich mit Korrelationskoeffizienten angreift. |
R101_20 | RAQ: Ich kann nicht schlafen, weil ich an Signifikanzen denke. |
R101_21 | RAQ: Ich wache unter meiner Bettdecke auf und denke, dass ich unter einer Normalverteilung gefangen bin. |
R101_23 | RAQ: Wenn ich gut in Statistik bin, werden die Leute denken, ich sei ein Streber. |
R101_24 | RAQ: Ich mag Statistik, würde das aber nie vor meinen Freunden zugeben. |
Wie viel geht bei der Dimensionsreduktion durch die Faktoren verloren, bzw. was wird abgebildet?
Mit der Gesamtlösung kann man schauen, welchen Anteil der Varianz aller Faktoren durch die Faktorlösung abgebildet wird.
Wie gut werden die Variablen durch die Faktoren abgebildet?
Die Kommunalitäten und «Uniqueness» geben an, wie gut jede Variable durch die gebildeten Faktoren repräsentiert werden.
Was bedeuten die Faktoren?
Faktorladungen geben die Korrelationen der Faktoren mit jeder Variable an. Also welche Faktoren, welche Variablen repräsentieren? Dadurch kann den Faktoren ein Sinn und ein Name gegeben werden.
1. Prüfen, ob ein Set an Variablen für eine Faktorenanalyse geeignet ist
Korrelationsanalyse
KMO
2. Feststellen, wie viele latente Faktoren extrahiert werden sollten
Scree-Plot
Parallelanalyse
3. Interpretation der Faktoren
Berechnung der Faktorladungen
Identifikation der Faktoren (Interpretation)
Das Kaiser-Meyer-Olkin-Kriterium prüft, ob ein Set von Variablen geeignet ist für eine Faktorenanalyse.
Kommt es nicht gut raus, kann man Variablen mit kleinen Werten ausschliessen.
Kaiser-Meyer-Olkin factor adequacy
raq_items_tib <- DATEN |>
select(R101_01:R101_24) |>
# select(-c(R101_03:R101_04))|>
mutate(across(everything(), ~if_else(.x == -9, NA, .x))) |>
sjlabelled::remove_all_labels() |>
na.omit()
raq_items_tib |>
psych::KMO()
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = raq_items_tib)
## Overall MSA = 0.78
## MSA for each item =
## R101_01 R101_02 R101_03 R101_04 R101_05 R101_06 R101_07 R101_08 R101_09
## 0.85 0.83 0.55 0.67 0.87 0.77 0.88 0.69 0.72
## R101_10 R101_11 R101_12 R101_13 R101_14 R101_15 R101_16 R101_17 R101_18
## 0.73 0.62 0.88 0.90 0.81 0.80 0.79 0.80 0.76
## R101_19 R101_20 R101_21 R101_22 R101_23 R101_24
## 0.75 0.83 0.80 0.71 0.62 0.72
Die «factor number» über der 1-Linie («Eigen values» > 1) ist eine Empfehlung für die Anzahl an Faktoren, bei denen jeder Faktor mehr Varianz (Eigenwert > 1) auf sich vereint als die ursprünglichen Dimensionen.
Wie viele Faktoren soll es geben? Wie viele haben einen “Eigenvalue” > 1?
## Parallel analysis suggests that the number of factors = 4 and the number of components = NA
Skalenreliabilität
Skalenreliabilität ist die innere Konsistenz einer Skala. Der gängigste Koeffizient für die Skalenrelaiblität ist Cronbachs \alpha. Er geht von -\infty bis 1, wobei 1 wäre perfekt.
\alpha_{st}: standardisiertes Cronbach \alpha
K: Anzahl Elemente (Variablen) einer Skala
\overline{r}: Durchschnittliche Korrelation
Unrotiert
Beim Verfahren der Faktorenanalyse wird erst ein Faktor in die Variablen gelegt, der alle am besten erklärt. Dann kommt der zweite und optimiert den Rest der Varianz usw. Das ergibt ein Ungleichgewicht zwischen den Faktoren. Darum wird rotiert.
Orthogonale und oblique Rotation
Faktoren werden rotiert, damit jeder optimal Varianz erklärt. Wenn orthogonal rotiert wird, sind die Faktoren 100% unkorreliert. Nach obliquer Rotation sind die Faktoren leicht korreliert, geben aber die Variablen besser wieder.
Bei orthogonaler Rotation sind die Faktoren unkorreliert.
Orthogonal ist klarer interpretierbar …
Bei der obliquen dürfen sie leicht korrelieren.
… oblique gibt realistischere Ergebnisse.
Variable | MR1 | MR2 | MR3 | Complexity | Uniqueness |
---|---|---|---|---|---|
R101_07 | 0.74 | --- | --- | 1.02 | 0.40 |
R101_15 | 0.74 | --- | --- | 1.21 | 0.39 |
R101_13 | 0.71 | --- | --- | 1.03 | 0.43 |
R101_14 | 0.66 | --- | --- | 1.22 | 0.49 |
R101_06 | 0.66 | --- | -0.30 | 1.49 | 0.57 |
R101_02 | 0.55 | --- | --- | 1.09 | 0.65 |
R101_12 | 0.50 | 0.33 | --- | 1.88 | 0.61 |
R101_18 | 0.42 | --- | --- | 1.54 | 0.69 |
R101_10 | 0.35 | --- | --- | 1.15 | 0.85 |
R101_08 | --- | 0.75 | --- | 1.00 | 0.45 |
R101_11 | --- | 0.66 | --- | 1.24 | 0.57 |
R101_09 | --- | 0.61 | --- | 1.11 | 0.60 |
R101_05 | 0.35 | 0.55 | --- | 1.72 | 0.47 |
R101_22 | --- | 0.53 | --- | 1.15 | 0.66 |
R101_01 | 0.34 | 0.51 | --- | 1.75 | 0.54 |
R101_24 | --- | -0.45 | 0.40 | 2.06 | 0.65 |
R101_03 | --- | -0.35 | --- | 1.24 | 0.87 |
R101_23 | --- | -0.32 | --- | 2.27 | 0.81 |
R101_21 | --- | --- | 0.75 | 1.02 | 0.39 |
R101_04 | --- | --- | 0.70 | 1.15 | 0.55 |
R101_20 | --- | --- | 0.65 | 1.21 | 0.43 |
R101_19 | --- | --- | 0.47 | 1.27 | 0.71 |
R101_17 | --- | --- | 0.44 | 1.72 | 0.65 |
R101_16 | 0.30 | --- | 0.30 | 2.96 | 0.63 |
x | |
---|---|
R101_01 | RAQ: Statistik bringt mich zum Weinen. |
R101_02 | RAQ: Meine Freunde werden denken, ich sei dumm, weil ich nicht mit R umgehen kann. |
R101_03 | RAQ: Standardabweichungen begeistern mich. |
R101_04 | RAQ: Ich träume davon, dass Pearson mich mit Korrelationskoeffizienten angreift. |
R101_05 | RAQ: Ich verstehe Statistik nicht. |
R101_06 | RAQ: Ich habe wenig Erfahrung mit Computern. |
R101_07 | RAQ: Alle Computer hassen mich. |
R101_08 | RAQ: Ich war noch nie gut in Mathe. |
R101_09 | RAQ: Meine Freunde sind besser in Statistik als ich. |
R101_10 | RAQ: Computer sind nur zum Spielen nützlich. |
R101_11 | RAQ: Ich war in der Schule schlecht in Mathematik. |
R101_12 | RAQ: Leute versuchen dir zu sagen, dass R die Statistik leichter verständlich macht, aber das stimmt nicht. |
R101_13 | RAQ: Ich mache mir Sorgen, dass ich wegen meiner Inkompetenz mit Computern irreparable Schäden verursachen werde. |
R101_14 | RAQ: Computer haben ihren eigenen Willen und gehen absichtlich immer dann kaputt, wenn ich sie benutze. |
R101_15 | RAQ: Computer sind darauf aus, mich zu überlisten. |
R101_16 | RAQ: Ich weine offen, wenn von zentraler Tendenz die Rede ist. |
R101_17 | RAQ: Ich falle in ein Koma, wenn ich eine Gleichung sehe. |
R101_18 | RAQ: R stürzt immer ab, wenn ich versuche, es zu benutzen. |
R101_19 | RAQ: Alle schauen mich an, wenn ich R benutze. |
R101_20 | RAQ: Ich kann nicht schlafen, weil ich an Signifikanzen denke. |
R101_21 | RAQ: Ich wache unter meiner Bettdecke auf und denke, dass ich unter einer Normalverteilung gefangen bin. |
R101_22 | RAQ: Meine Freunde sind besser in R als ich. |
R101_23 | RAQ: Wenn ich gut in Statistik bin, werden die Leute denken, ich sei ein Streber. |
R101_24 | RAQ: Ich mag Statistik, würde das aber nie vor meinen Freunden zugeben. |
Kommunalitäten
Die Kommunalität einer Variable ist der Varianzanteil, den sie mit den extrahierten Faktoren teilt. Kommunalitäten unter .4 sind eher dürftig.
Uniquness = 1 - Kommunalität
Uniqueness
Die Uniqueness-Werte drücken aus, wie hoch der Varianzanteil ist, der nicht durch die Faktorenlösung erklärt werden konnte. Werte über .6 sind eher dürftig.
Complexity
Die Komplexität je Variable gibt an, ob es Mehrfachladungen auf einer Variable gibt. Wenn sie 1 ist, dann ist das Ergebnis eindeutig, wenn sie nahe 2 ist, dann laden zwei Faktoren auf dieser Variable.
Interaktionen
Wir gehen gemeinsam den Text von Song et al. (2004) durch und die R-Übung, die auf der nächsten Folie beschrieben ist.
(Für den Fall, dass es Probleme gibt, laden Sie die Daten hier herunter. Wenn das auch zu Problemen führt, melden Sie sich im Forum.)
psych
Ziehen Sie dazu die Hilfe dieser Website heran: https://md.psych.bio.uni-goettingen.de/mv/unit/fa/efa.html
Schauen Sie sich die Korrelationsmatrix (mit cor()
) an.
Führen Sie einen Bartlett’s-Test aus
Führen Sie einen KMO-Test aus (psych::KMO()
)
Machen Sie eine Parallel-Analyse (psych::fa.parallel()
), um die Anzahl der Faktoren zu bestimmen.
Führen Sie eine Faktorenanalyse durch mit psych::fa()
und rotieren Sie mit rotate = "promax"
. 5.1. Schauen Sie sich die Faktorladungen an. 5.2. Wie viel Varianz erklären die Faktoren?
Erstellen Sie ein Diagramm für die Faktorenanalyse (psych::fa.diagramm
).
Führen Sie eine Faktorenanalyse mit Rotation nach dem Kriterium rotate = "oblimin"
durch.
E8.1 Bitte schauen Sie sich die folgenden drei (mistigen) Tabellen an, die aus fiktiven Publikationen stammen. Jedes mal werden die Koeffizienten als “beta” bezeichnet, aber es könnten nur die unstandardisierten Regressionskoeffizienten b sein oder die standardisierten Regressionskoeffizienten std. b. Was ist wohl was? a) Begründen Sie Ihre Entscheidung! b) Eklären Sie, warum es nicht \betas sein können.
E8.2 Schreiben Sie zu jedem der folgenden Schlagworte in ganzen Sätzen auf, zu welchen Zwecken Faktorenanalysen alles eingesetzt werden können: a) latente Variablen entdecken b) Multikollinearität c) Indices d) Messung latenter Konstrukte
E8.3 a) Erklären Sie, was Faktorenadungen sind. b) Wie gehen Sie vor, wenn Sie Faktorladungen interpretieren wollen?
Lesen Sie Song et al. (2004) und beantworten Sie dann folgende Fragen und die anschliessenden MCs.
E8.4 Was wird mit Cronbachs \alpha beschrieben?
E8.5 Was für eine Faktorenanalyse haben Song et al durchgeführt?
E8.6 Mit welcher Methoden wurden die Faktoren rotiert?
E8.7 Wie viele initiale Faktoren hat die Faktorenanalyse herausgegeben?
E8.8 a) Nach welchen Kriterien wurden die Faktoren ausgewählt? b) Wie bewerten Sie das Vorgehen?
E8.9 a) Wie viele Items (Fragen) wurden mit der Faktorenanalyse ausgewertet? b) Auf wie viele Faktoren wurden die Items reduziert?
E8.10 Wie viel Varianz erklären die Faktoren, die von Song et al ausgewählt wurden?
MC 8.1: Was sagen die Zahlen im Text von Song et al. (2004)?
MC_8_1 = [
["Die Variablen erklären 67.4 Prozent der extrahierten Faktoren.", "falsch"],
["Die Faktoren wurden mit Hilfe der Varimax-Methode rotiert.", "richtig"],
["Alle Faktoren zeigen ein hohes Cronbachs α.", "falsch"],
['Der "Factor 5" erklärt etwa das Vierfache einer einfachen Variable.', "falsch"]
]
viewof answers_8_1 = quizInput({
questions: MC_8_1,
options: ["richtig", "falsch"]
})
Punkte_8_1 = {
const Sum =
(answers_8_1[0] == MC_8_1[0][1])*1 +
(answers_8_1[1] == MC_8_1[1][1])*1 +
(answers_8_1[2] == MC_8_1[2][1])*1 +
(answers_8_1[3] == MC_8_1[3][1])*1
var Punkte_8_1 = Sum - 2
if (Punkte_8_1 < 1) {Punkte_8_1 = 0}
return(Punkte_8_1)
}
Punkte:
MC 8.2: Was sagen die Zahlen im Text von Song et al. (2004)?
MC_8_2 = [
['Der "Factor 1" erklärt die meiste Varianz der ursprünglichen Variablen.', "richtig"],
['Da auf "Factor 3" und "Factor 4" gleich viele Variablen laden, haben Sie dieselbe Varianzaufklärung.', "falsch"],
["Wenn der Eigenwert eines Faktors für einen Faktor A grösser ist als bei Faktor B, muss bei A Cronbach α auch grösser sein als bei B.", "falsch"],
["In der Korrelationstabelle sind die Faktoren abgebildet, die teilweise stark korrelieren.", "falsch"]
]
viewof answers_8_2 = quizInput({
questions: MC_8_2,
options: ["richtig", "falsch"]
})
Punkte_8_2 = {
const Sum =
(answers_8_2[0] == MC_8_2[0][1])*1 +
(answers_8_2[1] == MC_8_2[1][1])*1 +
(answers_8_2[2] == MC_8_2[2][1])*1 +
(answers_8_2[3] == MC_8_2[3][1])*1
var Punkte_8_2 = Sum - 2
if (Punkte_8_2 < 1) {Punkte_8_2 = 0}
return(Punkte_8_2)
}
Punkte:
MC 8.3: Was sagen die Zahlen im Text von Song et al. (2004)?
MC_8_3 = [
["In Tabelle 3 sind die βs der GG angegeben, die mit den b's in der Stichprobe geschätzt wurden.", "falsch"],
["Die standardisierten BETAS sind mit den Korrelationswerten der Tabelle 2 vergleichbar. ", "richtig"],
["Die Varianzaufklärung der Regression beträgt 54 Prozent.", "falsch"],
['Der p-Wert von "Virutal community" ist genau 0.', "falsch"]
]
viewof answers_8_3 = quizInput({
questions: MC_8_3,
options: ["richtig", "falsch"]
})
Punkte_8_3 = {
const Sum =
(answers_8_3[0] == MC_8_3[0][1])*1 +
(answers_8_3[1] == MC_8_3[1][1])*1 +
(answers_8_3[2] == MC_8_3[2][1])*1 +
(answers_8_3[3] == MC_8_3[3][1])*1
var Punkte_8_3 = Sum - 2
if (Punkte_8_3 < 1) {Punkte_8_3 = 0}
return(Punkte_8_3)
}
Punkte:
MC 8.4: Was sagen die Zahlen im Text von Song et al. (2004)?
MC_8_4 = [
["Je stärker Studierende versuchen sich in eine «Virtuelle community» zu integrieren, desto eher werden sie internetsüchtig.", "richtig"],
["Multikollinearität in den UVs kann ausgeschlossen werden.", "falsch"],
["Wer das Internet nutzt, um Informationen zu suchen, gerät eher nicht in eine Internetsucht.", "richtig"],
["Wer das Internet nutzt, um seinen «Personal status» zu verbessern, neigt stark zu Internetsucht.", "falsch"]
]
viewof answers_8_4 = quizInput({
questions: MC_8_4,
options: ["richtig", "falsch"]
})
Punkte_8_4 = {
const Sum =
(answers_8_4[0] == MC_8_4[0][1])*1 +
(answers_8_4[1] == MC_8_4[1][1])*1 +
(answers_8_4[2] == MC_8_4[2][1])*1 +
(answers_8_4[3] == MC_8_4[3][1])*1
var Punkte_8_4 = Sum - 2
if (Punkte_8_4 < 1) {Punkte_8_4 = 0}
return(Punkte_8_4)
}
Punkte:
MC 8.5: Was sagen die Zahlen im Text von Song et al. (2004)?
MC_8_5 = [
[' Die signifikante Korrelation zwischen «Personal status» und «Internetaddiction» ist eher durch Drittvariablen zustande gekommen.', "richtig"],
["Das Konfidenzintervall des BETA von «Monetary compensation» schliesst die 0 mit ein.", "richtig"],
["Da «Personal status» einen p-Wert > .05 hat, ist β in der GG 0 und daher deutlich kleiner als das in der Stichprobe.", "falsch"],
["Da in der Tabelle standardisierte BETAs angezeigt werden, sind die t-Werte eher redundant.", "richtig"]
]
viewof answers_8_5 = quizInput({
questions: MC_8_5,
options: ["richtig", "falsch"]
})
Punkte_8_5 = {
const Sum =
(answers_8_5[0] == MC_8_5[0][1])*1 +
(answers_8_5[1] == MC_8_5[1][1])*1 +
(answers_8_5[2] == MC_8_5[2][1])*1 +
(answers_8_5[3] == MC_8_5[3][1])*1
var Punkte_8_5 = Sum - 2
if (Punkte_8_5 < 1) {Punkte_8_5 = 0}
return(Punkte_8_5)
}
Punkte:
Punkte_8_max = 10
Punkte_8_Gesamt = Punkte_8_1 + Punkte_8_2 + Punkte_8_3 + Punkte_8_4 + Punkte_8_5
Prozent_8_Gesamt = round(100*Punkte_8_Gesamt/Punkte_8_max, 0)
Note_8_grob = round((round(Punkte_8_Gesamt/Punkte_8_max,1)*10+2)/2, 1)
Insgesamt (nur MCs) 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))
);
})
:::
UZH IKMZ | Fretwurst | Statistik Aufbau | Sitzung 8 |