Millisecond Forums

Inserting Likert scale in BART!

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

By zeynep - 3/11/2013

Hi,


I am using BART script for my project. I do want to insert an emotion sclae within the task though. I prepared a likert scale with 10 items, and I manged to to insert it in the end of the task.


What I also want to do is to create another condition in which participants are asked to rate their emotions when the baloon first explodes and when they choose the collect button first. Is this possible by using 'branch' attribute within trial.pop and trial.collect? But then after they completed the scale, I want participants to continue with BART trials.


What I tried within the trial.collect script was like this:



<trial collect>
/ ontrialbegin = [values.nonexplodedballoons +=  1]
/ ontrialbegin = [if (values.ballooncount < 6) values.nonexplodedballoons_5 += 1]
/ ontrialbegin = [if (values.ballooncount > 5 && values.ballooncount <11 ) values.nonexplodedballoons_10 += 1]
/ ontrialbegin = [if (values.ballooncount > 10 && values.ballooncount <16 ) values.nonexplodedballoons_15 += 1]


/ ontrialbegin = [shape.blank.width = picture.balloon.width]
/ ontrialbegin = [shape.blank.height = picture.balloon.height]
/ ontrialbegin = [values.totalearnings = values.totalearnings + (values.pumpcount * values.pumpvalue)]
/ ontrialbegin = [reset(list.pumpresult)]
/ stimulustimes = [1=collectsound, collectbuttonselected, totalearnings; 100 = collectbutton]


/ ontrialend = [values.averagepumpcount = values.totalpumpcount/values.ballooncount]
/ ontrialend = [if (values.ballooncount < 6) values.averagepumpcount_5 = values.totalpumpcount_5/values.ballooncount_5]
/ ontrialend = [if (values.ballooncount > 5 && values.ballooncount <11 ) values.averagepumpcount_10 = values.totalpumpcount_10/values.ballooncount_10]
/ ontrialend = [if (values.ballooncount > 10 && values.ballooncount <16 ) values.averagepumpcount_15 = values.totalpumpcount_15/values.ballooncount_15]


/ ontrialend = [values.adjustedtotalpumpcount += values.pumpcount]
/ ontrialend = [if (values.ballooncount < 6) values.adjustedtotalpumpcount_5 += values.pumpcount]
/ ontrialend = [if (values.ballooncount > 5 && values.ballooncount <11 ) values.adjustedtotalpumpcount_10 += values.pumpcount]
/ ontrialend = [if (values.ballooncount > 10 && values.ballooncount <16 ) values.adjustedtotalpumpcount_15 += values.pumpcount]


/ ontrialend = [values.adjustedaveragepumpcount = values.adjustedtotalpumpcount / values.nonexplodedballoons]
/ ontrialend = [if (values.ballooncount < 6) values.adjustedaveragepumpcount_5 = values.adjustedtotalpumpcount_5 / values.nonexplodedballoons_5]
/ ontrialend = [if (values.ballooncount > 5 && values.ballooncount <11 ) values.adjustedaveragepumpcount_10 = values.adjustedtotalpumpcount_10 / values.nonexplodedballoons_10]
/ ontrialend = [if (values.ballooncount > 10 && values.ballooncount <16 ) values.adjustedaveragepumpcount_15 = values.adjustedtotalpumpcount_15 / values.nonexplodedballoons_15]


/ response = noresponse
/ branch = [if (values.nonexplodedballoons == 1) block.emo]
/ branch = [trial.init]
/ responseinterrupt = trial
</trial>



When I run the script, nothing happens that I want, and it gives an error saying that "the element 'emo' in branch expression 'emo' is the wrong type of element".



Could you please tell me if what I want to do is possible, and if it is could you also indicate what I am doing wrong?


Thanks in advance.

By Dave - 3/11/2013

/ branch = [if (values.nonexplodedballoons == 1) block.emo]


You can't branch to a <block> from a <trial> instead you need to branch to the <likert>.

By zeynep - 3/11/2013

Hi Dave,


Thank you very much for your quick reply. I understand and it works when I branch it to the likert.


However, I still see the baloon picture, collect and pump button etc. in the background. How can I get rid of that, during the likert within the trial?


By Dave - 3/11/2013

However, I still see the baloon picture, collect and pump button etc. in the background. How can I get rid of that, during the likert within the trial?


You'll want to display a blank <shape> in the likert's /stimulusframes to erase screen contents of any previous trial. See the "How to erase stimuli" topic in the documentation.

By zeynep - 3/12/2013

Hi Dave,


Sorry to bother you again, as I am new to inquisit as well to working with syntaxes I am struggling a bit.


1) I've been tryin to erase pictures of previous trial, but something doesn't work. Thers is already a <shape blank> element in the existing script of BART. It is positioned more or less where I want it to be.


<shape blank>
/ shape = rectangle
/ color = white
/ size = (235px, 309px)
/ position = (33%, 83%)
/ valign = bottom
</shape>


Therefore I tried using that one in the likert's stimulusframes, like this:


<likert emolikert>
/anchors=[1="very slightly/not at all"; 2="a little"; 3="moderately"; 4="quite a bit"; 5="very much"]
/position= (50%, 80%)
/mouse= true
/fontstyle = ("Arial", 2%, false, false, false, false, 5, 0)
/stimulusframes = [1-10 = emo_question, emotion, shape.blank]
/showmousecursor = true
</likert>


or like this:


<likert emolikert>
/anchors=[1="very slightly/not at all"; 2="a little"; 3="moderately"; 4="quite a bit"; 5="very much"]
/position= (50%, 80%)
/mouse= true
/fontstyle = ("Arial", 2%, false, false, false, false, 5, 0)
/stimulusframes = [1-10 = emo_question, emotion]
/stimulusframes = [1-10 = shape.blank]
/showmousecursor = true
</likert>


However, it gives an error saying that either 'shape blank content couldn't be located', or that 'stimulus sequence is already defined! I have also tried to change the 'erase' attributes in the picture elements, however then inquisit told me that is not valid. For exapmle:


 <picture balloon>
/ items = ("balloon.jpg")
/ position = (33%, 83%)
/ valign = bottom
/ size = (100%, 100%)
/ erase = false                    >> I tried to change this into "true"
/ transparentcolor = white
</picture>


 2) My second problem is with my emotion items (which works perfectly when it is in the end of the whole task) As I said before I want them to be appear on the screen together with its question after the first explosion of the balloon. When I try to run the experiment, however, inquisit displays only one item and then ends the trial. What I want  is that after the first explosion it will display all 10 items, and then continue the BART from no. of baloon which was exploded till the end of the task. For your perusal, here is the script for my emotion scale:


***************EMOTION SCALE****************


*******items*********


<item emotion>
/1="happy"
/2="tense"
/3="excited"
/4="pleased"
/5="alarmed"
/6="sad"
/7="satisfied"
/8="afraid"
/9="relaxed"
/10="angry"
</item>



<item question>
/1="How do you feel right now? Please indicate by using the 5 point scale"
</item>


*******texts*********


<text emo_question>
/items=question
/vjustify = center
/position = (50%, 20%)
/fontstyle = ("Arial", 3%, false, false, false, false, 5, 0)
</text>


<text emotion>
/items=emotion
/ position = (50%,65%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 0)
/ select = noreplace
</text>


******likert options********


<likert emolikert>
/anchors=[1="very slightly/not at all"; 2="a little"; 3="moderately"; 4="quite a bit"; 5="very much"]
/position= (50%, 80%)
/mouse= true
/fontstyle = ("Arial", 2%, false, false, false, false, 5, 0)
/stimulusframes = [1-10 = emo_question, emotion]
/showmousecursor = true
</likert>


***blocks****


<block emoins>
/ trials = [1=instructions]
</block>


<block emo>
/trials=[1-10=emolikert]
/bgstim= (emo_question)
</block>



Thanks in advance, hope I didn't explain it too complicated. If you could help, I'd be appreciated.

By Dave - 3/12/2013

/stimulusframes = [1-10 = emo_question, emotion, shape.blank]


The corrcet specification would be


/stimulusframes = [1=blank, emo_question, emotion]


You'll find basics like this covered in the respective documentation topics as well as the various tutorials.


/ erase = false                    >> I tried to change this into "true"


As detailed in the documentation, you also need to specify the color to erase the stim with:


<text sometext>
/ items = ("blah blah blah")
/
erase = true(0, 255, 0)
</text>


<likert emolikert>
/anchors=[1="very slightly/not at all"; 2="a little"; 3="moderately"; 4="quite a bit"; 5="very much"]
/position= (50%, 80%)
/mouse= true
/fontstyle = ("Arial", 2%, false, false, false, false, 5, 0)
/stimulusframes = [1-10 = emo_question, emotion]
/showmousecursor = true
</likert>


<likert emolikert>
[...]
/ branch = [if (likert.emolikert.trialcount < 10) likert.emolikert]
</likert>

By zeynep - 3/14/2013

Hi Dave,


Thank you very much, you helped me a lot.


Now I am having another trouble, and cannot find where I make the mistake altough went throught the explanations. I managed to insert the likert sclae within the 'collect trial' of BART. I also want to give the participants the instructions for the scale right before the likert scale. I have created and item element:


<item emo_ins>
/ 1 = "Now you will be presented some emotion words. We ask you to indicate how strongly you feel the presented emotion RIGHT NOW on a given five point scale. Click the left mouse button to begin."
</item>


<text  emo_ins>
/ items = emo_ins
/ vjustify = center
/ hjustify = left
/ size = (80%, 80%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 0)
/ resetinterval = 0
</text>


<trial  emo_ins>
/ stimulustimes = [1=emo_ins]
/ inputdevice = mousekey
/ validresponse = (lbuttonup)
/ recorddata = false
</trial>


Then I branch the trial into the instructions first, then to likert scale:


<trial collect>


[...]


/ response = noresponse
/branch = [if (values.nonexplodedballoons == 1) trial.emo_ins]
/ branch = [if (trial.emo_ins == 1) likert.emolikert]

/ branch = [trial.init]
/ responseinterrupt = trial


It seemd working, cause I got the emo_ins first! But following the emo_ins the other instructions of the task were displayed as well. I cannot find how to eliminate them, I don't know why they keep coming back with the emo_ins.


If you need to know the other instructions:


<item instructions>
/ 1 = "Now you're going to see <%values.totalballoons%> balloons, one after another, on the screen. For each balloon, you will use the mouse to click on the button that will pump up the balloon. Each click on the mouse pumps the balloon up a little more.


BUT remember, balloons pop if you pump them up too much. It is up to you to decide how much to pump up each balloon. Some of these balloons might pop after just one pump. Others might not pop until they fill the whole screen.


You get MONEY for every pump. Each pump earns €<% expressions.pumpvalue %>. But if a balloon pops, you lose the money you earned on that balloon. To keep the money from a balloon, stop pumping before it pops and click on the button labeled ~"Collect €€€~".


After each time you collect €€€ or pop a balloon, a new balloon will appear.


At the end of the experiment, you will be paid the amount earned on the game.


Click the left mouse button to see the summary."
/ 2 = "Summary


* You make €<%expressions.pumpvalue%> for each pump.
* You save the money from a balloon when you click ~"Collect €€€~".
* You lose money from a balloon when it pops.
*There are just <%values.totalballoons%> balloons.
*You will be paid the exact amount you earned on the game.


Now, do you have any questions?


Click the left mouse button to begin."
/ 3 = "Congratulations!


You have earned €<% expressions.totalearnings %>.


This task is now complete. Click the left mouse button to continue."
/ 4 = "Now you will be presented some emotion words. We ask you to indicate how strongly you feel the presented emotion RIGHT NOW on a given five point scale.


Click the left mouse button to begin."
</item>


<text  instructions>
/ items = instructions
/ vjustify = center
/ hjustify = left
/ size = (80%, 80%)
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 0)
/ select = sequence
/ resetinterval = 0
</text>


<trial  instructions>
/ stimulustimes = [1=instructions]
/ inputdevice = mousekey
/ validresponse = (lbuttonup)
/ recorddata = false
</trial>



Sorry if these are very basic, I think I get blind sometimes. Thanks for your help again>