By rouge - 10/22/2015
Dear all,
for an experiment I would like to design a program that consisits of two blocks. The first block consists of video presentation followed by a question the participant is asked to answer. Within a second block - the participant is again presented videos - but this time - the participant shall be allowed to watch the video as often es he/she wants. After the participant decides that he has watched the video often enough he shall be forwarded to the same question as in block one. I interpreted "repetetion" as wrong answer, and "non repetetion" as correct answer. The aim was to program the trial in a way that as soon as the participant gives the "correct" answer - the repetition of the video scene stops and the question appears. However, I am not sure about the "name tag" of my branch. I tried it with "correctstreak" but that does not work. Does anybody know the solution to this problem? thank you very very much in advance!
experimental trial without repetition
<trial playvideo_kein_Tor> / stimulustimes = [0=fixation; 1000 = Videos_kein_Tor] / timeout = 10 / validresponse = (noresponse) / branch = [trial.showquestionaboutmyvideo] </trial>
<trial playvideo_Tor> / stimulustimes = [0=fixation; 1000 = Videos_Tor] / timeout = 10 / validresponse = (noresponse) / branch = [trial.showquestionaboutmyvideo] </trial>
<trial showquestionaboutmyvideo> / stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II] / validresponse = ("a", "l") / correctresponse = ("a", "l") </trial>
<block experimentblock_ohne_wiederholung> / trials = [1 - 44=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
Experimental-Block with repetition
<trial repeat_trial> / stimulustimes = [0=Entscheidung_Wiederholung; 0=Zeichen_Wiederholung; 0=Zeichen_Wiederholung_II; 0=Zeichen_keine_Wiederholung; 0=Zeichen_keine_Wiederholung_II] / validresponse = ("a", "l") / correctresponse = ("a") / branch = [if (trial.mytrial.correctstreak = 1) trial.showquestionaboutmyvideo] / branch = [if (trial.mytrial.correctstreak < 1) trial.repeat_trial] </trial>
<block experimentblock_mit_wiederholung> / trials = [1 - 44=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
<expt> /blocks=[1=testblock; 2=experimentblock_ohne_wiederholung; 3=experimentblock_mit_wiederholung; 4=FuÃballerfahrung; 5=soccerexperience; 6=demographics] /postinstructions = (thank_you) </expt>
|
By Dave - 10/23/2015
I'm not sure why you would want or need correctstreak here Also,
trial.mytrial.correctstreak
doesn't seem to make any sense as there is no <trial> element called "mytrial" in your code. Finally, you are not using the proper operators in your /branch conditions. '=' is the *assignment* operator, what you need, however, is the *logical* operator '=='.
Simply have the trial /branch according to either the trial's response or correct property. Here's an example using <text> elements instead of <video> (it works the same when using <video> stimuli):
<text repeat_question> / items = ("Press L to repeat the video. Press A to move on.") </text>
<text question_about_video> / items = ("Imagine question about the video here...") </text>
<values> / kein_tor_item = 1 / tor_item = 1 </values>
<text Videos_kein_Tor> / items = ("Kein Tor 1", "Kein Tor 2", "Kein Tor 3", "Kein Tor 4") / select = values.kein_tor_item </text>
<list kein_tor> / poolsize = 4 </list>
<text Videos_Tor> / items = ("Tor 1", "Tor 2", "Tor 3", "Tor 4") / select = values.tor_item </text>
<list tor> / poolsize = 4 </list>
<trial playvideo_kein_Tor> / ontrialbegin = [if (trial.repeat_kein_tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex] / stimulustimes = [0=Videos_kein_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo] </trial>
<trial repeat_kein_Tor> / stimulusframes = [1=repeat_question] / validresponse = (30,38) / branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_kein_tor] </trial>
<trial playvideo_Tor> / ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex] / stimulustimes = [0=Videos_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo] </trial>
<trial repeat_Tor> / stimulusframes = [1=repeat_question] / validresponse = (30,38) / branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_tor] </trial>
<trial showquestionaboutmyvideo> / stimulustimes = [0=question_about_video] / validresponse = ("a", "l") / correctresponse = ("a", "l") </trial>
<block experimentblock_ohne_wiederholung> / trials = [1-8=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
<block experimentblock_mit_wiederholung> / trials = [1-8=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
<expt> /blocks=[1=experimentblock_ohne_wiederholung; 2=experimentblock_mit_wiederholung; ] </expt>
|
By rouge - 10/29/2015
Hello Dave,
thank you very much for your kind help. As you might anticipated I am not a "branch-expert" . I tried to derive the elements from the Inquisit 4 Documentation, but still - the branch feature is a big question mark to me.
I am working on it :-) ! Again: Thank you very much!
|
By rouge - 10/30/2015
Hello Dave - I have one question in regard to your programmed text. What is the "value" option? Does it count the number of repetitions the participant chooses? Thank you very much in advance for your anser! Best regards.
|
By rouge - 10/30/2015
and what does following mean? is that for structuring the values of the repetions? sorry for those questions - still an absolute beginner.
<list kein_tor> / poolsize = 4 </list>
|
By Dave - 10/30/2015
A <values> entry is a global variable. In this case, it is used to store an item number. The item number is retrieved from the <list>. Because there are four items in the example code at hand ("Tor 1" to "Tor 4"), the list has a poolsize of 4.
|
By rouge - 10/30/2015
Dear Dave, thank you very much for your fast answer! Maybe it´s a language barrier. Or my minor experiences in programming. I am still not understanding why I need the values entry. Or is it just the program which needs this definition? If I have 50 videos with 25 goals, and 25 no goals - do I have to define the poolsize as "25" ? Because of your help my program works! Just to make sure - did I oversee any mistakes in my text? Thank you very much in advance for your answer! And best greetings from Germany
Test-Block:
<item test_video_1> /1="Trialvideo1.mp4" </item>
<item test_video_2> /1="Trialvideo2.mp4" </item>
<video test_video_1> / items = test_video_1 / size = (60%, 60%) / playthrough = true / valign = center </video>
<video test_video_2> / items = test_video_2 / size = (60%, 60%) / playthrough = true / valign = center </video>
<values> / test_video_1_item = 1 / test_video_2_item = 1 </values>
<list test_video_1_item> / poolsize = 1 </list>
<list test_video_2_item> / poolsize = 1 </list>
<trial playvideo_test_video_1> / ontrialbegin = [if (trial.repeat_test_video_1.response!=38) values.test_video_1_item=list.test_video_1_item.nextindex] / stimulustimes = [0=fixation; 1000 = test_video_1] / timeout = 1000 / validresponse = (noresponse) / branch = [if (script.currentblock=="testblock")trial.repeat_test_video_1 else trial.showquestionaboutmyvideo] </trial>
<trial repeat_test_video_1> /stimulusframes=[1=repeat_question] /validresponse = (30, 38) / branch = [if(trial.repeat_test_video_1.response==30) trial.showquestionaboutmyvideo else trial.playvideo_test_video_1] </trial>
<trial playvideo_test_video_2> / ontrialbegin = [if (trial.repeat_test_video_2.response!=38) values.test_video_2_item=list.test_video_2_item.nextindex] / stimulustimes = [0=fixation; 1000 = test_video_2] / timeout = 1000 / validresponse = (noresponse) / branch = [if (script.currentblock=="testblock")trial.repeat_test_video_2 else trial.showquestionaboutmyvideo] </trial>
<trial repeat_test_video_2> /stimulusframes=[1=repeat_question] /validresponse = (30, 38) / branch = [if(trial.repeat_test_video_2.response==30) trial.showquestionaboutmyvideo else trial.playvideo_test_video_2] </trial>
<block testblock> / trials = [1-2=noreplace (playvideo_test_video_1, playvideo_test_video_2)] / postinstructions = (posttest) /preinstructions = (Instruktion_1, Instruktion_2, Instruktion_3, Instruktion_4) </block>
Experimental-Block
<video Videos_kein_Tor> / items = Videos_kein_Tor / size = (60%, 60%) / playthrough = true / valign = center / select = values.kein_tor_item </video>
<video Videos_Tor> / items = Videos_Tor / size = (60%, 60%) / playthrough = true / valign = center / select = values.tor_item </video>
<values> / kein_tor_item = 1 / tor_item = 1 </values>
<list kein_tor> / poolsize = 25 </list>
<list tor> / poolsize = 25 </list>
<trial playvideo_kein_Tor> / ontrialbegin = [if (trial.repeat_kein_Tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex] / stimulustimes = [0=fixation; 1000 = Videos_kein_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if (script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo] </trial>
<trial repeat_kein_Tor> /stimulusframes=[1=repeat_question] /validresponse = (30, 38) / branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_kein_tor] </trial>
<trial playvideo_Tor> / ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex] / stimulustimes = [0=Videos_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo] </trial>
<trial repeat_Tor> / stimulusframes = [1=repeat_question] / validresponse = (30,38) / branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo else trial.playvideo_tor] </trial>
<trial showquestionaboutmyvideo> / stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II] / validresponse = ("a", "l") / correctresponse = ("a", "l") </trial>
<block experimentblock_mit_wiederholung> / trials = [1 - 5=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
<expt> /blocks=[1=testblock; 2=experimentblock_mit_wiederholung; 3=FuÃballerfahrung; 4=soccerexperience; 5=demographics] /postinstructions = (thank_you) </expt>
|
By Dave - 10/30/2015
You need the variables (<values> entries) because you must prevent a *new / different* item from being selected *if* a participant responds with "repeat". That's what the /ontrialbegin logic ensures. Only if the response was *not repeat* a new item number is selected from the respective <list>. And yes, if you have 25 items per category ("Tor" and "Kein Tor"), the poolsize needs to be 25.
|
By rouge - 10/30/2015
Ah great! Thank you very much for the explanation! All the best!
|
By rouge - 11/5/2015
Dear Dave, in regard to my experiment there is one little mistake I cannot solve. After each video presentation the participant can decide weather to repeat the video or not. As soon as the participants does not want to see the video again, he/she decides about the video outcome. If the participant does not want to repeat the video, she/he can immediately can jump to the decision outcome. What I tried is following: I always jumped directly to the decision task and always decided for a "goal". After some videos, however, the programm starts to repeat the same video as long as I decide for "goal" until I decide for "no-goal". By any chance, do you know what I did program wrong? Thank you very much in advance for your answer! Best greetings!
Experimental-Block
<video Videos_kein_Tor> / items = Videos_kein_Tor / size = (60%, 60%) / playthrough = true / valign = center / select = values.kein_tor_item </video>
<video Videos_Tor> / items = Videos_Tor / size = (60%, 60%) / playthrough = true / valign = center / select = values.tor_item </video>
<values> / kein_tor_item = 24 / tor_item = 24 </values>
<list kein_tor> / poolsize = 24 </list>
<list tor> / poolsize = 24 </list>
<trial playvideo_kein_Tor> / ontrialbegin = [if (trial.repeat_kein_Tor.response!=38) values.kein_tor_item=list.kein_tor.nextindex] / stimulustimes = [0=fixation; 1000 = Videos_kein_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if (script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_kein_Tor else trial.showquestionaboutmyvideo_kein_Tor] </trial>
<trial repeat_kein_Tor> /stimulusframes=[1=repeat_question; 1=Zeichen_Wiederholung; 1=Zeichen_Wiederholung_II; 1=Zeichen_keine_Wiederholung; 1=Zeichen_keine_Wiederholung_II] /validresponse = (30, 38) / branch = [if(trial.repeat_kein_tor.response==30) trial.showquestionaboutmyvideo_kein_Tor else trial.playvideo_kein_Tor] </trial>
<trial playvideo_Tor> / ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex] / stimulustimes = [0=fixation; 1000 = Videos_kein_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo_Tor] </trial>
<trial repeat_Tor> / stimulusframes = [1=repeat_question; 1=Zeichen_Wiederholung; 1=Zeichen_Wiederholung_II; 1=Zeichen_keine_Wiederholung; 1=Zeichen_keine_Wiederholung_II] / validresponse = (30,38) / branch = [if(trial.repeat_tor.response==30) trial.showquestionaboutmyvideo_Tor else trial.playvideo_tor] </trial>
<trial showquestionaboutmyvideo_kein_Tor> / stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II] / validresponse = (30, 38) / correctresponse = (38) </trial>
<trial showquestionaboutmyvideo_Tor> / stimulustimes = [0=Entscheidung_Manipulation; 0=Zeichen_Tor; 0=Zeichen_Tor_II; 0=Zeichen_kein_Tor; 0=Zeichen_kein_Tor_II] / validresponse = (30, 38) / correctresponse = (30) </trial>
<block experimentblock_mit_wiederholung> / trials = [1 - 20=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
<expt> /blocks=[1=testblock; 2=experimentblock_mit_wiederholung; 3=FuÃballerfahrung; 4=soccerexperience; 5=demographics] /postinstructions = (thank_you) </expt>
|
By rouge - 11/5/2015
a correction: its
<block experimentblock_mit_wiederholung> / trials = [1 - 48=noreplace(playvideo_kein_Tor, playvideo_Tor)] </block>
|
By Dave - 11/5/2015
<trial playvideo_Tor> / ontrialbegin = [if (trial.repeat_tor.response!=38) values.tor_item=list.tor.nextindex] / stimulustimes = [0=fixation; 1000 = Videos_kein_Tor] / timeout = 1000 / validresponse = (noresponse) / branch = [if(script.currentblock=="experimentblock_mit_wiederholung")trial.repeat_Tor else trial.showquestionaboutmyvideo_Tor] </trial>
That trial is displaying the *wrong* video element.
|
By rouge - 11/5/2015
Dear Dave, ah! Just wanted to tell you proudly that I found the mistake myself :-) . But of course - the expert found the mistake quicker :-) . Thank you very much!
|
By Dave - 11/5/2015
All good -- this isn't a competition :)
|
|