Return to the Experiential Discounting Task page
						
									EXPERIENTIAL DISCOUNTING TASK (EDT)
SCRIPT INFO

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 05-06-2013
last updated: 01-07-2016 by K.Borchert (katjab@millisecond.com) for Millisecond Software LLC

Copyright © 01-07-2016 Millisecond Software

BACKGROUND INFO

											*Purpose*
This script implements the Experiential Discounting Task as described in:

Reynolds, B. & Schiffbauer, R. (2004). Measuring state changes in human delay discounting:
an experiential discounting task. Behavioural Processes, 67, 343–356.

and:

Smits,R.R, Stein,J.S., Johnson, P.S., Odum, A.L., & Madden, G.J. (2013). Test–Retest Reliability and Construct Validity 
of the Experiential Discounting Task. Experimental and Clinical Psychopharmacology, 21, 155–163.


Millisecond Software thanks Dr. Fillmore and Nicholas Van Dyke for collaborating on this script. 
Millisecond Software further thanks Dr. Madden for answering procedural questions pertaining to the EDT.


											  *Task*
The goal of the game is to win as much money as one can. In order to win money, participants choose between 2 options: 
the Standard option (on the right) and the Adjust option (on the left). When choosing the Standard option participants
can win a fixed amount of money (higher than with the adjust option) but it is more uncertain whether they will win it 
(probabilistic reward, default probability p = 0.35) and they may have to wait to find out whether or not they won (4 different delay periods).
With the Adjust option, participants can immediately add the advertised amount of money to their winnings.
Choosing the Standard option will increase the amount that can be won with the Adjust option for the next round (up to a
point); choosing the Adjust option will decrease the amount that can be won with the Adjust option for the next round.
After choosing the same option consecutively for 4 (default) times in a row, participants will be forced to choose the opposite
option. Forced trials in this script do not influence the amount that can be won with the adjust options.
The game is over if either an Indifference Point for the two options can be determined or a predetermined time period
has passed.



DATA FILE INFORMATION: 
The default data stored in the data files are:

(1) Raw data file: 'ExperientialDiscountingTask_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 
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) 
/delay:									contains the current delay duration for finding out whether standard option wins or loses
/countstart:							counts the number of rounds started per block
/count_standard:						counts the number of standard options chosen (choice selections only)
/count_adjust:							counts the number of adjust options chosen (choice selections only)
/countchoice:							counts the choice trials (excluding force trials) in a block 
/forced:								1 = forced option trial; 0 = choice trial
/response:								response (selection)
/selection_rt:							response latency of selection trial (either choice or forced: how long did it take to make selection?)
lateny:									response latency of the current trial
											NOTE: by default only trial.intertrialinterval/trial.interblockinterval record data to raw data file (therefore latency is 0)
											If other trials should record data, go to section TRIALS and set /recorddata = true in the
											trials of interest
/selection_rt:							response latency of selection trial (either choice or forced: how long did it take to make selection?)
/standardamount:							the default standard amount (default: $0.30)
/current_adjustamount:					contains the adjustamount that could be won for the current trial sequence
/percentchange_adjust:					the factor with with parameters.startadjustamount gets multiplied to calculate values.change
/reversal:								0 = the trial is a forced reversal (no adjustments are made to values.percentchange_adjust)
										1 = the selected option should reverse previous adjustments (e.g. if standard is chosen after adjust)
										2 = the selected option does not need to reverse any previous adjustments
/win:									1 = promised amount is won; 0 = promised amount is not won
/totalamount:							contains the total amount won per block
/remaininggameduration:					the remaining time for the block (updated in trial.delayinterval_standard)
/IPeval:								calculates the sum of the last 6 choices (1 = standard; 2 = adjust)
										the last six choices are stored in list.iplist on index positions 1 (last added) to 6.
										If the last 6 choices add up to 9 => an equal number of 1 (standard) and 2 (adjust) choices have been made
										and therefore the IP can be determined.
values.IP: 								0 = Indifference Point (IP) has not been established for this block; 1 = IP has been established			
expressions. IP:						indifference point; once IPeval == 9 is found (equal number of standard and adjust choices)
										this expression calculates IP = the (rounded) mean of the last 6 adjustamounts.

(2) Summary data file: 'ExperientialDiscountingTask_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; 1 = script was completed (all conditions run)

/delayA-
/delayD:								delays for block A-D

/IP_delayA-
/IP_delayD:								contains the IP point for delay A-D (if established)

/totalamountA -
/totalmountD:							contains the total amount won in block A, B, C, D


EXPERIMENTAL SET-UP
* 2 choices: standard vs. adjust (NO choice is given if the same option was chosen 4 times in a row => forced choice)
* 4 delay periods: 0, 7s, 14s, 28s (Smits et al, 2013; editable parameters); tested in blocked format
* The 4 delay periods are run in sequence of ascending delays (Smits et al, 2013)
-> more info under section EXPERIMENT
* win probability: p = 0.35, fixed (can be edited under EDITABLE CODE -> Editable Lists)
* Standard Option: set win amount of $0.30 (does not change)
* Adjust Option: start win amount of $0.15; can increase (up to 24 cents) or decrease (down to 6cents) depending on selected option

(1) 'Adjust Win Amount' Adjustment Rules:
Selecting the Standard Choice will increase the Adjust Win Amount, selecting the Adjust Choice will
decrease the Adjust Win Amount
* The INITIAL change amount to increase or decrease is calculated as follows: change = round(0.15*original Adjust Amount) = round(0.15*0.15) = round(0.0225) = 0.02  
* If the same choice is made consecutively, 0.15 is reduced consecutively by 0.02 until it reaches 0.03, after that it changes to 0.02 and stays there
=> Example: Participant chooses Standard Option 4 times in a row
1. change = round(0.15*0.15) = 0.02   	(Adjust Amount = 0.15 + 0.02 = 0.17; after choosing Standard option, participant could now add 17 cents to winnings when choosing Adjust option next)
2. change = round(0.13*0.15) = 0.02  	(Adjust Amount = 0.17 + 0.02 = 0.19)
3. change = round (0.11*0.15) = 0.02 	(Adjust Amount = 0.19 + 0.02 = 0.21) 
4. change = round (0.09*0.15) = 0.01 	(Adjust Amount = 0.21 + 0.01 = 0.22)
(forced)
5. change = round (0.07*0.15) = 0.01 	(Adjust Amount = 0.22 + 0.01 = 0.23)
6. change = round (0.05*0.15) = 0.01 	(Adjust Amount = 0.23 + 0.01 = 0.24)
7. change = round (0.03*0.15) = 0.00 	(Adjust Amount = 0.24 + 0.00 = 0.24)
8. change = round (0.02*0.15) = 0.00 	(Adjust Amount = 0.24 + 0.00 = 0.24)
(forced)

* Choosing the opposite option will undo the previous adjustments in the reversed order*
Example: if participant were now to choose the Adjust Option for 8 times in a row the Adjust Amount would change
1. 0.24 - 0.00 = 0.24
2. 0.24 - 0.00 = 0.24
3. 0.24 - 0.01 = 0.23
4. 0.23 - 0.01 = 0.22
(forced standard)
5. 0.22 - 0.01 = 0.21
6. 0.21 - 0.02 = 0.19
7. 0.19 - 0.02 = 0.17
8. 0.17 - 0.02 = 0.15
=> back to start conditions 

*Note: this script offers the option to set via parameters.reversaloption whether to
a) reverse in the exact same order (that is if participant has reached parameters.min_adjustvalue (0.02)- and 
continues with same choice the reversal would take into account how many times participant was at 0.02)
Example: 0.15, 0.13, 0.11, 0.09, 0.07, 0.05, 0.03, 0.02, 0.02, 0.02
Reversal: 0.02, 0.02, 0.02, 0.03, 0.05, 0.07, 0.09, 0.11, 0.13, 0.15
b) reverse in the same order but start reversing immediately after participant reaches values.minadjustvalue (0.02)
(reversal starts with 0.03 regardless how many times participants had chosen a particular button with
with values.adjustamount = 0.02)
Example: 0.15, 0.13, 0.11, 0.09, 0.07, 0.05, 0.03, 0.02, 0.02, 0.02
Reversal: 0.03, 0.05, 0.07, 0.09, 0.11, 0.13, 0.15

(2) Indifference Point 
After 16 mandatory choice trials (default), the program checks whether the Indifference Point can be determined.
The Indifference Point can be determined if participant chose the same number of Adjust and Standard options for the last
6 choice trials. If this condition is met, the Indifference Point = average of the last 6 adjust amounts.
If this condition is not met, the block continues and the program checks after each new choice trial if the
Indifference condition is met at this point (or if predetermined time for block has expired, see (3)).

(3) Duration of Game/Block
* at least 16 (default) choice trials per game/block
* Game/block quits if 
a) the participant chose the same number of Standard options as Adjust options during the last 6 rounds => Indifference Point
can be established (see above)
b) the predetermined time for the game/block is up.

Determination of Predetermined Time:
* The predetermined time of a block = 20 (standard option trials) * values.delay
=> each block allows the selection of 20 choice standard option trials
(!!!Note: for values.delay = 0; the predetermined time of a block = 20 and not 0 to allow for the selection
of 20 choice standard option trials)
* The game duration decreases by values.delay in trial.delayinterval_standard for choice standard option trials only
* if the game ends before predetermined time is up (because IP has been found) the remaining time is added to an interblock trial
(trial.interblockinterval)
Note: in the unlikely even that participant chooses only Adjust option, an endless loop is created.
For this particular reason, the script has a built-in time to quit after 2h (editable parameter)

INSTRUCTIONS
The instructions provided use original instructions from Reynolds & Schiffbauer (2004)
as well instructions provided by Millisecond Software.
They can be easily edited under Editable Code -> Editable Instructions

EDITABLE CODE:
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:

/standardamount:							the default standard amount (default: $0.30)
/startadjustamount:							the default starting adjust amount (default: $0.15)
/max_adjustvalue:							maximum/start adjusting proportion (default: 0.15)
/min_adjustvalue:							minimum adjusting proportion (default: 0.02)
/adjustvalue:								the default adjust value increase/decrease  (default: 0.02)
/min_choicetrials:							the minimum number of choice trials (default: 16)
											Note: needs to be >=6
/maxsameoption:								the max number of consecutive trials of the same option
											before a forced trial is initiated (default: 4)
/nr_practicerounds:							number of practice rounds run, regardless of choice or forced rounds (default: 16)

Delay Options: in ms
/delay_practice:							delay used in practice session (default: 7000ms = 7s)
/delayA-
/delayD:									delays for block A-D (in ms)
/durationadjustmentfactor:					the number of standard option trials used (default: 20) to calculate the
											max. blockduration = values.delay * parameters.durationadjustmentfactor
											(-> the time allows 20 standard option trial sequences)
											
/intertrialinterval:						sets the intertrialinterval duration (default: 0)

/reversaloption:							1 = reversal of parameters.adjustvalue follows exactly the previous pattern even if
											participant was operating at parameters.min_adjustvalue for a while
											(e.g. 0.15, 0.13, 0.11, 0.09, 0.07, 0.05, 0.03, 0.02, 0.02, 0.02
											-> reversal: 0.02, 0.02, 0.02, 0.03, 0.05, 0.07, 0.09, 0.11, 0.13, 0.15) (default)
											2 = reversal of parameters.adjustvalue follows the previous pattern unless participant was 
											operating at parameters.min_adjustvalue for a while - in that case the
											reversal process picks up right away once the opposite option is chosen.
											(e.g. 0.15, 0.13, 0.11, 0.09, 0.07, 0.05, 0.03, 0.02, 0.02, 0.02
											-> reversal: 0.03, 0.05, 0.07, 0.09, 0.11, 0.13, 0.15) (default)


/maxtimeofscript:							maximum time this script runs in ms if potential endless loop of procedure is hit ( default: 7200000ms, 2 hours)


Copyright © Millisecond Software. All rights reserved.
Contact | Terms of Service | Security Statement | Employment