Evaluative conditioning task based on a subset of pre-rated CS by the participant


Evaluative conditioning task based on a subset of pre-rated CS by the...
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: 109K
Oulmann - Tuesday, February 14, 2017
Hi,

I am a bit stuck in coding an evaluative conditioning task. I have 120 CS and 100 US. I would like the participant to first rate the 120 CS on a scale from 1 to 7 (unpleasant-->pleasant), then for the script to select the 20 more "neutral" stimuli, that is the one closest to the overall mean for the participant, and then use them for the evaluative conditioning task. I came up with this script :

<item csAPic>
/ 1 = "CFD-LM-204-001-N.jpg"
/ 2 = "CFD-LM-208-110-N.jpg"
/ 3 = "CFD-LM-244-068-N.jpg"
/ 4 = "CFD-WF-001-003-N.jpg"
/ 5 = "CFD-WF-002-004-N.jpg"
/ 6 = "CFD-WF-003-003-N.jpg"
...
/ 60="CFD-WM-011-002-N.jpg"
</item>

<item csBPic>
/ 1 = "CFD-WM-013-001-N.jpg"
/ 2 = "CFD-WM-014-002-N.jpg"
/ 3 = "CFD-WM-015-002-N.jpg"
/ 4 = "CFD-WM-016-001-N.jpg"
...
/ 60="CFD-WM-258-125-N.jpg"
</item>

<picture csAPic>
/ items = csAPic
/ erase = false
</picture>

<picture csBPic>
/ items = csBPic
/ erase = false
</picture>

<trial_csAPic>
/ stimulusframes = [1=noreplace(csAPic)]
/ responseframe = 61
/ response = timeout(3000)
/ validresponse = ("q", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'")
</trial>

<trial_csBPic>
/ stimulusframes = [1=noreplace(csBPic )]
/ responseframe = 61
/ response = timeout(3000)
/ validresponse = ("q", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'")
</trial>

<block pretestA>
/ stimulusframes =[1-60=noreplace(csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, 
csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic )]
/ onblockend = [values.simplemean = round(block.pic_pretestA.mean)]]
</block>

<block pretestB>
/ stimulusframes =[1-60=noreplace(csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,
csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, )]
/ onblockend = [values.simplemeanB = round(block.pic_pretestB.mean)]]
</block>

but I can't find a function that allows to compute the mean, then select stimuli according to this mean (like 1 standard deviation, or minus/plus 1 point around it). Also, I would like the script to select one US for each CS, and then present both of them 5 time (10CS with negative USs and 10 with positive USs).

Trials for the EC tasks would looks like this :

<trial AAPic>
/ ontrialbegin = [values.simplemeanA = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csAPic, ucAPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial BBPic>
/ ontrialbegin = [
values.simplemeanB = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csBPic, ucbPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial BAPic>
/ ontrialbegin = [
values.simplemeanB = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csBPic, ucAPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial ABPic>
/ ontrialbegin = [
values.simplemeanA = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csAPic, ucbPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

Thanks in advance for the help :/ I'm a bit stuck

> but I can't find a function that allows to compute the mean

You have several options. Probably the he easiest one: Add each (numerical!) rating to a <list> /ontrialend. You can then query the list's mean and standarddeviation properties. Here's a simple example using a <likert> trial:

<block myblock>
/ postinstructions = (end)
/ trials = [1-10 = mylikert]
</block>

<likert mylikert>
/ ontrialend = [
    list.ratings.appenditem(likert.mylikert.response)
]
/ stimulusframes = [1=mytext]
/ numpoints = 7
</likert>

<list ratings>
</list>

<text mytext>
/ items = myitems
/ position = (50%, 40%)
</text>

<item myitems>
/ 1 = "A"
/ 2 = "B"
/ 3 = "C"
/ 4 = "D"
/ 5 = "E"
/ 6 = "F"
/ 7 = "G"
/ 8 = "H"
/ 9 = "I"
/ 10 = "J"
</item>

<page end>
^Number of ratings: <%list.ratings.itemcount%>
^Mean rating: <%list.ratings.mean%>
^Standard deviation: <%list.ratings.standarddeviation%>
</page>

I frankly don't understand what you aim to do with respect to the selection of US stimuli / items based on your description.


Oulmann
Oulmann
Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)Esteemed Member (1.8K reputation)
Group: Forum Members
Posts: 19, Visits: 64
Hi,

I am a bit stuck in coding an evaluative conditioning task. I have 120 CS and 100 US. I would like the participant to first rate the 120 CS on a scale from 1 to 7 (unpleasant-->pleasant), then for the script to select the 20 more "neutral" stimuli, that is the one closest to the overall mean for the participant, and then use them for the evaluative conditioning task. I came up with this script :

<item csAPic>
/ 1 = "CFD-LM-204-001-N.jpg"
/ 2 = "CFD-LM-208-110-N.jpg"
/ 3 = "CFD-LM-244-068-N.jpg"
/ 4 = "CFD-WF-001-003-N.jpg"
/ 5 = "CFD-WF-002-004-N.jpg"
/ 6 = "CFD-WF-003-003-N.jpg"
...
/ 60="CFD-WM-011-002-N.jpg"
</item>

<item csBPic>
/ 1 = "CFD-WM-013-001-N.jpg"
/ 2 = "CFD-WM-014-002-N.jpg"
/ 3 = "CFD-WM-015-002-N.jpg"
/ 4 = "CFD-WM-016-001-N.jpg"
...
/ 60="CFD-WM-258-125-N.jpg"
</item>

<picture csAPic>
/ items = csAPic
/ erase = false
</picture>

<picture csBPic>
/ items = csBPic
/ erase = false
</picture>

<trial_csAPic>
/ stimulusframes = [1=noreplace(csAPic)]
/ responseframe = 61
/ response = timeout(3000)
/ validresponse = ("q", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'")
</trial>

<trial_csBPic>
/ stimulusframes = [1=noreplace(csBPic )]
/ responseframe = 61
/ response = timeout(3000)
/ validresponse = ("q", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'")
</trial>

<block pretestA>
/ stimulusframes =[1-60=noreplace(csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, 
csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic,csApic,csApic,csApic,csApic,csApic,csApic,csApic, csApic, csApic, csApic )]
/ onblockend = [values.simplemean = round(block.pic_pretestA.mean)]]
</block>

<block pretestB>
/ stimulusframes =[1-60=noreplace(csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,
csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic,csBpic, )]
/ onblockend = [values.simplemeanB = round(block.pic_pretestB.mean)]]
</block>

but I can't find a function that allows to compute the mean, then select stimuli according to this mean (like 1 standard deviation, or minus/plus 1 point around it). Also, I would like the script to select one US for each CS, and then present both of them 5 time (10CS with negative USs and 10 with positive USs).

Trials for the EC tasks would looks like this :

<trial AAPic>
/ ontrialbegin = [values.simplemeanA = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csAPic, ucAPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial BBPic>
/ ontrialbegin = [
values.simplemeanB = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csBPic, ucbPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial BAPic>
/ ontrialbegin = [
values.simplemeanB = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csBPic, ucAPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

<trial ABPic>
/ ontrialbegin = [
values.simplemeanA = values.testtrialcounter +/- 1
]
/ stimulustimes = [0=erase, 1=noreplace (csAPic, ucbPic)]
/ trialduration = parameters.exposureDuration
/ validresponse = (" ")
/ branch = [if (parameters.ITI > 0) trial.ITI]
</trial>

Thanks in advance for the help :/ I'm a bit stuck
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search