graph LR ind1 --> lonely ind2 --> lonely u --> lonely
einsamkeit-modellierung
1 Fallstudie zur Einsamkeitsinduktion
In dieser Fallstudie wird eine studentische Studie vorgestellt, die untersucht, inwieweit Einsamkeit induziert werden kann und welche Effekte die Einsamkeitsinduktion auf das aktuelle Befinden hat.
Das Design ist reichhaltig und lässt viele Analysen zu. Bei diesem Post liegt der Fokus auf der Modellierung der Forschungsfrage.
1.1 Forschungsfrage und Hypothesen
Hat die Induktion (ind
) von Einsamkeit einen Effekt auf die wahrgenommenen Einsamkeit (lonely
) ?
Insgesamt wird zwei Mal Einsamkeit induziert:
H1: Die Induktion 1 (ind1
) verringert die Einsamkeit (Geschichte über Einsamkeit oder neutral)
H2: Die Induktion 2 (ind2
) verringert die Einsamkeit (“einsame” Musik oder neutral)
1.2 DAG (Kausalgraph)
Es handelt sich um eine Kausalanalyse, da man am Effekt der Intervention auf die Einsamkeit interessiert ist.
1.3 Forschungsdesign
UV1: Einsamkeitsinduktion 1 (Geschichte)
UV2: Einsamkeitsinduktion 2 (Musik)
AV: Einsamkeit
2 Hinweise
Beachten Sie die üblichen Hinweise des Datenwerks.
3 Setup
4 Daten importieren
<- "https://github.com/sebastiansauer/Datenwerk/raw/refs/heads/main/posts/einsamkeit-modellierung/einsamkeit.csv"
url <- read_csv(url) d
Check:
glimpse(d)
Rows: 44
Columns: 21
$ Proband_ID <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1…
$ Gruppe <dbl> 3, 2, 1, 4, 2, 1, 4, 3, 1, 2, 4, 3, 3, 1…
$ Geschichte <chr> "neutrale", "einsame", "neutrale", "eins…
$ Musik <chr> "neutrale", "neutrale", "einsame", "eins…
$ SAM_Pleasure_f1 <dbl> 7, 7, 9, 7, 7, 7, 5, 9, 5, 9, 7, 7, 7, 9…
$ SAM_Pleasure_f2 <dbl> 7, 7, 7, 5, 5, 7, 5, 7, 7, 9, 7, 7, 7, 9…
$ SAM_Pleasure_f3 <dbl> 9, 5, 5, 9, 7, 9, 5, 9, 9, 9, 3, 9, 7, 9…
$ SAM_Arousal_f1 <dbl> 3, 1, 3, 7, 5, 3, 3, 5, 5, 7, 3, 5, 1, 3…
$ SAM_Arousal_f2 <dbl> 5, 1, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5…
$ SAM_Arousal_f3 <dbl> 1, 1, 3, 7, 5, 3, 3, 1, 3, 1, 1, 5, 3, 5…
$ SAM_Dominance_f1 <dbl> 5, 5, 9, 7, 7, 7, 5, 7, 3, 7, 3, 5, 7, 5…
$ SAM_Dominance_f2 <dbl> 5, 5, 7, 5, 3, 7, 3, 7, 5, 7, 7, 5, 7, 7…
$ SAM_Dominance_f3 <dbl> 5, 3, 3, 7, 3, 7, 3, 9, 5, 7, 7, 5, 7, 9…
$ Loneliness_mean_f1 <dbl> 1.4, 1.2, 2.2, 1.6, 2.2, 1.4, 2.4, 1.8, …
$ Loneliness_mean_f2 <dbl> 1.2, 1.8, 2.2, 1.6, 2.0, 1.2, 2.4, 1.4, …
$ Loneliness_mean_f3 <dbl> 1.0, 1.8, 2.0, 1.2, 2.0, 1.2, 2.4, 1.4, …
$ Godspeed_Anthropo_mean_f3 <dbl> 2.8, 2.0, 1.0, 2.8, 2.0, 3.8, 1.2, 3.4, …
$ Godspeed_Animacy_mean_f3 <dbl> 3.833333, 2.000000, 2.166667, 3.500000, …
$ Godspeed_Likeability_mean_f3 <dbl> 5.0, 2.8, 2.2, 4.4, 3.0, 4.4, 3.0, 4.8, …
$ Godspeed_Intelligence_mean_f3 <dbl> 3.8, 2.6, 2.6, 3.4, 2.6, 4.4, 2.8, 3.4, …
$ Godspeed_Safety_mean_f3 <dbl> 3.666667, 5.000000, 2.000000, 2.333333, …
|>
d describe_distribution() |>
kable(digits = 2)
Variable | Mean | SD | IQR | Min | Max | Skewness | Kurtosis | n | n_Missing |
---|---|---|---|---|---|---|---|---|---|
Proband_ID | 22.50 | 12.85 | 22.50 | 1.0 | 44.00 | 0.00 | -1.20 | 44 | 0 |
Gruppe | 2.50 | 1.13 | 2.50 | 1.0 | 4.00 | 0.00 | -1.38 | 44 | 0 |
SAM_Pleasure_f1 | 7.23 | 1.24 | 1.50 | 5.0 | 9.00 | -0.07 | -0.29 | 44 | 0 |
SAM_Pleasure_f2 | 6.59 | 1.70 | 2.00 | 3.0 | 9.00 | -0.53 | -0.06 | 44 | 0 |
SAM_Pleasure_f3 | 7.50 | 1.56 | 2.00 | 3.0 | 9.00 | -0.79 | 0.11 | 44 | 0 |
SAM_Arousal_f1 | 3.64 | 1.92 | 2.00 | 1.0 | 9.00 | 0.47 | 0.13 | 44 | 0 |
SAM_Arousal_f2 | 3.68 | 2.02 | 2.00 | 1.0 | 9.00 | 0.53 | -0.16 | 44 | 0 |
SAM_Arousal_f3 | 3.59 | 1.91 | 2.00 | 1.0 | 9.00 | 0.54 | 0.25 | 44 | 0 |
SAM_Dominance_f1 | 5.68 | 1.88 | 2.00 | 1.0 | 9.00 | -0.22 | 0.57 | 44 | 0 |
SAM_Dominance_f2 | 5.27 | 2.00 | 2.00 | 1.0 | 9.00 | -0.29 | -0.10 | 44 | 0 |
SAM_Dominance_f3 | 5.18 | 1.92 | 3.50 | 1.0 | 9.00 | -0.02 | -0.13 | 44 | 0 |
Loneliness_mean_f1 | 1.92 | 0.34 | 0.60 | 1.2 | 2.60 | -0.05 | -0.72 | 44 | 0 |
Loneliness_mean_f2 | 1.95 | 0.38 | 0.60 | 1.2 | 2.80 | 0.12 | -0.41 | 44 | 0 |
Loneliness_mean_f3 | 1.92 | 0.39 | 0.60 | 1.0 | 2.80 | 0.00 | 0.18 | 44 | 0 |
Godspeed_Anthropo_mean_f3 | 2.20 | 0.79 | 1.15 | 1.0 | 4.00 | 0.37 | -0.46 | 44 | 0 |
Godspeed_Animacy_mean_f3 | 2.96 | 0.75 | 0.96 | 1.0 | 4.17 | -0.70 | 0.14 | 44 | 0 |
Godspeed_Likeability_mean_f3 | 3.83 | 0.76 | 1.00 | 2.0 | 5.00 | -0.44 | -0.22 | 44 | 0 |
Godspeed_Intelligence_mean_f3 | 3.31 | 0.74 | 1.20 | 2.0 | 5.00 | 0.42 | -0.30 | 44 | 0 |
Godspeed_Safety_mean_f3 | 3.92 | 0.77 | 1.25 | 2.0 | 5.00 | -0.59 | 0.09 | 44 | 0 |
5 Ablauf
graph LR Start --> Messung_t1 --> Intervention1 --> Messung_t2 --> Intervention2 --> Messung_t3 --> Ende
Die Intervention ist in diesem Fall die Induktion von Einsamkeit.
Es handelt sich um Between-Desing mit Vorher-Nachher-Messung, auch als “Veränderungsmessung” oder Veränderungsdesign bezeichnet.
Die Versuchspersonen durchlaufen nicht die gleichen Bedingungen, sondern verschiedene: einige Probanden sind in der Experimentalgruppe, andere in der Kontrollgruppe.
Schauen wir genauer zur ersten Intervention:
graph LR Messung_t1 --> Intervention1 --> Messung_t2
Es gibt zwei Gruppen, die Experimentalgruppe bekommt die Einsamkeit, die Kontrollgruppe die neutrale Bedingung:
graph LR Messung_t1 --> G1[Einsamkeits-Induktion] Messung_t1 --> G2[Kontrollgruppe] G1 --> Messung_t2 G2 --> Messung_t2
6 Berechnung der Deltavariablen
Bei Veränderungsdesigns muss man die Veränderung von einem Messzeitpunkt zum anderen berechnen, pro Person. Dazwischen muss eine Intervention liegen. Dieser Veränderung nennen wir delta, sie misst den kausalen Effekt der Intervention. Je größer das (mittlere) Delta zwischen den Gruppen, desto größer der Effekt.
<-
d_delta |>
d mutate(loneliness_delta1 = Loneliness_mean_f2 - Loneliness_mean_f1,
loneliness_delta2 = Loneliness_mean_f3 - Loneliness_mean_f2,
loneliness_delta3 = Loneliness_mean_f3 - Loneliness_mean_f1 )
Visualisierung der Delta-Variablen:
graph LR Start --> Messung_t1 --> Intervention1 --> Messung_t2 --> Intervention2 --> Messung_t3 Messung_t2 -- delta1 --> Messung_t1 Messung_t3 -- delta2 --> Messung_t2 Messung_t3 -- delta3 --> Messung_t1
Puh, das ist unübersichtlich. Vielleicht ist die Berechnung der Delta-Variablen so übersichtlicher:
graph LR Messung_t2 -- delta1 --> Messung_t1 Messung_t3 -- delta2 --> Messung_t2 Messung_t3 -- delta3 --> Messung_t1
7 Modellierung
7.1 Delta 1
7.1.1 Modell
<- stan_glm(loneliness_delta1 ~ Geschichte, data = d_delta) mod_delta1
Mit lm
würde das genau so funktionieren. Nur ohne die Ergebnisse einfach probabilistisch interpretieren zu können.
Ergebnisse:
parameters(mod_delta1) |>
print_md()
Parameter | Median | 95% CI | pd | Rhat | ESS | Prior |
---|---|---|---|---|---|---|
(Intercept) | 0.07 | (-0.03, 0.18) | 90.53% | 1.000 | 3590.00 | Normal (0.02 +- 0.63) |
Geschichteneutrale | -0.10 | (-0.24, 0.05) | 90.33% | 1.000 | 3766.00 | Normal (0.00 +- 1.25) |
Die Nullhypothese kann nicht verworfen werden.
7.1.2 Visualisierung
plot(parameters(mod_delta1))
7.1.3 Modellgüte
r2(mod_delta1)
# Bayesian R2 with Compatibility Interval
Conditional R2: 0.037 (95% CI [8.275e-09, 0.164])
Tja, die Intervention war leider nicht so stark. Aber so ist es nun Mal im harten Forscherleben …
<- rope(mod_delta1)
mod_delta1_rope
plot(mod_delta1_rope)
7.2 Delta 2 und 3
… analog
8 Deskriptive Analyse
8.1 Visualisierung
8.1.1 Delta 1
Hier ist die Veränderung der Einsamkeit von Messung t1 zu Messung t2, aufgeteilt nach den beiden Gruppen.
ggboxplot(d_delta, x = "Geschichte", y = "loneliness_delta1",
add = "jitter")
Tja, leider kein starker Effekt zu erkennen.
<-
d_long |>
d select(Proband_ID, Geschichte, starts_with("Loneliness")) |>
pivot_longer(cols = starts_with("Loneliness"),
names_to = "Messzeitpunkt",
values_to = "Einsamkeit") |>
mutate(t = as.integer(str_extract(Messzeitpunkt, "\\d"))) # Messzeitpunkt als Zahl: 1,2,3
|>
d_long head() |>
kable(digits = 2)
Proband_ID | Geschichte | Messzeitpunkt | Einsamkeit | t |
---|---|---|---|---|
1 | neutrale | Loneliness_mean_f1 | 1.4 | 1 |
1 | neutrale | Loneliness_mean_f2 | 1.2 | 2 |
1 | neutrale | Loneliness_mean_f3 | 1.0 | 3 |
2 | einsame | Loneliness_mean_f1 | 1.2 | 1 |
2 | einsame | Loneliness_mean_f2 | 1.8 | 2 |
2 | einsame | Loneliness_mean_f3 | 1.8 | 3 |
|>
d_long ggboxplot(x = "t", y = "Einsamkeit", add = "jitter",
color = "Geschichte")
Es ist wenig Effekt zu erkennen. Interessanterweise hat die Gruppe der Einsamkeits-Intervention von vornherein einen höheren Wert in Einsamkeit. Das ist psychologisch interessant und sollte näher untersucht werden.
Andere Visualisierung:
|>
d_long ggsummarystats(x = "t",
y = "Einsamkeit",
ggfunc = ggline,
add = "median_iqr",
color = "Geschichte",
position = position_dodge(width = 0.1),
heights = c(0.6, 0.4),
caption = "Error bars show median and IQR")
8.1.2 Delta 2 und 3
… analog
8.2 Statistiken pro Gruppe
|>
d_delta select(Geschichte, loneliness_delta1) |>
group_by(Geschichte) |>
summarise(delta1_mean = mean(loneliness_delta1),
delta1_sd = sd(loneliness_delta1))
Geschichte | delta1_mean | delta1_sd |
---|---|---|
einsame | 0.0727273 | 0.2930656 |
neutrale | -0.0272727 | 0.1980424 |
9 Fazit
Veränderung-Designs analysiert man im einfachsten Fall mit Hilfe von Delta-Variablen.
In dieser Studie sind zwei UVs hintereinander gelegt. Das macht aber nichts, man kann sie getrennt voneinander analysieren.