Question about randomise equal assignment to stimulus sub-conditions


Author
Message
zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Attachments
experiment.zip (237 views, 4.00 KB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.
zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.
Attachments
gist.iqx (261 views, 21.00 KB)
batch_V1_imgset_1_1.iqx (274 views, 2.00 KB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

zhaokoh
zhaokoh
Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)Expert (1.1K reputation)
Group: Forum Members
Posts: 19, Visits: 139
Dave - 5/23/2019
zhaokoh - 5/22/2019
zhaokoh - 5/22/2019
Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Thanks Dave for the details and suggestion. I will definitely give this a try and get back to you if there is any problem. Thanks.

Dave - 5/21/2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Dave - Tuesday, May 21, 2019
zhaokoh - Tuesday, May 21, 2019
Hi,

I need some help to find out if Inquisit / Inquisit Web 5 can perform the following:

Problem: I have 5 stimuli and each stimulus has 3 conditions. 

Each participant will go through all 5 stimuli (trials) (order counter-balanced) with one of the conditions (randomly selected per stimulus).

I can achieve the within-subject randomisation and counter-balanced using noreplacenorepeat.

However, is it possible to do the following between subjects as well?

For example, if I need only 1 sample per stimulus per condition, then I need a total of 15 trials.

If I have 3 participants, can I configure Inquisit in a way such that all conditions and all stimuli are covered at most once?

I know I can potentially use <batch> and groupnumber to achieve something similar, albeit tedious, but just want to check if there is any built-in mechanism that will do this?

Any suggestion/comment would be much appreciated.

Regards,
Zhao




You have to define between-subjects conditions in some way that satisfy your stated requirement that "I need only 1 sample per stimulus per condition, then I need a total of 15 trials." Whether you do that via <batch> and use separete scripts or you use a single script with several <expt>s defined would be up to your preference.

There is no built-in way to do this: Inquisit session B has no way of knowing whatever happenend in some other participant's Inquisit session A.

Thanks Dave for the quick reply. For simplicity, I used 1 sample above as an example - as I realised now it did not really consider as a between-subject design :). In the actual experiment, I will need more than that.

It sounds like perhaps a pre-generated configurations and group numbers + batch could do the trick - I will let Inquisit Web to assign the group number sequentially and based on the group number, I just pick the appropriate pre-generated configuration.

Thanks again.


Yes, that sounds like a viable solution. I'll be happy to think about other options, but I would need a clearer idea of the setup first -- if you have some example code you can share that illustrates how you may want items and/or conditions distributed across subjects, that would be great. Right now, my understanding of what you're aiming to do is a bit too vague to come up with a concrete proposal.

Thanks Dave, here attached the iqx file and one "include" file. Basically, the experiment involves displaying images to participants briefly (in three different exposure times) and request them to write down what they can see in 5 words.

So I have 21 images and 3 conditions (in exposure time). 

Each participant will go through all 21 images but only one condition per image. I would like to have 10 between-subject responses for each image/condition (i.e. 50 words per image per condition). As a result, I need a minimum of 30 participants to cover all cases, assuming that I can assign each participant to the correct condition evenly.

If you have other options besides pre-generated configuration, that would be much appreciated. For now, as mentioned above, I will let InquisitWeb generates sequential group number, and then create 30 batches and use group number to assign the participants to each batch.

Thanks!

Regards,
Zhao









Thanks for the script and more detailed explanation. I do not see a substantially better way than what you proposed -- you will have to pre-generate sets in some form and then administer those as between-subjects conditions. This need not be done via <batch>, you could achieve the same thing via conditional <include> elements (cf. e.g. https://www.millisecond.com/forums/FindPost15640.aspx ) or the legacy <variables> element (https://www.millisecond.com/support/docs/v4/html/language/elements/variables.htm ).

In the most simplistic version, you would define three sets of seven images each, let's call them A, B, and C:

<item set_a>
/1 = "im0001078.jpg"
/2 = "im0000104.jpg"
/3 = "im0003279.jpg"
/4 = "im0002667.jpg"
/5 = "im0002769.jpg"
/6 = "im0006806.jpg"
/7 = "im0000277.jpg"
</item>

<item set_b>
/1 = "im0002164.jpg"
/2 = "im0002537.jpg"
/3 = "im0001684.jpg"
/4 = "im0007360.jpg"
/5 = "im0000321.jpg"
/6 = "im0000774.jpg"
/7 = "im0001715.jpg"
</item>

<item set_c>
/1 = "im0001758.jpg"
/2 = "im0001445.jpg"
/3 = "im0008858.jpg"
/4 = "im0002033.jpg"
/5 = "im0000570.jpg"
/6 = "im0008876.jpg"
/7 = "thisimageismissinginthescriptyouattached.jpg"
</item>

<picture gdg_67soa>
/items = items_67soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_67soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_67soa;
1067 = mask1;
1127 = mask2;
1187 = mask3;
1247 = mask4;
1307 = mask5;
]
/ timeout = parameters.fixationduration + 67 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_67soa.currentvalue;
values.img_file = picture.gdg_67soa.currentitem;
values.soa = 67
]
/ recorddata = true
</trial>

<picture gdg_133soa>
/items = items_133soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_133soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_133soa;
1133 = mask1;
1193 = mask2;
1253 = mask3;
1313 = mask4;
1373 = mask5;
]
/ timeout = parameters.fixationduration + 133 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_133soa.currentvalue;
values.img_file = picture.gdg_133soa.currentitem;
values.soa = 133
]
/ recorddata = true
</trial>

<picture gdg_267soa>
/items = items_267soa
/select = noreplace
/position = (50%, 50%)
/ width = 100
/ height = 100
/size = (100%, 100%)
</picture>

<trial pic_267soa>
/ stimulustimes = [
0 = fixation_cross;
1000 = gdg_267soa;
1267 = mask1;
1327 = mask2;
1387 = mask3;
1447 = mask4;
1507 = mask5;
]
/ timeout = parameters.fixationduration + 267 + (5 * 60)
/branch = [surveypage.word_generation]
/ontrialend = [
values.img_num = picture.gdg_267soa.currentvalue;
values.img_file = picture.gdg_267soa.currentitem;
values.soa = 267
]
/ recorddata = true
</trial>

and then you'd just vary which set is assigned to which SOA condition between subjects:

<variables>
/ group = (1 of 3) (items_67soa = set_a, items_133soa = set_b, items_267soa = set_c)
/ group = (2 of 3) (items_67soa = set_b, items_133soa = set_c, items_267soa = set_a)
/ group = (3 of 3) (items_67soa = set_c, items_133soa = set_a, items_267soa = set_b)
/ groupassignment = groupnumber
</variables>


Hi Dave,

Just tried your suggested approach above. I think I might have done something incorrectly or not following your suggestion above, using only 2 images per set A, B, and C, I found that the 67, 133, 267 conditions are still not even distributed if I tried the experiment in InquisitWeb - via group number allocation. I can confirm that the group numbers assigned are unique (modulo 3), so each group was allocated three times out of 9, which is good. However, some images have the same condition executed twice, which I expect only once. Here attached the two main files, if you notice any incorrect lines, please let me know. Thanks for your help.

> However, some images have the same condition executed twice

I don't understand what this means. Please clarify.

Also: In the files you attached, there does not appear to be any <block> that actually runs the test trials (<trial pic_67soa>, <trial pic_133soa>, <trial pic_267soa>). A block called "block1" is referenced in your <expt> element

<expt>
/onexptend = [values.completed = 1]
/blocks = [1 = intro; 2 = consent; 3 = block1; 4 = completion]
</expt>

but that block is nowhere defined in your script(s).

Thanks Dave, the block definition was in my include script, which I didn't include, here it is
<block block1>
/trials = [1-3 = noreplacenorepeat(pic_67soa,pic_133soa,pic_267soa)]
/ preinstructions = (block1_prepage)
</block>

Here is the attached data file showing that for image 0001277, the condition 133 was executed twice, my original impression with the setup above, it will not repeat the condition per image if I have 9 participants (9 images split into 3 per condition - 67/133/267)? Maybe I misinterpret this.

Any comments would be much appreciated.





Attachments
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search