Return to the Certainty Equivalent Procedure page
CERTAINTY EQUIVALENT (CE) PROCEDURE
Script Author: Katja Borchert, Ph.D. (firstname.lastname@example.org) for Millisecond Software, LLC
last updated: 01-07-2016 by K. Borchert (email@example.com) for Millisecond Software, LLC
Copyright © 01-07-2016 Millisecond Software
This script runs the Certainty Equivalent (CE) Procedure to estimate CE Points described by:
Paulus, M. P., & Frank, L. R. (2006). Anterior cingulate activity modulates nonlinear decision weight function
of uncertain prospects. NeuroImage,30, 668-677.
Millisecond Software thanks Dr. Jakub Traczyk and Kamil Fulawka for collaborating on this script!
Participants work on 7 (default) probability prospects similarly to "would you rather have
a 1/10 chance to win $1000 or get $333 for sure?" to determine the participants' CE points.
The CE point for a given prospect is the sure pay-off at which a person has no preference for either
option (~ indifference point).
DATA FILE INFORMATION:
The default data stored in the data files are:
(1) Raw data file: 'CertaintyEquivalentProcedure_raw*.iqdat' (a separate file for each participant)
build: Inquisit build
computer.platform: the platform the script was run on
date, time, subject: date and time script was run with the current subjectnumber
/count_prospects: counts the number of prospects run
blockcode, blocknum: the name and number of the current block
trialcode, trialnum: the name and number of the currently recorded trial
Note: not all trials that are run might record data
/iteration_perprospect: number of iterations (using smaller and smaller ranges of values) used to pinpoint CE for the current prospect
Note: set individually for each prospect via list.iterations_perprospect
/select_prospect: contains the number of the current prospect
Note: the numbering refers to the list position of that prospect in list.winprobabilities/list.potentialwins
/gambling_p: contains the current gambling probability p
/chancedescription: contains the description of the gambling probability p used in the target question
(example: p = 0.1 => chance description: 1 in 10)
/winprospect: contains the max dollar amount that could be won by gambling
/current_bottom: contains the current bottom value of the range tested for the current CE
/current_top: contains the current upper value of the range tested for the current CE
NOTE: current_top & current_bottom are updated at the end of trial.surebet_middlethird
=> the actual tested
/current_lowerthird: contains the values at the lower third of the tested range (offered as sure win in trial.surebet_lowerthird)
/current_middlethird: contains the values at the middle third of the tested range (offered as sure win in trial.surebet_middlethird)
/current_guaranteedwin: contains the current guaranteed win (the sure amount currently offered)
stimulusitem: the presented stimuli in order of trial presentation
response: the participant's response
correct: the correctness of the response
latency: the response latency in ms
/low_response: stores the response (1 or 2) that participant makes when offered values.current_lowerthird
/middle_response: stores the response (1 or 2) that participant makes when offered values.current_middlethird
/next_bottom: contains the next determined bottom value
/next_top: contains the next determined top value
/CE: calculates the Certainty Equivalent (CE) of the current prospect based on the last (aka next) estimated range
Notes: amount makes sense only at the end of a cycle (->trial.estimate_ce)
/EV: calculates the expected value of the current gambling prospect
(2) Summary data file: 'CertaintyEquivalentProcedure_summary*.iqdat' (a separate file for each participant)
script.startdate: date script was run
script.starttime: time script was started
script.subjectid: subject id number
script.groupid: group id number
script.elapsedtime: time it took to run script (in ms)
computer.platform: the platform the script was run on
/completed: 0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run)
/script_aborted: 0 = script is not prematurely aborted
1 = script is prematurely aborted after participant needed to repeat a trial sequence too often (values.repeat > parameters.maxnr_repeats)
p1: stores the winprobability of prospect1
(numbering is based on the prospect's index in list.winprobabilities and NOT
whether it was the first prospect to be presented as the order can be set to be random)
winprospect1: stores the pote of potential winning amount of prospect1
(numbering is based on the prospect's index in list.potentialwins and NOT
whether it was the first prospectto be presented as the order can be set to be random)
EV1: stores Expected Value for Prospect 1
CE1: stores the CE values for Prospect 1
=> Index refers to position of prospect in list.winprobabilities/list.potentialwins
(and not to its actual presentation as that could be randomized)
Note: if more than 7 prospects are tested
=> add corresponding values (/CE7 = 0) under VALUES
=> add corresponding expressions (e.g. /p7 = ....) under EXPRESSIONS
=> update list.selectprospects
=> update trial.estimate_ce
=> update summary data file
same for the remaining prospects
By default, 7 prospects are tested (to add/delete prospects, go to EDITABLE CODE -> Editable Lists and follow instructions)
with 4 iterations (default; Editable Value) and 2 trials per iteration.
=> Trial1 (trial.surebet_lowerthird) uses the lower third of the current range as the sure bet
=> Trial2 (trial.surebet_middlethird) uses the middle third of the current range as the sure bet
Depending on the response pattern, the range is narrowed down to the lower third, middle third, or upper third of the last tested range.
See more info regarding the algorithm used above.
After participant selects her choice, the choice is highlighted for parameters.feedbackduration (default: 2s) and a posttrialpause of
parameters.iti (default: 4s) is added before the next trial is started.
At the end of each prospect, trial.estimate_CE estimates the CE for the current prospect as the the midpoint of the last determined range.
CE- Estimation Algorithm (Paulus & Frank, 2006):
The CE estimation procedure is to iterate through several sequences of dividing a range of possible numbers (e.g. 0-1000)
into thirds (0-333, 333-666, 666-1000) to find the particular third that contains the CE and then use that narrowed down range
as the next possible range of numbers for the next iteration (e.g. 0-333). For each iteration, there are always two trials:
1) the first trial that uses the lower third of the range as the sure bet (here: $333)
2) the second trial that uses the middle third of the range as the sure bet (here: $666)
Depending on the combination of answers to the first sure bet question ($333) and the second sure bet question ($666),
the range of the CE is adjusted (aka narrowed down). 4 possible combinations of responses:
1) Participant prefers sure bet #1 ($333) AND sure bet #2 ($666) => the CE likely lies somewhere between 0-333 (new range)
2) Participant prefers gamble over sure bet #1 BUT prefers the sure bet for #2 ($666) => the CE likely lies somewhere between 333-666 (new range)
3) Participant prefers gamble over sure bet #1 AND prefers gamble over sure bet #2 => the CE likely lies somewhere between 666-1000 (new range)
4) Participant prefers sure bet #1 BUT prefers the gamble over sure bet #2: this response pattern suggests that participant
may not have understood the question or didn't read the question carefully (as it doesn't make 'sense' to accept the lower sure bet but
prefer the gamble for the higher one). Paulus & Frank (2006) do not explicitly describe how their algorithm handles this response pattern.
As suggested by Dr. Traczyk and Kamil Fulawka, participants are provided a certain number of repetitions of this iteration (editable parameter)
to allow for self-correction. However, if participants still produce this 'irrational' response pattern after a certain number of repetitions,
the entire task should be aborted as the data of these participants cannot be trusted.
Once a certain number of successful iterations -narrowing the range of values each time- have been run, the CE is
simply calculated as the midpoint of the last determined range.
NOTE: The number of iterations can vary between prospects in this script and are set for each prospect separately under
EDITABLE CODE -> Editable Lists -> list.iterations_perprospect. This is a deviation from the original algorithm by
Paulus & Frank (2006) (they suggest 4 iterations per prospect). This change allows experimenters to select an appropriate number
of iterations for each prospect to ensure that estimated CE points can lie above or below the EV for the currently tested prospect.
Default prospects are taken from Paulus & Frank (2006)
Instructions used are the originals from Paulus & Frank (2006) with some minor edits.
Instructions can be easily edited under section EDITABLE INSTRUCTIONS
check below for (relatively) easily editable parameters, stimuli, instructions etc.
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code to further customize your experiment.
The parameters you can change are:
/responsekey_gamble: scancode that selects gambling choice
Note: scancodes under Tools -> Keyboard Scancodes (default: 2)
/responsekey_surewin: scancode that selects sure win choice
Note: scancodes under Tools -> Keyboard Scancodes (default: 3)
/responsekey_gamblelabel: label of the gamble response key (default: '1')
/responsekey_surewinlabel: label of the sure win response key (default: '2')
/feedbackduration: duration of the feedback presentation (default: 2000ms)
/iti: duration of the inter trial interval between trials (after trial.surebet_lowerthird/trial.surebet_middlethird)
/maxnr_repeats: max number of consecutive repetitions of a trial sequence before the entire task is aborted
Repetitions of trials are run if participant gives contradictory/irrational responses
to trial.surebet_lowerthird (= accepting sure amount) and trial.surebet_middlethird (= prefering gamble).
In such a case participant is given 1 (default) more try. If the same irrational response pattern is given
the entire task is aborted.