Millisecond Forums

Making the correct response to radiobuttons conditional

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

By lachie.kay1 - 4/30/2020

Hi all, 

I'm currently trying to create a thought suppression task where, at the beginning of each trial, participants are presented with a word that they have to avoid thinking about.

I'd like to make catch trials where participants have to identify the word they were previously shown, from a list, at the end of the trial (to ensure they are paying attention). At the moment I'm using radiobuttons to achieve this.

On each trial, the word is drawn from a list of items and so the correct radiobutton response on catch trials will be conditional. I'm not sure to to make this happen as radiobutton doesn't have the /iscorrectresponse option.

Here's the relevant parts of the script I have so far:

<item CatchTrialItems>
/1 = "Dog"
/2 = "Cat"
/3 = "Bird"
/4 = "Fish"
/5 = "Horse"
/6 = "Spoon"
/7 = "Table"
/8 = "Chair"
/9 = "Desk"
/10 = "Lamp"
</item>

<text CatchTrialText>
/ items = CatchTrialItems
/ fontstyle = ("Arial", 5%)
/ txcolor = white
/ halign = center
/ valign = center
/ select = noreplacenorepeat
</text>

<text ThoughtSuppInstuctCatch>
/ items = ("Don't think about a <%text.CatchTrialText.currentitem%>")
/ fontstyle = ("Arial", 5%)
/ txcolor = white
/ halign = center
/ valign = center
</text>

<text mask>
/items = ("+")
/ fontstyle = ("Symbol", 12%, false, false, false, false, 5, 1)
/ txcolor = (white)
/txbgcolor = black
/position = (50%, 50%)
/erase = false
</text>

<trial CatchTrial>
/ stimulustimes = [1 = CatchTrialText; 3000 = ThoughtSuppInstuctCatch; 5000 = dummy; 5000 = mask]
/ trialduration = 15000
/ branch = [
    surveypage.catchpage
]
</trial>

<surveypage catchpage>
/questions = [1=catch]
/showpagenumbers = false
/showquestionnumbers = false
/showbackbutton = false
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 1)
/ txcolor = (255, 255, 255)
/itemfontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ errormessage = true(Error,800)
/ correctmessage = true(accurate,800)
/ ontrialend = [list.CatchAccuracy.insertitem(surveypage.catch.correct, 1); ]
</surveypage>

<radiobuttons catch>
/ caption = "What object were you not supposed to think about?"
/ options = ("Dog"; "Cat"; "Bird"; "Fish"; "Horse"; "Spoon"; "Table"; "Chair"; "Desk"; "Lamp";)
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
/ validresponse = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
/ orientation = vertical
/ required = true        
</radiobuttons>


Any help would be greatly appreciated,
Thank you!
By Dave - 5/1/2020

lachie.kay1 - 5/1/2020
Hi all, 

I'm currently trying to create a thought suppression task where, at the beginning of each trial, participants are presented with a word that they have to avoid thinking about.

I'd like to make catch trials where participants have to identify the word they were previously shown, from a list, at the end of the trial (to ensure they are paying attention). At the moment I'm using radiobuttons to achieve this.

On each trial, the word is drawn from a list of items and so the correct radiobutton response on catch trials will be conditional. I'm not sure to to make this happen as radiobutton doesn't have the /iscorrectresponse option.

Here's the relevant parts of the script I have so far:

<item CatchTrialItems>
/1 = "Dog"
/2 = "Cat"
/3 = "Bird"
/4 = "Fish"
/5 = "Horse"
/6 = "Spoon"
/7 = "Table"
/8 = "Chair"
/9 = "Desk"
/10 = "Lamp"
</item>

<text CatchTrialText>
/ items = CatchTrialItems
/ fontstyle = ("Arial", 5%)
/ txcolor = white
/ halign = center
/ valign = center
/ select = noreplacenorepeat
</text>

<text ThoughtSuppInstuctCatch>
/ items = ("Don't think about a <%text.CatchTrialText.currentitem%>")
/ fontstyle = ("Arial", 5%)
/ txcolor = white
/ halign = center
/ valign = center
</text>

<text mask>
/items = ("+")
/ fontstyle = ("Symbol", 12%, false, false, false, false, 5, 1)
/ txcolor = (white)
/txbgcolor = black
/position = (50%, 50%)
/erase = false
</text>

<trial CatchTrial>
/ stimulustimes = [1 = CatchTrialText; 3000 = ThoughtSuppInstuctCatch; 5000 = dummy; 5000 = mask]
/ trialduration = 15000
/ branch = [
    surveypage.catchpage
]
</trial>

<surveypage catchpage>
/questions = [1=catch]
/showpagenumbers = false
/showquestionnumbers = false
/showbackbutton = false
/ fontstyle = ("Arial", 10%, false, false, false, false, 5, 1)
/ txcolor = (255, 255, 255)
/itemfontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/ errormessage = true(Error,800)
/ correctmessage = true(accurate,800)
/ ontrialend = [list.CatchAccuracy.insertitem(surveypage.catch.correct, 1); ]
</surveypage>

<radiobuttons catch>
/ caption = "What object were you not supposed to think about?"
/ options = ("Dog"; "Cat"; "Bird"; "Fish"; "Horse"; "Spoon"; "Table"; "Chair"; "Desk"; "Lamp";)
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
/ validresponse = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
/ orientation = vertical
/ required = true        
</radiobuttons>


Any help would be greatly appreciated,
Thank you!

You'll have to do something like

/ ontrialend = [if (radiobuttons.catch.response ==  text.catchtrialtext.currentindex) {list.CatchAccuracy.insertitem(1, 1);} else {list.CatchAccuracy.insertitem(0, 1);}; ]
By lachie.kay1 - 5/2/2020

Works perfectly now, thank you!!