Path Rotation Task - Daten aus dem Online Experiment.
Bitte bearbeiten Sie die Aufgaben in den gelben Kästen. Zusätzlich sollten Sie den fehlenden Code in den Code Chunks ergänzen.
Laden Sie bitte Ihre Lösung als ZIP File bis Freitag, 4. Juni um 00:00 Uhr, in den Order für Übung 6 auf ILIAS. Das ZIP File sollte sowohl das Rmarkdown File als auch das generierte HTML File enthalten.
Nennen Sie Ihr File Matrikelnummer_Nachname_uebung-6.zip.
Mentale Rotation, also das Drehen von Gegenständen, Personen oder unserer eigenen Position mittels der eigenen Vorstellungskraft, ist eine wichtige Fähigkeit von Menschen. Sie ermöglicht es uns die Perspektive zu wechseln, uns vorzustellen, wie wir ein Problem lösen können und Werkzeuge zu benutzen. Wir verwenden mentale Rotation beispielsweise um einem Freund den Weg aus seiner Sicht zu erklären oder um die Anleitung zum Zusammenbau eines Möbels zu verstehen. Mentale Rotationsaufgaben beanspruchen das räumliche Arbeitsgedächtnis und können, wie folgende Grafik zeigt, ganz unterschiedlich aussehen:
Mentale Rotation kann mit unterschiedlichen Strategien ausgeführt werden: Man kann sich selber mental rotieren (egozentrische Rotation) oder ein Objekt (allozentrische Rotation). Diese Strategien beruhen auf unterschiedlichen Referenzsystemen im Gehirn und unterscheiden sich auf neuronaler Ebene (Tomasino and Gremese 2016).
Bestimmte Patientengruppen wie beispielsweise Kinder mit ADHD oder Patienten mit Erkrankungen des Gleichgewichtorgans (vestibuläre Patienten) zeigen im Vergleich zu Kontrollgruppen schlechtere Leistungen in mentalen Rotationsaufgaben (z.B.(Feldman and Huang-Pollock 2020; Grabherr et al. 2011)). Interessanterweise unterscheiden sich vestibuläre Patienten aber nur in der egozentrischen nicht in der allozentrischen Strategie von der Kontrollgruppe.
Dies wirft die Frage auf, wie die Information aus dem Gleichgewichtsorgan das Ausführen von mentalen Rotationen beeinflusst. Dieser Einfluss wurde in zahlreichen Experimenten im Labor und auch im Magnetresonanztomographen (MRT) untersucht. Für die fMRT Studien wurden meist je nach Strategie unterschiedliches Stimulus-Material verwendet, was es schwierig macht die Fehler, Reaktionszeiten sowie die Hirnaktivierungen in den beiden Strategien direkt zu vergleichen. Bei gleichem Stimulusmaterial besteht die Problematik, dass oft nicht klar ist, welche Strategie gewählt wurde.
Ein gutes Paradigma (bestehend aus Aufgabe, Stimulusmaterial, Timing und Instruktion) ist fundamental wichtig für neurowissenschaftliche Experimente. Es sollte den Prozess den wir untersuchen wollen auslösen und messbar machen. Dies ist oft schwieriger als es tönt. Das Erstellen, Optimieren und Austesten eines Paradigmas ist ein wichtiger Teil der Arbeit eines Neurowissenschaftlers.
In diesem Experiment wurde eine mentale Rotationsaufgabe mit zwei verschiedenen Strategien gelöst. In beiden Strategien muss entweder mit rechts oder links geantwortet werden. Das Stimulusmaterial wurde so hergestellt, dass die Stimuli für beide Strategien visuell identisch sind, aber die Antwort aufzeigt, mit welcher Strategie die Aufgabe gelöst wurde.
Die allozentrische Strategie erfordert das Drehen des Bildes, so dass der kurze Weg nach oben zeigt. Dann muss die Versuchsperson entscheiden, ob der Pfeil zur rechten oder zur linken Seite zeigt. Die egozentrische Strategie hingegen erfordert das Drehen der eigenen Perspektive.
Die egozentrische Strategie erfordert das Drehen der eigenen Perspektive, so dass vom kurzen Pfadstück aus beurteilt werden kann, in welche Richtung der Weg an der Kreuzung abbiegt Richtung Pfeil.
Das Ziel dieser Onlinestudie ist es das neue Stimulusmaterial zu validieren. Hierfür interessieren uns folgende Fragen:
Erhöhen sich die Antwortzeiten mit zunehmendem Rotationswinkel?
Unterscheiden sich die Antwortzeiten zwischen den beiden Bedingungen in typischer Weise (egozentrisch schneller als allozentrisch)?
Eignet sich dieses Paradigma für den Vergleich der Strategien in einem fMRI Experiment?
Wir laden den Datensatz mit folgende Informationen:
id
: Identifikationsnummer für jede Versuchspersoncondition
: verwendete Strategie (allocentric, egocentric)angle
: Rotationswinkel (°)rt
: Antwortzeit (ms)accuracy
: 1 wenn Antwort richtig, 0 wenn Antwort falschtrial
: TrialnummerAlter, Geschlecht und Händigkeit wurden aus Datenschutzgründen aus dem Datensatz entfernt. Wir laden die Variablen id
, condition
sowie die absoluten Winkelwerte (d.h. 45° links und 45° rechts werden aggregiert) fc_angle
als Faktoren und schauen uns kurz den Datensatz an:
pathrotation <- read_csv("https://raw.githubusercontent.com/kogpsy/neuroscicomplab/main/data/PathRotation.csv") %>%
mutate(id = as_factor(id),
condition = as_factor(condition),
fc_angle = as_factor(abs(angle)))
glimpse(pathrotation)
Rows: 8,665
Columns: 7
$ id <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ condition <fct> egocentric, egocentric, egocentric, egocentric, eg…
$ angle <dbl> -45, -135, 180, 90, -135, 90, -135, 45, -90, -90, …
$ rt <dbl> 1660, 2717, 1734, 1329, 1435, 1420, 1387, 1319, 16…
$ accuracy <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1,…
$ trial <dbl> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, …
$ fc_angle <fct> 45, 135, 180, 90, 135, 90, 135, 45, 90, 90, 45, 90…
Schliessen Sie alle Versuchspersonen aus, welche nicht das ganze Experiment durchgeführt haben.
# find id numbers of complete datasets
<- pathrotation %>%
exclusion_incomplete group_by(__) %>%
count() %>%
filter(n == max(n))
# keep complete datasets in dataframe
<- pathrotation %>%
pathrotation filter(id %in% exclusion_incomplete$id)
Schliessen Sie alle Versuchspersonen aus, welche in mindestens einer der Bedingungen über 25% der Trials falsch beantwortet haben (50% ist Rateniveau). Die Aufgabe kann erfahrungsgemäss relativ korrekt gelöst werden. Die Versuchspersonen wurden instruiert, möglichst richtig (nicht möglichst schnell) zu antworten, deshalb weist eine Accuracy von weniger als 75% auf falsches Verständnis der Instruktion hin.
# find id numbers of complete datasets
<- pathrotation %>%
exclusion_rt group_by(__, __) %>%
summarize(mean_acc = mean(accuracy)) %>%
filter(mean_acc >= 0.75)
# keep complete datasets in dataframe
<- pathrotation %>%
pathrotation filter(id %in% exclusion_rt$id)
Schauen Sie sich die Antwortzeiten an, insbesondere die maximale Zeitdauer.Was fällt Ihnen auf?
# bar plot
%>%
pathrotation ggplot(aes(__, fill = condition)) +
geom_histogram(alpha = 1.0, position = "identity", color = "black") +
scale_fill_viridis(discrete=TRUE, option="cividis") +
facet_grid(fc_angle ~ condition, scales = "free_x") +
theme(legend.position = "none")
Teilweise hatten die Versuchspersonen bis 8 Sekunden um die Aufgabe zu lösen. Das ist sehr lange, diese Reaktionszeiten weisen in dieser Aufgabe auf fehlende Konzentration hin. Schliessen Sie alle Antwortzeiten aus, welche grösser als 4000ms sind. Auch Reaktionszeiten unter 100ms sind physiologisch unplausibel und werden ausgeschlossen.
# exclude trials with rt > 4000ms
<- pathrotation %>%
pathrotation filter(__ <= 4000, __ > 100)
Stellen Sie die Reaktionszeiten von drei zufällig ausgewählten Versuchspersonen für Rotationswinkel und Strategie grafisch dar.
<- sample(levels(pathrotation$id), 3)
subjects <- pathrotation %>%
df filter(id %in% subjects)
# plot response times
%>%
df ggplot(aes(__, __, color = condition)) +
geom_point() +
scale_color_viridis(discrete=TRUE, option="cividis") +
facet_grid(id ~ condition, scales = "free_x") +
theme(legend.position = "none")
Zusatzaufgabe: Verwenden Sie nun einen Violin Plot um die Reaktionszeiten für Winkel und Bedingung darzustellen:
# violin plot
%>%
df group_by(__, __, __) %>%
ggplot(aes(y = __, x = __, fill = __)) +
geom_violin(alpha = 0.6) +
geom_jitter(width = 0.1) +
scale_fill_viridis(discrete=TRUE, option="cividis") +
facet_wrap(~ __, scales = "free_x") +
theme(legend.position = "none")
Schauen Sie sich die Grafiken an. Was fällt Ihnen auf?
Fassen Sie nun die Daten zusammen und stellen Sie sie für jeden Winkel und jede Bedingung mit Mittelwert und Standardfehler dar.
# define functions
<- list(mean = mean, median = median, sd = sd)
funs
# group dataframe and calculate mean, median and standard deviation of response time for each participant, angle and condition
<- __ %>%
by_id group_by(__, __, __) %>%
::summarise(across(__, funs, .names = "{.fn}"))
dplyr
# calculate standard error
<- Rmisc::summarySEwithin(
agg
by_id,measurevar = "mean",
withinvars = c("fc_angle", "condition"),
idvar = "id",
na.rm = FALSE,
conf.interval = .95
)
# plot mean and standard errors for angle and condition
%>%
agg ggplot(aes(__, __)) +
geom_point(alpha = 0.8) +
geom_line(aes(group = 1), linetype = 3) +
geom_errorbar(aes(ymin = mean-se, ymax = mean+se),
width = 0.1, size=1, color="black") +
scale_fill_viridis(discrete=TRUE, option="cividis") +
facet_wrap( ~ condition) +
theme(legend.position = "none")
Schauen Sie sich die Plots an. Was wird mit den Punkten dargestellt? Was bedeuten die Balken?
Sie haben nun sowohl einen Teil der Rohdaten, wie auch die zusammengefassten Daten angeschaut. Was können Sie bezüglich der am Anfang genannten Fragestellungen nun aussagen? (Auch ohne Hypothesentests können Sie mit diesen Grafiken einigermassen sicher sein, ob die Personen die Aufgabe verstanden und gelöst haben oder ob Sie den Task nicht verwenden können.)
Fragestellung 1: Erhöhen sich die Antwortzeiten mit zunehmendem Rotationswinkel?
Sehen Sie in den Daten den erwarteten Rotationseffekt, also dass die Versuchspersonen länger brauchen, wenn sie weiter rotieren müssen (bei grössenen Winkeln)?
Fragestellung 2: Unterscheiden sich die Antwortzeiten zwischen den beiden Bedingungen in typischer Weise (egozentrisch schneller als allozentrisch)?
Sehen Sie eine Verlangsamung in der Bedingung allozentrisch im Vergleich zu egozentrisch?
Vergleichen Sie anhand einer hierarchischen Shift Function die beiden Rotationsbedinungen (separat) bei den Rotationswinkeln 45 Grad, 90 Grad und 180 Grad.
Berechnen Sie die Shift Functions und stellen Sie den Output grafisch dar. Versuchen Sie, die Grafiken zu interpretieren. Erkennen SIe ein Muster?
<- pathrotation %>%
shiftfun45 filter(fc_angle == 45) %>%
::hsf_pb(rt ~ ___ + ___)
rogme
<- shiftfun45 %>%
p_shiftfun45 ::plot_hsf_pb(interv = "ci")
rogme
p_shiftfun45
<- pathrotation %>%
shiftfun90 filter(fc_angle == 90) %>%
::hsf_pb(rt ~ ___ + ___)
rogme
<- shiftfun90 %>%
p_shiftfun90 ::plot_hsf_pb(interv = "ci")
rogme
p_shiftfun90
<- pathrotation %>%
shiftfun180 filter(fc_angle == 180) %>%
::hsf_pb(rt ~ ___ + ___)
rogme
<- shiftfun180 %>%
p_shiftfun180 ::plot_hsf_pb(interv = "ci")
rogme p_shiftfun180
Das Ziel der Datenerhebung war es, das Stimulusmaterial zu validieren. Wir haben angeschaut, ob wir den typischen Winkeleffekt finden und ob sich die Strategien wie erwartet unterscheiden.
Wie würden Sie sich aufgrund der Daten entscheiden, verwenden Sie das Stimulusmaterial in ihrer fMRI Studie oder suchen Sie eine andere Lösung?
If you see mistakes or want to suggest changes, please create an issue on the source repository.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://github.com/kogpsy/neuroscicomplab, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Wyssen (2021, June 22). neuroscicomplab: Übung 6. Retrieved from https://kogpsy.github.io/neuroscicomplab/exercise-5.html
BibTeX citation
@misc{wyssen2021übung, author = {Wyssen, Gerda}, title = {neuroscicomplab: Übung 6}, url = {https://kogpsy.github.io/neuroscicomplab/exercise-5.html}, year = {2021} }