Randomizing


Author
Message
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
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

bcharlton
bcharlton
Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)Associate Member (58 reputation)
Group: Forum Members
Posts: 4, Visits: 30
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>







GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search