Study Sequence
Once you have defined the components you want to be part of your study, you need to tell reVISit what order to show the components in. This is done by defining a sequence object in the reVISit Spec, which has a variety of powerful options for different randomization types, as well as attention checks, breaks, and advanced skip logic for more complex studies.
ReVISit also always injects a special end
component at the very end of the study, at which point the data is uploaded and the participant is instructed that they can safely close the window. Other blocks can also optionally be given id
, which can then be used to jump to them.
Simple Sequence
If your study has a set order, creating a sequence is simple. Define the components in the order you want to see them, and set your order to fixed
sequence: {
order: 'fixed'
components: [
'introduction',
'consent',
'trial1',
'trial2',
'post-survey'
],
}
Nested Sequence
Many studies need to randomize the order of some of the components, but not all. You may want every participant to see introduction
and consent
first, but then randomize the order they see trials in. To do this, sequences can be nested. Create another object around your trials, and change the order to random
.
sequence: {
order: 'fixed',
components: [
'introduction',
'consent',
{
order: 'random',
components: [
'trial1',
'trial2',
]
},
'post-survey'
]
}
In this case all participants will first see introduction
and consent
, and then randomly either trial1
or trial2
first, and then the other trial second, followed by the post-survey
for everyone.
Studies can be nested to arbitrary depths. A frequent use case is a within subjects study where you want to randomize the order a participant sees two conditions in, and then also randomize the order of the trials within each condition. That would look like the following.
sequence: {
order: 'fixed',
components: [
'introduction',
'consent',
{
order: 'random',
components: [
{
order: 'random',
components: [
'ConditionA-1',
'ConditionA-2',
]
},
{
order: 'random',
components: [
'ConditionB-1',
'ConditionB-2',
]
},
]
},
'post-survey'
]
}
Latin Square
Studies frequently want portions of their trials to be random, but also want to ensure that their trials are not susceptible to ordering effects due to bad luck in the randomization process. A latin square study design is commonly used to combat this, and we have latin squares as a built-in option for randomization. Just change the order to latinSquare
.
sequence: {
order: 'fixed',
components: [
'introduction',
'consent',
{
order: 'latinSquare',
components: [
'trial1',
'trial2',
]
},
'post-survey'
]
}
This option will create a latin square for any block using one behind the scenes, iterate through the latin square as new participants request sequences, and refill it when empty.
To further ensure consistency in the latin square, participants may be rejected
via the data dashboard. When a participant is rejected, their data gets flagged (but not deleted), and the sequence they had is returned to the sequence pool. This ensures that participants that start a study but do not complete it or are stopped before completing it (failed attention check, refused consent form, etc) do not use up a row of any generated latinSquares.