Press "Enter" to skip to content

Tutorial: Using Carryover Responses as Stimuli

After participant responses are collected in an experiment, they can be used as other components on later trials of the experiment. This feature is called “carryover responses”. At the time being, FindingFive supports using carryover responses as stimuli within the same experiment. This can be useful for experimental designs where the participant is asked to review or judge their own responses in perception or decision making tasks.

Using Carryover Responses

Using carryover responses as stimuli is quite straightforward, except for the slightly awkward syntax used to identify responses. For example, to use the audio responses “AudioResponse” (name of the response) collected on trials “AudioRecordingTrial” (i.e., the name of the trial template) in block “TrainingBlock” (the name of the block), you would create a trial template that looks like:

"TestingTrialTemplate": {
    "stimuli": ["%r:TrainingBlock|AudioRecordingTrial|AudioResponse"],
    "responses": ["someResponse"],
    ... // other properties of the trial template
}

That is, the %r:BlockName|TrialTemplateName|ResponseName syntax is used to identify which collected response(s) to “carry over” and to use on trials generated by this trial template.

Dealing with non-uniqueness

In a typical design, the same response may be used many times with different stimuli on the same trial template. For example, the training phase may show participants a picture and ask for the name of the object depicted. This creates a non-unique reference issue: that is, %r:BlockName|TrialTemplateName|ResponseName may correspond to many participant responses under the hood, all collected in the block BlockName and on trial TrialTemplate.

To access all participant responses corresponding to a carryover response reference, simply repeat the carryover response reference as many times as needed. For example, 

"TestingTrialTemplate": {
    "stimuli": ["%r:TrainingBlock|AudioRecordingTrial|AudioResponse", "%r:TrainingBlock|AudioRecordingTrial|AudioResponse", "%r:TrainingBlock|AudioRecordingTrial|AudioResponse", "%r:TrainingBlock|AudioRecordingTrial|AudioResponse", "%r:TrainingBlock|AudioRecordingTrial|AudioResponse"],
    "responses": ["someResponse"],
    ... // other properties of the trial template
}

In the code above, the same carryover response reference is repeated 5 times in the trial template. FindingFive’s grammar engine interprets this as “using the first 5 such responses as stimuli”. In other words, the trial template will now generate 5 different trials, each of which use a different response, collected previously in TrianingBlock and on AudioRecordingTrial, as the stimulus.

This slightly cumbersome design actually allows a greater level of flexibility in choosing which stimuli to use in a trial template. For example, researchers can combine carryover response references with regular stimuli in the “stimuli” property (see “nested lists” on our grammar documentation pages). Researchers can also use the native “stimuli_pattern” feature to randomize carryover responses. In other words, all the existing ways of manipulating stimuli on a trial still work with carryover responses used as stimuli, because of this design.

Customizing the Carryover Responses as Stimuli (optional)

Stimuli based on carryover responses can be further customized just like a regular stimulus. To do so, simply create a stimulus of the name 

%r:BlockName|TrialTemplateName|ResponseName

In the upper right corner of stimulus definitions. Inside the stimulus definition, you can customize its properties just like a regular stimulus. Two things to keep in mind: 

  • Define the type of the stimulus correctly – if you are using an audio response as a stimulus, the type of the stimulus should also be “audio”;
  • The “content” property can be omitted. If defined, it will be ignored since the content of a stimulus based on carryover responses, by definition, is the response itself.

For example, we can create a stimulus named %r:TrainingBlock|AudioRecordingTrial|AudioResponse after we have used the same syntax in the “stimuli” property of a trial template. Then, we would like to make the stimulus invisible and truncated to only 5 seconds (let’s pretend the original audio response collected 10s of recording):

{
  "type": "audio",
  "visible": false,
  "duration": 5
}

That’s it!

Important Restriction

Using carryover responses as stimuli requires the trial template containing the dynamically referenced stimuli to be in a later block than that of the corresponding response. Using the example above, since we are using the AudioResponse in the TrainingBlock, the trial template that make use of the ‘%r:’ reference must be in a block that succeeds the TrainingBlock.

That is, in the procedure definition, it should look like this:

{
  // your block definitions here
  "block_sequence": ["TrainingBlock", "TestingBlock"],
}

Where “TestingBlock” is the block that contains the trial template using carryover responses as stimuli.

Questions?

Please feel free to discuss the use of carryover responses or file any bug reports on our researcher forum. Thanks!