Millisecond Forums

number of trials not as expected in a block

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

By xizhouxie - 11/13/2020

I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?

By xizhouxie - 11/13/2020

xizhouxie - 11/13/2020
I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?


just adding that when i get the 26, 24, vs 25 trials all around, I'm also having pictures repeat, which is not what we want.  
By Dave - 11/13/2020

xizhouxie - 11/13/2020
xizhouxie - 11/13/2020
I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?


just adding that when i get the 26, 24, vs 25 trials all around, I'm also having pictures repeat, which is not what we want.  

/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

You're sampling the 12 trial elements *in equal proportions*. 150/12 = 12.5. There obviously can be no such thing as 0.5 of a trial, hence you get imbalances. Enter the trial elements in the proportions you want into the noreplace selection pool.
By xizhouxie - 11/13/2020

Dave - 11/13/2020
xizhouxie - 11/13/2020
xizhouxie - 11/13/2020
I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?


just adding that when i get the 26, 24, vs 25 trials all around, I'm also having pictures repeat, which is not what we want.  

/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

You're sampling the 12 trial elements *in equal proportions*. 150/12 = 12.5. There obviously can be no such thing as 0.5 of a trial, hence you get imbalances. Enter the trial elements in the proportions you want into the noreplace selection pool.

that makes total sense. so I need to spell out the 150 trials total? 
By Dave - 11/13/2020

xizhouxie - 11/13/2020
Dave - 11/13/2020
xizhouxie - 11/13/2020
xizhouxie - 11/13/2020
I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?


just adding that when i get the 26, 24, vs 25 trials all around, I'm also having pictures repeat, which is not what we want.  

/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

You're sampling the 12 trial elements *in equal proportions*. 150/12 = 12.5. There obviously can be no such thing as 0.5 of a trial, hence you get imbalances. Enter the trial elements in the proportions you want into the noreplace selection pool.

that makes total sense. so I need to spell out the 150 trials total? 

If I'm reading your original description correctly, for "chem mixed" and "engl mixed", two distinct <trial> elements together form a "type", and you want 25 trials of each "type", but don't care if the within-type distribution is 12 x subtrial A and 13 x subtrial B, or 13 x subtrial A and 12 x subtrial B.. If so, the proper way to do this would be to create a dummy <trial> element for each type that you sample at the block-level, and have the actual trials in a <list> that the dummy trial /branch'es to. I.e.

<block example>
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,Chem_mixed,Engl_mixed)]
</block>

with

<trial chem_mixed>
/ trialduration = 0
/ recorddata = false
/ branch = [
    list.chem_mixed_trials.nextvalue;
]
</trial>

// with poolsize 24 and equal proportions, we're guaranteed to get 12 x chem_correct_mixed and 12 x chem_incorrect_mixed
// the 25th sample will randomly be either chem_correct_mixed or chem_incorrect_mixed
<list chem_mixed_trials>
/ items = (trial.chem_correct_mixed, trial.chem_incorrect_mixed)
/ poolsize = 24
</list>

<trial engl_mixed>
/ trialduration = 0
/ recorddata = false
/ branch = [
    list.engl_mixed_trials.nextvalue;
]
</trial>

<list engl_mixed_trials>
/ items = (trial.engl_correct_mixed, trial.engl_incorrect_mixed)
/ poolsize = 24
</list>
By xizhouxie - 11/13/2020

Dave - 11/13/2020
xizhouxie - 11/13/2020
Dave - 11/13/2020
xizhouxie - 11/13/2020
xizhouxie - 11/13/2020
I have 6 types of trials and I want them randomly displayed in one block so that I get 150 trials total:
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

12/13Chem_correct_mixed,
13/12Chem_incorrect_mixed, adding to 25 total 
12/13Engl_correct_mixed,
13/12Engl_incorrect_mixed, adding to 25 total

Picture:
Chem_correct and Chem_incorrect share a picture element with 50 items, 
Engl_correct and  Engl_incorrect share a picture element with 50 items,
Chem_correct_mixed and Chem_incorrect_mixed share a picture element with 25 items,
Engl_correct_mixed and Engl_incorrect_mixed share a picture element with 25 items,
All picture elements are set to noreplacenorepeat


CODE:
This is what I have in the block:
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

But instead of getting 
25 Chem_correct,
25 Chem_incorrect,
25 Engl_correct,
25 Engl_incorrect,

I would get 26, 24, ...
How do I fix that?


just adding that when i get the 26, 24, vs 25 trials all around, I'm also having pictures repeat, which is not what we want.  

/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,
Chem_correct_mixed,Chem_incorrect_mixed,Engl_correct_mixed,Engl_incorrect_mixed)]

You're sampling the 12 trial elements *in equal proportions*. 150/12 = 12.5. There obviously can be no such thing as 0.5 of a trial, hence you get imbalances. Enter the trial elements in the proportions you want into the noreplace selection pool.

that makes total sense. so I need to spell out the 150 trials total? 

If I'm reading your original description correctly, for the "chem mixed" and "eng mixed", two distinct <trial> elements together form a "type", and you want 25 trials of each "type", but don't care if the within-type distribution is (12 x subtrial A and 13 x subtrial B, or 13 x subtrial A and 12 x subtrial B). If so, the proper way to do this would be to create a dummy <trial> element for each type that you sample at the block-level, and have the actual trials in a <list> that the dummy trial /branch'es to. I.e.

<block example>
/ trials = [1-150 = noreplace(Chem_correct,Chem_incorrect,Engl_correct,Engl_incorrect,Chem_mixed,Engl_mixed)]
</block>

with

<trial chem_mixed>
/ trialduration = 0
/ recorddata = false
/ branch = [
    list.chem_mixed_trials.nextvalue;
]
</trial>

// with poolsize 24 and equal proportions, we're guaranteed to get 12 x chem_correct_mixed and 12 x chem_incorrect_mixed
// the 25th sample will randomly be either chem_correct_mixed or chem_incorrect_mixed
<list chem_mixed_trials>
/ items = (trial.chem_correct_mixed, trial.chem_incorrect_mixed)
/ poolsize = 24
</list>

<trial engl_mixed>
/ trialduration = 0
/ recorddata = false
/ branch = [
    list.engl_mixed_trials.nextvalue;
]
</trial>

<list engl_mixed_trials>
/ items = (trial.engl_correct_mixed, trial.engl_incorrect_mixed)
/ poolsize = 24
</list>



Perfect. Thank you so much. This is extremely clear.