library(tidyverse)
d = read_csv('data/dataset_rdk_clean.csv')Übung 5 - SDT Parameter
Auftrag
Berechnen Sie die zwei SDT Parameter \(d'\) und \(c\) und beantworen anschliessend die Lückentextfrage auf Ilias.
Vorgehen
Laden Sie hier das r-Projekt herunter.
Im r-Markdown File
Uebung_5.Rmdwerden Sie durch die Berechnung der Parameter geführt. Das geknittete r-Markdown File finden Sie weiter unten auf dieser Seite.In den Code-Chunks im r-Markdown File
Uebung_5.Rmdgibt es Lücken (__). Vervollständigen Sie diesen Code. Ändern Sie den Code nur bei den Lücken!Beantworten Sie die Lückentextfrage auf Ilias.
Abgabetermine
Gruppe Montag: 31.05.2024 23:55
Gruppe Mittwoch: 31.05.2024 23:55
Inhalt r-Markdown File
In dieser Übung berechnen Sie aus den Daten des Random Dot Experiments die Signal Detection Kennzahlen \(d'\), \(k\) und \(c\). Anschliessen berechnen Sie Mittelwerte der drei Bedingungen für \(d'\) und \(c\) unter Berücksichtigung der Messwiederholung.
Vorbereitung
Variablen bearbeiten
Zu factor konvertieren, etc.
d = d |>
select(id, condition, stimulus = direction, resp) |>
mutate(across(where(is.character), ~as_factor(.))) |>
drop_na()Wir definieren nun eine Antowrt als “Hit”, wenn die Vp “rechts” gesagt, und die Richtung war tatsächlich “rechts” (also eine korrekte “rechts” Antowrt). Ein “False Alarm” ist dann eine inkorrekte “rechts” Antwort.
sdt <- d |>
mutate(type = case_when(
stimulus == ____ & resp == _____ ~ ____,
____
____
____))Für jede Vpn in beiden Instruktions Bedingungen zählen wir die verschiedenen Antworttypen.
sdt_summary <- sdt |>
group_by(____, ____) |>
count(____)sdt_summaryVon long zu wide konvertieren
Nun wollen wir die 4 Antworttypen in jeweils eigenen Variablen.
sdt_summary <- sdt_summary |>
pivot_wider(names_from = type,
values_from = n)sdt_summaryFunktionen definieren
Die erste Funktion ersetzt alle fehlenden Werte (NA) durch 0, die zweite Funktion ersetzt bei den Hit und False Alarm Rates alle 0 und 1 Werte durch 0.001 oder 0.999. Dies machen wir, damit wir bei der Berechnung der z-Werte nicht \(\pm \infty\) erhalten.
replace_NA <- function(x) {
x = ifelse(is.na(x), 0, x)
x
}
correct_zero_one <- function(x) {
if (identical(x, 0)) {
x = x + 0.001
} else if (identical(x, 1)) {
x = x - 0.001
}
x
}NAs ersetzen
sdt_summary <- sdt_summary |>
mutate(across(c(Hit, Miss, FA, CR), replace_NA))sdt_summaryHit Rate und False Alarm Rate berechnen
Nun berechnen wir die Hit Rate und die False Alarm Rate anhand der folgenden Formeln:
\[ Hit~Rate = \frac{Hits}{Hits + Misses} \]
\[ FA~Rate = \frac{False Alarms}{False Alarms + Correct Rejections} \]
sdt_summary <- sdt_summary |>
mutate(hit_rate = ____,
fa_rate = ____)Werte 0 und 1 korrigieren
sdt_summary <- sdt_summary |>
mutate(across(c(hit_rate, fa_rate), correct_zero_one))sdt_summaryZ-Transformation
Als nächstes berechnen wir die z-Werte der Hit Rate und der False Alarm Rate. Dazu verwenden wir die Funktion qnorm().
sdt_summary <- sdt_summary |>
mutate(zhr = ____,
zfa = ____)sdt_summarySDT Parameter berechnen
Nun können wir die SDT Parameter anhand der folgenden Formeln berechnen:
\[d' = z(Hit~Rate) - z(FA~Rate)\]
\[c = -0.5 * (z(Hit~Rate) + z(FA~Rate))\]
sdt_summary <- sdt_summary |>
mutate(dprime = ____,
c = ____) |>
mutate(across(c(dprime, c), round, 2))Variablen auswählen
sdt_final <- sdt_summary |>
select(id, condition, dprime, c)Im finalen Datensatz haben wir nun d' und c für jede Person in jeder Bedingung.
sdt_finalDeskriptive Werte Berechnen
Um die SDT parameter zwischen den Bedingungen zu vergleichen berechnen wir für \(d'\) und \(c\) den Mittelwert (mean()) und die Standardabweichung (sd()) in beiden Bedingungen (speed und accuracy).
sdt_final |>
group_by(____) |>
summarise(mean_dprime = ____,
sd_dprime = ____,
mean_c = ____,
sd_c = ____)Reuse
Citation
@online{wyssen,
author = {Wyssen, Gerda and Fitze, Daniel},
title = {Übung 5 - {SDT} {Parameter}},
url = {https://kogpsy.github.io/neuroscicomplabFS24//pages/chapters/uebung_5_sdt_parameter.html},
langid = {en}
}