Week 3 - PART III: The Serial Reaction Time Task
Week 3 - PART III: The Serial Reaction Time Task
Data files: The materials (log files and MATLAB scripts) needed for PART III can be found on
CANVAS.
In PART III we will set all of our skills to work by analyzing the data of a cognitive experiment,
of course using a script.
CASE: After our ‘success’ with our cognitive therapy we want to learn more about implicit
learning, the ability to learn patterns while being unaware (i.e. without clear awareness of the
notion that we are learning something).
To examine implicit learning we designed a variation of the ‘Serial Reaction Time Task’ (SRTT),
a task in which the participant sees a cue on one of several positions on the screen and then
has to respond as quickly as possible by pressing a button that matches the position of the
cue. The key of this task is that the stimuli are not random in time, but that there is a hidden
sequence in the location of where the cue appears, with ‘implicit learning’ of this sequence
resulting in a faster reaction time of the participant.
1) We show 4 boxes on a computer screen, arranged in a ‘plus’ shaped pattern, which are
continuously present. We label the four boxes A, B, C, D. The computer keeps track of
the exact times at which each of the stimuli is shown on the screen in a detailed log
file.
2) The participant receives a ‘button box’ containing 4 buttons, also arranged in a star
shaped pattern, with each of the buttons linked to the four boxes A, B, C, D. The button
box is connected to the computer, which measures the exact time that each of the
buttons is pressed.
3) During the task, during each trial, we show a * in one of the 4 boxes (the cue).
4) The participant now has to press as quickly as possible the matching button A, B, C or
D in response to the stimulus.
5) Step 3 and 4 are repeated for a series of trials (i.e. tens to hundreds) with with a little
bit of ‘jitter’ in time applied to the exact time of stimulus presentation (to prevent the
participant from being able to fully anticipate when a stimulus is coming).
2 Academic Skill : Cognitive Neuroscience Week 3
The participant is instructed to respond as fast as possible, but with as high as possible
accuracy and to make as few mistakes as possible. The participant is told that we are
conducting a ‘boring’ experiment on ‘the reaction time of visual stimuli’ and that stimuli are
presented completely at r andom on the screen. However, we actually pre-made the order in
which the stimuli will be presented on the screen. We designed the stimuli not to be
randomly ordered but to contain a hidden sequence. The participant is completely
unaware of this. We are interested in whether or not the participant learns this sequence,
improving his/her reaction time (i.e. button presses are faster, as the brain is ‘learning’
which button needs to be pressed next before the stimulus is presented), without being
‘consciously aware’ of the fact that there is a pattern in the stimuli.
To further avoid that the participant becomes aware of the pattern during the experiment,
the sequence is alternated with series of actually random stimuli, which vary in length.
Our prepared sequence of stimuli (of which the participant is thus unaware) looks
something like this:
B-B-B-C-A-A-A-A-C-D-B-A-D-C-D-B-C-A-A-C-D-C-A-A-B-A-D-C-D-B-C-A-B-
D-B-A-B-D-B-A-B-B-A-D-C-D-B-C-A-D-B-A-C-A-, etcetera..
3 Academic Skill : Cognitive Neuroscience Week 3
At the end of the experiment we ask the participants how they experienced the test and
whether or not they noticed anything special. In all cases, the participants mentioned they did
not notice anything in particular.
We are now interested in whether the participant has still (or has not) ‘learned’ the sequence
without being aware of the sequence being actually there (so completely implicit). We logged
all information into our log file and we are now going to analyze the logged information. We
are of course going to use our new MATLAB skills to do this!
Goal: Our goal is to see whether the reaction times of the ‘sequence trials’ decreased over
time, more than the reaction times of the ‘random trials’. Our end goal is:
- To show a figure of the reaction times over time for both conditions (random and
sequence trials)
- To determine whether our participant ‘learned’ the sequence without being aware?
We are first going to read in the log file into MATLAB. We prepared a MATLAB script with
commands to perform some of the steps. It is your job to finish this script and fill in your own
code. Please go to the folder on your PC where you stored the files of this workshop. The log
file should be in this folder, and your the MATLAB ‘working directory’ should be here. One
simple way to do this is to use the ‘Open’ button in the MATLAB editor. To launch the MATLAB
editor, simply type:
>> edit
Click the ‘Open’ button in the top left corner and navigate to the Analysis_of_Logfile_SRTT8.m
and open this file. Press ‘Run’, and in the popup window click the option to change the
MATLAB current path to the directory where also the log file is located. M
ATLAB should now
be running in the correct folder.
>> edit
~/martijn/Desktop/Files_for_programming_Practical_CogNeuro2020/We
ek3/Analysis_of_Logfile_SRTT8.m
In the script you see already some code we prepared, starting with some commands to read in
the log file and select the relevant information from the log file. Go ahead and run the first
section of the script.
(Tip: after each section you see the command return. This stops the script and returns to the
5 Academic Skill : Cognitive Neuroscience Week 3
MATLAB prompt. Using this you can fill in each exercise one by one, running the script only to
that part. Remove a return or use %return when you are working on the next exercise and
run the code from the beginning all the way to the next return.)
Let’s start by looking at the data. Open the log file in a text editor and take a look at it.
Q3.00) What kind of information is present in this log file? Does the whole file look the same,
are there any special values?
Q3.0) What information do you think you'll need in order to calculate whether reaction time on
the ‘sequence trials’ decreased over the course of the experiment?
No need to write down your answers, just keep them in mind for the next exercises.
Now let’s load in the log file into MATLAB and store its contents in a t
able, which will make it
easy to view the total data set. (Remember: a t
able is just a handy way of storing data in
MATLAB, a little bit more versatile than a matrix or a struct).
6 Academic Skill : Cognitive Neuroscience Week 3
Run the script until the first return statement to load the data and organize it into a table.
TIP: use the ‘ Run’ button for this OR select the text with your mouse, then right click and
‘Evaluate Selection’.
To get a fair estimate of reaction times on the task, we first want to filter out all the trials in
which the participant gave the wrong answer, or did not give an answer at all. The easiest way
to do this is to select all the correct trials and use only these in the analysis. In MATLAB, we
can create a “filter” that selects specific elements of an array by checking if they satisfy a
certain condition.
Q3.1: Which condition should our trials satisfy in order to be considered "correct" trials?
Let’s implement this in MATLAB. We will create a new array consisting of zeros and ones,
where a zero means "does not satisfy the condition" and a one means "satisfies the condition".
We will now use our new array of zeros and ones to extract only the correct trials from the
table. This technique is called l ogical indexing in computer language jargon (indexing simply
means selecting from an array, and l ogical means using computer logic values, namely 0
a.k.a.
false and 1 a.k.a. true). As we have seen before, we can index a variable in MATLAB using
the following syntax:
But we’re not there yet… To index our table (which has rows and columns), we need both a row
index and a column index.
Q3.2: Do we need to use our newly created logical array as the row index or column index?
And what do we need to use as the other index?
Q3.3: Complete the code to create a new table called correctTrials that contains all
information from m
yTable for only the correct trials. Use logical indexing here!
Hint:
Q3.5: Complete the code to plot the reaction times for all correct trials. For the x-axis, use the
trialNumber column, and for the y-axis, use the reactionTime column. Hint: look up the
usage of the p
lot function if necessary!
As you can see from the plot, there are a few trials with an unusually long reaction time. These
8 Academic Skill : Cognitive Neuroscience Week 3
represent trials during which the participant was distracted from the task. We would like to
exclude these “outlier” trials as they might bias our results (always make sure you have a good
reason before throwing away any data points!).
Q3.8: After confirming that the outliers are indeed removed, you can overwrite your earlier
correctTrials table with the new correctTrials_no_outliers table (to prevent
having to type such a long name many times). Make sure to add the following line to your
script:
We are ready to compare the reaction times on the random trials versus the sequence trials!
Q3.9: Complete the code to plot the reaction times of random trials versus the reaction times
on sequence trials. You can use logical indexing again to select the trials that are “random”
and those that are “sequence”.
Q3.10: D
oes the plot look like you expected? How do you interpret these results?
SUBJECT analysis
In this final part you’ll harness the full power of doing analyses using computer programming.
What if we have multiple participants, each one of them having a log file? Instead of having to
go through each log file manually, we can now write a simple script that will do all the analyses
that we programmed before automatically on many participants, no matter if there are 2
participants, 10, 100, or even 10,000.
To keep things simple, we define a single “performance score” for each participant. We’ll base
this performance score on the last 200 trials in the experiment, where the participant should
have learned the sequence. The score will be the difference between the average reaction time
on the random and the sequence trials in these last 200 trials.
Q3.11: In your analysis script (for one subject), create a variable called finalTrials that
stores the last 200 correct trials.
Q3.13: Calculate the performance score (this should be the difference in average reaction time
between the random and the sequence trials).
Q3.14: You can now run your script on 1 subject, but also on several other subjects. Put your
code into a f
unction file called getSRTTScore_answer.m that takes as i nput the LOG file
name and as o
utput the value s
core. You can test out your new script with the provided log
file of our first subject. On CANVAS you find the log-files of several other subjects, for example
subject204300_seq8SRTT.log a
nd subject208654_seq8SRTT.log. D
ownload the two log files
and compute the s
core of these two subjects in your MATLAB output using your new
function.
When you have finished the exercises you can send in your results. What you have to send in
to CANVAS is: