library(tidyverse)
= read_csv('data/dataset_rdk_clean.csv') d
Ü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.Rmd
werden 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.Rmd
gibt 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.
<- d |>
sdt mutate(type = case_when(
== ____ & resp == _____ ~ ____,
stimulus
____
____ ____))
Für jede Vpn in beiden Instruktions Bedingungen zählen wir die verschiedenen Antworttypen.
<- sdt |>
sdt_summary group_by(____, ____) |>
count(____)
sdt_summary
Von 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_summary
Funktionen 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.
<- function(x) {
replace_NA = ifelse(is.na(x), 0, x)
x
x
}
<- function(x) {
correct_zero_one if (identical(x, 0)) {
= x + 0.001
x else if (identical(x, 1)) {
} = x - 0.001
x
}
x }
NAs ersetzen
<- sdt_summary |>
sdt_summary mutate(across(c(Hit, Miss, FA, CR), replace_NA))
sdt_summary
Hit 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_summary
Z-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_summary
SDT 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_summary |>
sdt_final select(id, condition, dprime, c)
Im finalen Datensatz haben wir nun d'
und c
für jede Person in jeder Bedingung.
sdt_final
Deskriptive 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}
}