Stimuli from list repeating despite use of /replace = false


Author
Message
Lewis99
Lewis99
Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)
Group: Forum Members
Posts: 9, Visits: 73
Hi,
As titled, I am having an issues where list items are repeating despite using /replace = false. Essentially, I have a series of 100  emotional images, divided into high and low arousal categories. All images should be shown by the end of the experiment with none left.

The picture element selects an item from <item pos> which contains names of the jpeg files. Which image number picture pos/neg selects depends on which value (1-100) has been selected from a list of numbers corresponding to the high arousal (1-50) low arousal (50-100) images. Whether a number is selected from the low or high arousal list depends on what value (lo or hi) is selected at the beginning of the block. Max run size for the high and low arousal list is set to maxrunsize =2.

I am finding that I am getting one or two images repetitions when I run the full experiment. These normally occur toward the end of the experiment - in the final block. Given that this is happening at the end of the experiment suspect it may be because as the max run size for intensity is set to two, that the script runs into a situation where say for example it has just shown two high arousal images in a row and wants to select a low intensity image. However if all low intensity images have been shown the script is not able to find another low intensity image and so repeats a random high intensity image. I suspect this because in my last run of pilot testing, I saw three high intensity images in a row at the end of the experiment. 

Is there any way of preventing this or is the only solution to not constrain the max run size to anything (not the end of the world).
Relevant code posted below
Kind regards,
Lewis

<values>
/trialimagepos = 0
/itemnumber = 1
/intensity = "?"
</values>

<list intensitypos>
/ items = (
"hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi"
"lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo" )
/ maxrunsize = 2
</list>

<list hipos_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
/replace = false
</list>

<list lopos_itemnumbers>
/items = (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
/replace = false
</list>

<item pos>
/1 = "HPAstronaut 1.jpg"
/2 = "HPBeach 1.jpg"
/3 = "HPBungee jumping 2.jpg"
/4 = "HPCat 5.jpg"
/5 = "HPCliff diver 1.jpg"
/6 = "HPCliff diver 3.jpg"
/7 = "HPCouple 4.jpg"
.....
/99 = "LPWedding 7.jpg"
/100 = "LPBear 1.jpg"
</item>

<picture pos>
/ items = item.pos
/ select = values.itemnumber
/ size = (60%, 60%)
/ position = (50%, 50%)
</picture>
<block pos>

/ onblockbegin = [
    values.intensity = list.intensitypos.nextvalue;
    if (values.intensity == "hi") {
        values.itemnumber = list.hipos_itemnumbers.nextvalue;
    } else {
        values.itemnumber = list.lopos_itemnumbers.nextvalue;
            };
    values.trialimagepos = values.itemnumber;
    ]
/ trials = [1= trial.regulationposone; 2= likert.Arousalposquestionsintial; 3=trial.moinitoringchoice; 4=trial.regulationpostwo; 5= likert.Arousalposquestionchoice]
/ onblockend = [
values.trialimagepos = 0;
]
</block>



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: 12K, Visits: 98K
Lewis99 - 2/14/2024
Hi,
As titled, I am having an issues where list items are repeating despite using /replace = false. Essentially, I have a series of 100  emotional images, divided into high and low arousal categories. All images should be shown by the end of the experiment with none left.

The picture element selects an item from <item pos> which contains names of the jpeg files. Which image number picture pos/neg selects depends on which value (1-100) has been selected from a list of numbers corresponding to the high arousal (1-50) low arousal (50-100) images. Whether a number is selected from the low or high arousal list depends on what value (lo or hi) is selected at the beginning of the block. Max run size for the high and low arousal list is set to maxrunsize =2.

I am finding that I am getting one or two images repetitions when I run the full experiment. These normally occur toward the end of the experiment - in the final block. Given that this is happening at the end of the experiment suspect it may be because as the max run size for intensity is set to two, that the script runs into a situation where say for example it has just shown two high arousal images in a row and wants to select a low intensity image. However if all low intensity images have been shown the script is not able to find another low intensity image and so repeats a random high intensity image. I suspect this because in my last run of pilot testing, I saw three high intensity images in a row at the end of the experiment. 

Is there any way of preventing this or is the only solution to not constrain the max run size to anything (not the end of the world).
Relevant code posted below
Kind regards,
Lewis

<values>
/trialimagepos = 0
/itemnumber = 1
/intensity = "?"
</values>

<list intensitypos>
/ items = (
"hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi"
"lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo" )
/ maxrunsize = 2
</list>

<list hipos_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
/replace = false
</list>

<list lopos_itemnumbers>
/items = (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
/replace = false
</list>

<item pos>
/1 = "HPAstronaut 1.jpg"
/2 = "HPBeach 1.jpg"
/3 = "HPBungee jumping 2.jpg"
/4 = "HPCat 5.jpg"
/5 = "HPCliff diver 1.jpg"
/6 = "HPCliff diver 3.jpg"
/7 = "HPCouple 4.jpg"
.....
/99 = "LPWedding 7.jpg"
/100 = "LPBear 1.jpg"
</item>

<picture pos>
/ items = item.pos
/ select = values.itemnumber
/ size = (60%, 60%)
/ position = (50%, 50%)
</picture>
<block pos>

/ onblockbegin = [
    values.intensity = list.intensitypos.nextvalue;
    if (values.intensity == "hi") {
        values.itemnumber = list.hipos_itemnumbers.nextvalue;
    } else {
        values.itemnumber = list.lopos_itemnumbers.nextvalue;
            };
    values.trialimagepos = values.itemnumber;
    ]
/ trials = [1= trial.regulationposone; 2= likert.Arousalposquestionsintial; 3=trial.moinitoringchoice; 4=trial.regulationpostwo; 5= likert.Arousalposquestionchoice]
/ onblockend = [
values.trialimagepos = 0;
]
</block>



/maxrunsize has nothing to do with it.

If you look at your intensitypos list closely, you'll see where your problem is. It contains 51 x "hi" and only 49 x "lo", instead of 50 x "hi" and 50 x "lo". That is: you end up oversampling list.hipos_itemnumbers.


Edited 3 Months Ago by Dave
Lewis99
Lewis99
Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)Associate Member (96 reputation)
Group: Forum Members
Posts: 9, Visits: 73
Dave - 2/14/2024
Lewis99 - 2/14/2024
Hi,
As titled, I am having an issues where list items are repeating despite using /replace = false. Essentially, I have a series of 100  emotional images, divided into high and low arousal categories. All images should be shown by the end of the experiment with none left.

The picture element selects an item from <item pos> which contains names of the jpeg files. Which image number picture pos/neg selects depends on which value (1-100) has been selected from a list of numbers corresponding to the high arousal (1-50) low arousal (50-100) images. Whether a number is selected from the low or high arousal list depends on what value (lo or hi) is selected at the beginning of the block. Max run size for the high and low arousal list is set to maxrunsize =2.

I am finding that I am getting one or two images repetitions when I run the full experiment. These normally occur toward the end of the experiment - in the final block. Given that this is happening at the end of the experiment suspect it may be because as the max run size for intensity is set to two, that the script runs into a situation where say for example it has just shown two high arousal images in a row and wants to select a low intensity image. However if all low intensity images have been shown the script is not able to find another low intensity image and so repeats a random high intensity image. I suspect this because in my last run of pilot testing, I saw three high intensity images in a row at the end of the experiment. 

Is there any way of preventing this or is the only solution to not constrain the max run size to anything (not the end of the world).
Relevant code posted below
Kind regards,
Lewis

<values>
/trialimagepos = 0
/itemnumber = 1
/intensity = "?"
</values>

<list intensitypos>
/ items = (
"hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi", "hi"
"lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo", "lo" )
/ maxrunsize = 2
</list>

<list hipos_itemnumbers>
/items = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
/replace = false
</list>

<list lopos_itemnumbers>
/items = (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
/replace = false
</list>

<item pos>
/1 = "HPAstronaut 1.jpg"
/2 = "HPBeach 1.jpg"
/3 = "HPBungee jumping 2.jpg"
/4 = "HPCat 5.jpg"
/5 = "HPCliff diver 1.jpg"
/6 = "HPCliff diver 3.jpg"
/7 = "HPCouple 4.jpg"
.....
/99 = "LPWedding 7.jpg"
/100 = "LPBear 1.jpg"
</item>

<picture pos>
/ items = item.pos
/ select = values.itemnumber
/ size = (60%, 60%)
/ position = (50%, 50%)
</picture>
<block pos>

/ onblockbegin = [
    values.intensity = list.intensitypos.nextvalue;
    if (values.intensity == "hi") {
        values.itemnumber = list.hipos_itemnumbers.nextvalue;
    } else {
        values.itemnumber = list.lopos_itemnumbers.nextvalue;
            };
    values.trialimagepos = values.itemnumber;
    ]
/ trials = [1= trial.regulationposone; 2= likert.Arousalposquestionsintial; 3=trial.moinitoringchoice; 4=trial.regulationpostwo; 5= likert.Arousalposquestionchoice]
/ onblockend = [
values.trialimagepos = 0;
]
</block>



/maxrunsize has nothing to do with it.

If you look at your intensitypos list closely, you'll see where your problem is. It contains 51 x "hi" and only 49 x "lo", instead of 50 x "hi" and 50 x "lo". That is: you end up oversampling list.hipos_itemnumbers.


Hi Dave,
Thanks for that, I would have never noticed that issue.
Cheers,
Lewi
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search