Millisecond Forums

Randomizing

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

By bcharlton - 2/1/2021

Hello, 

I am conducting a face recognition task where I have 2 learning phases, and 2 test phases. 
There are 80 faces in total (40 Black and 40 White), and in the first learning phase I want there to be 20 faces that participants study (10 Black and 10 White) and these faces will be shown two times consecutively. For the first test phase, I want the participants the 20 faces they studied to be shown again, plus an additional 20 that they will not have seen before (From here, these 40 faces will be marked as "seen"). Then I would like for my second learning and test phase to do the same thing, just with the remaining 40/80 faces.

The problem comes when I try to get these faces to be randomized, while still keeping the 50/50 of Black and White faces!
Ideally, I would want to have one large list of the 80 faces or two lists of 40 (separated by race) that I would be able to call from multiple times during the experiment. My test phase right now isn't random, as you'll see I have it set up so that the first ten faces on the list are those that have been seen, which is why I was able to make the conditional formatting for the "iscorrectresponse" element, I dont think this would be able to work in a randomized format.

If anyone has any ideas or suggestions, that'd be great!
I've included my code below, but feel free to change something if you think that there's an easier way to handle this.
Thanks in advance!

Heres my code:
(I didn't include the item list of faces, because its so long)

LEARNING PHASE CODE


<trial BlackLearnedFaces>
/ stimulusframes = [1= fixation; 20=BlackLearn1]
/ validresponse = (noresponse)
/ correctresponse = (noresponse)
/ timeout = 3000
</trial>

<trial WhiteLearnedFaces>
/ stimulusframes = [1= fixation; 20=WhiteLearn1]
/ validresponse = (noresponse)
/ correctresponse = (noresponse)
/ timeout = 3000
</trial>

<block UninformedLearningPhase>
/ trials = [1-20 = noreplace(BlackLearnedFaces, WhiteLearnedFaces)]
/ preinstructions = (LearningPhaseInstructions)
/ postinstructions = (RepeatLearningInstructions)
</block>

TESTING PHASE CODE
                       
<values >
/ current = 0
</values>

< trial BlackRound1>
/ stimulustimes = [ 1 = fixation, testphaseinstructNOT, testphaseinstructSEEN; 1000 = BlackTestRound1, testphaseinstructNOT, testphaseinstructSEEN]
/ validresponse = (",",".")
/ iscorrectresponse = [(trial.BlackRound1.response == "." && picture.BlackTestRound1.currentindex <= 10) ||
                                     (trial.BlackRound1.response == "," && picture.BlackTestRound1.currentindex > 10)]    
/ ontrialbegin = [values.current = 0]                
/ ontrialend = [ if( picture.BlackTestRound1.currentindex <= 10) values.current = 1 else values.current = 0]
</trial>

< trial WhiteRound1>
/ stimulustimes = [ 1 = fixation, testphaseinstructNOT, testphaseinstructSEEN; 1000 = WhiteTestRound1, testphaseinstructNOT, testphaseinstructSEEN]
/ validresponse = (",",".")
/ iscorrectresponse = [(trial.BlackRound1.response == "." && picture.BlackTestRound1.currentindex <= 10) ||
                                    (trial.BlackRound1.response == "," && picture.BlackTestRound1.currentindex > 10)] 
/ ontrialbegin = [values.current = 0]     
/ ontrialend = [ if( picture.BlackTestRound1.currentindex <= 10) values.current = 1 else values.current = 0]
</trial>

<block TestRound1>
/trials = [ 1-40 = noreplace(BlackRound1,WhiteRound1)]
/ preinstructions = (TestPhaseInstructions)
/ postinstructions = (TestBlock_Instructions)
</block>






By Dave - 2/1/2021

bcharlton - 2/1/2021
Hello, 

I am conducting a face recognition task where I have 2 learning phases, and 2 test phases. 
There are 80 faces in total (40 Black and 40 White), and in the first learning phase I want there to be 20 faces that participants study (10 Black and 10 White) and these faces will be shown two times consecutively. For the first test phase, I want the participants the 20 faces they studied to be shown again, plus an additional 20 that they will not have seen before (From here, these 40 faces will be marked as "seen"). Then I would like for my second learning and test phase to do the same thing, just with the remaining 40/80 faces.

The problem comes when I try to get these faces to be randomized, while still keeping the 50/50 of Black and White faces!
Ideally, I would want to have one large list of the 80 faces or two lists of 40 (separated by race) that I would be able to call from multiple times during the experiment. My test phase right now isn't random, as you'll see I have it set up so that the first ten faces on the list are those that have been seen, which is why I was able to make the conditional formatting for the "iscorrectresponse" element, I dont think this would be able to work in a randomized format.

If anyone has any ideas or suggestions, that'd be great!
I've included my code below, but feel free to change something if you think that there's an easier way to handle this.
Thanks in advance!

Heres my code:
(I didn't include the item list of faces, because its so long)

LEARNING PHASE CODE


<trial BlackLearnedFaces>
/ stimulusframes = [1= fixation; 20=BlackLearn1]
/ validresponse = (noresponse)
/ correctresponse = (noresponse)
/ timeout = 3000
</trial>

<trial WhiteLearnedFaces>
/ stimulusframes = [1= fixation; 20=WhiteLearn1]
/ validresponse = (noresponse)
/ correctresponse = (noresponse)
/ timeout = 3000
</trial>

<block UninformedLearningPhase>
/ trials = [1-20 = noreplace(BlackLearnedFaces, WhiteLearnedFaces)]
/ preinstructions = (LearningPhaseInstructions)
/ postinstructions = (RepeatLearningInstructions)
</block>

TESTING PHASE CODE
                       
<values >
/ current = 0
</values>

< trial BlackRound1>
/ stimulustimes = [ 1 = fixation, testphaseinstructNOT, testphaseinstructSEEN; 1000 = BlackTestRound1, testphaseinstructNOT, testphaseinstructSEEN]
/ validresponse = (",",".")
/ iscorrectresponse = [(trial.BlackRound1.response == "." && picture.BlackTestRound1.currentindex <= 10) ||
                                     (trial.BlackRound1.response == "," && picture.BlackTestRound1.currentindex > 10)]    
/ ontrialbegin = [values.current = 0]                
/ ontrialend = [ if( picture.BlackTestRound1.currentindex <= 10) values.current = 1 else values.current = 0]
</trial>

< trial WhiteRound1>
/ stimulustimes = [ 1 = fixation, testphaseinstructNOT, testphaseinstructSEEN; 1000 = WhiteTestRound1, testphaseinstructNOT, testphaseinstructSEEN]
/ validresponse = (",",".")
/ iscorrectresponse = [(trial.BlackRound1.response == "." && picture.BlackTestRound1.currentindex <= 10) ||
                                    (trial.BlackRound1.response == "," && picture.BlackTestRound1.currentindex > 10)] 
/ ontrialbegin = [values.current = 0]     
/ ontrialend = [ if( picture.BlackTestRound1.currentindex <= 10) values.current = 1 else values.current = 0]
</trial>

<block TestRound1>
/trials = [ 1-40 = noreplace(BlackRound1,WhiteRound1)]
/ preinstructions = (TestPhaseInstructions)
/ postinstructions = (TestBlock_Instructions)
</block>







What you describe is essentially an old-new paradigm, and those have been discussed here multiple times before. See e.g. https://www.millisecond.com/forums/Topic17069.aspx or https://www.millisecond.com/forums/Topic21813.aspx