Millisecond Forums

Remove items from stimulus pool

https://forums.millisecond.com/Topic13284.aspx

By inquisit_inquiry - 5/14/2014

I have multiple conditions for stimulus sentences that I would like participants to make acceptability judgments on. However, if a participant receives sentence 1 in condition 1, I would like to make sure they do not receive sentence 1 from any other condition. The sentences will be presented in a random order each time. What's the best way to make Inquisit do this?

Additionally, I would like to make sure the proportion of sentences from each condition is balanced every time.

I've tried something like the following dummy script (using ontrialend & removeitem to eliminate same-index sentences from the stimulus pool) and it technically runs, but doesn't seem to do anything. Would it be better to use a list to store the stimulus sentences?

<item conditionOne>
/1 = sentence1
/2 = sentence2
/3 = sentence3
</item>

<item conditionTwo>
/1 = 1sentence
/2 = 2sentence
/3 = 3sentence
</item>

<item conditionThree>
/1 = sen1tence
/2 = sen2tence
/3 = sen3tence
</item>

<text conOne>
/items = conditionOne
/select = noreplace
</text>

<text conTwo>
/items = conditionTwo
/select = noreplace
</text>

<text conThree>
/items = conditionThree
/select = noreplace
</text>

<likert conOne>
/stimulusframes = [1=conOne]
/numpoints = 5
/anchors = [1="extremely unnatural"; 2="somewhat unnatural"; 3="possible"; 4="somewhat natural"; 5="extremely natural"]
/ontrialend = [text.conTwo.removeitem(text.conOne.currentindex) && text.conThree.removeitem(text.conOne.currentindex)]
</likert>

(etc, for likert conTwo/conThree)

<block practice>
/trials = [1-3 = noreplace(conOne, conTwo, conThree)]
</block>

<expt>
/blocks = [1 = practice]
</expt>
By Dave - 5/14/2014

Simply define a common selection pool for the three <text> elements:

<list mylist>
/ items = (1,2,3)
</list>

<text conOne>
/items = conditionOne
/select = list.mylist.nextvalue
</text>

<text conTwo>
/items = conditionTwo
/select = list.mylist.nextvalue
</text>

<text conThree>
/items = conditionThree
/select = list.mylist.nextvalue
</text>
By inquisit_inquiry - 5/14/2014

Great! That makes so much sense, thank you.

One more question - is it possible to have the mouse return to the same position on the screen in between each trial?
By Dave - 5/14/2014

> is it possible to have the mouse return to the same position on the screen in between each trial?

Not automatically. You'd have to do something along the lines of https://www.millisecond.com/forums/Topic13214.aspx#bm13217
By inquisit_inquiry - 7/22/2014

Hi Dave, I have another question for you, about the same script/experiment.

I'd like to have the stimuli appear on the screen (without the rating scale), then have the likert scale appear below the stimulus after the participant presses a button. Is there a way to delay the appearance of the likert scale this way? I know you can do it using responseframe/time, but I want it to be triggered by the participant's response.

I tried presenting the stimuli as a trial first, and then having it branch to a likert, but the problem is that the same sentence doesn't show up for both the trial and the likert (since it selects a new list index...) Here's an example of my code:

<likert originalR>
/stimulusframes = [1 = original, likertInst]
/numpoints = 7
/anchors = [1="extremely unnatural"; 2="somewhat unnatural"; 3="a little unnatural"; 4="possible"; 5="a little natural" 6="somewhat natural"; 7="extremely natural"]
/anchorwidth = 20%
/position = (50%,70%)
</likert>

<trial original>
/stimulusframes = [1 = original, instructions]
/validresponse = (" ")
/branch = [likert.originalR]
</trial>

As always, thanks so much for your help!

By Dave - 7/22/2014

You need to set up a separate <trial> that displays the stimulus and accepts the button press and then follow that up with the <likert>.
By inquisit_inquiry - 7/22/2014

Right - that's what I had. Anyways, I've just figured out how to solve the problem I was having, so all's well. Thanks!
By Dave - 7/22/2014

Sorry, I missed the 2nd part of the question. Several options:

(a) Set the <text> element's /erase attribute to 'false' and remove it from the <likert>'s /stimulusframes.

(b) Use <list>s, <values> and a bit of conditional logic to make sure that selection only occurs in the <trial>, but not the <likert>.