Delay Discounting Task - ABCD Consortium - Smart Phone

Technical Manual

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond

This script has been made available to the Millisecond Test Library by the ABCD Research Consortium.
The script was originally designed to be run on ipads. The current version has been updated/optimized
for ABCD to run on smart phones for remote testing.
The ipad version is also available through the Millisecond library.

Created: January 28, 2017

Last Modified: January 30, 2023 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

This script implements an Adjusting Amount Discounting Procedure to assess the hypothetical reward amounts at which people start to discount higher monetary rewards in favor of shorter wait periods.

This script is based on an Python script written by Dr. Mikhail Koffarnus and generously shared by the ABCD Consortium.

References

Koffarnus, M.N. & and Warren K. Bickel, W.K. (2014). A 5-Trial Adjusting Delay Discounting Task: Accurate Discount Rates in Less Than One Minute. Experimental and Clinical Psychopharmacology, 22, No. 3, 222–228

Rule Violations described in: Johnson and Bickel (2008, Experimental and Clinical Psychopharmacology, 16, 264-274).

This script can be run on its own or in conjunction with script 'remotetesting_instructions.iqjs'. 'remotetesting_instructions.iqjs': script that tests that the screen sizing roughly fits a smart phone. The combined sequence is run by script 'batch.iqjs'.

Duration

5 minutes

Description

Participants have to make a choice between 2 amounts of moneys with different delays: a delayed amount (here: $100) for delay1 (e.g. "in a year") compared to an immediate amount (e.g. $50) right now. Seven delays ("6hours", "1 day", "1 week", "1 month", "3 months", "1 year", "5 years") are tested in this script to determine 7 indifference points. Each delay is tested with 6 trials. Depending on the participant's choice the immediate amount is adjusted up (when delayed amount is selected) or down (when immediate amount is chosen.)

Procedure

• 7 delays ("6hours", "1 day", "1 week", "1 month", "3 months", "1 year", "5 years") are tested within-participants in a blocked design
the delays can be adjusted under section Editable Lists (names of IP values will then have to be adjusted under section VALUES)
• the order of the delays is determined randomly
• 6 trials per delays
• the delayed amount can be set under Editable parameters. By default, it's $100
• the starting immediate amount is set as half of the delayed amount
• immediate choice validity questions after delays: "3months", "1year", "5years"
("get $100 NOW" vs. "get $100 in 5 years")
each immediate choice receives 1 point: max points 3

Trials:
• left or right screen location of the delayed and immediate amount are randomly determined for each trial
(maxrun of one side = 3 per block)
• participants makes a choice via a button press: the left key refers to selecting the choice on the left,
the right key refers to selecting the choice on the right
• participants have an unlimited time to make a choice
• depending on choice

Adjustment Algorithm of the Immediate Amount:
First Trial: half of the difference of delayed and immediate amount
Example: delayed amount = 100; immediate amount = 50; adjustment = (100-50)/2 = 25

if participants chooses delayed amount (100) -> the next immediate amount tested is = 50 + 25 = 75
if participant chooses immediate amount (50) -> the next immediate amount tested is = 50 - 25 = 25

Subsequent Trials: half of the previous used adjustment
Example: previous adjustment = 25 => the next adjustment will be 12.5


Algorithm to calculate Indifference Points (P):
at the end of each delay, the computer calculates the indifference point for the tested delays
as the midpoint of last 'immediate' amount chosen and last 'immediate' amount rejected.

a) if participant always rejects the immediate amount, the IP will be the midpoint between the
delayed amount and the last immediate amount rejected.
b) if participant always rejects the delayed amount, the IP will be the midpoint between
0 and the last immediate amount chosen

Rule Violation Algorithms (Johnson & Bickel, 2008):
Johnson and Bickel (2008, Experimental and Clinical Psychopharmacology, 16, 264-274).

JB Rule1: if a later indifference point (absolute indifference points) is larger than the preceding one by 20% of the delayed standard amount=> rule violation
JB Rule2: if the difference btw. first and last indifference point (absolute indifference points) is smaller than 10% of the standard amount => rule violation

the 'absolute' indifference points in this script are the ones not set relative to the delayedRewardAmount

Instructions

provided by ABCD Research Consortium - can be edited under section Editable Instructions
The instructions are presented orally and visually.

Summary Data

File Name: adjustingamountdiscounting_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
startDate Date the session was run
startTime Time the session was run
subjectId Participant ID
groupId Group number
sessionId Session number
elapsedTime Session duration in ms
completed 0 = Test was not completed
1 = Test was completed
delayed The delayed amount in $ (here: 100)
testedDelays A string variable that stores all tested delays in the order tested
immediateChoiceValidity Immediate choice validity questions after: 3 months, 1 year, 5 year
("get $100 NOW" vs. "get $100 in 5 years")
each immediate choice receives 1 point: max points 3
indifPoint6h-
indifPoint5Years Store the Indifference Points (IP) for the 7 specific delays tested in this script
(the values are stored as % in relation to standard value and the values directly translates to
the corresponding $ value - as the standard amount is $100)
Johnson & Bickel (2008)-test for rule violations
consistentPerJBCriterion1 No: at least one indifference point is larger than the preceding one by 20% of delayed amount (here: $100)
yes: otherwise
jbpass1NumberViolations Stores the number of rule violations of JB criterion 1 based on the six individual indifference point checks
(Range: 0 - 6)
consistentPerJBCriterion2 No: the difference btw. first and last indifference point (set relative to delayed amount) is smaller than 10% of the delayed standard amount
yes: otherwise
meanRTAllChoices Mean latency (in ms) of all choices
medianRTAllChoices Median latency (in ms) of all choices
meanRTImmedChoices Mean latency (in ms) of 'immediate' choices
medianRTImmedChoices Median latency (in ms) of 'immediate' choices
meanRTDelayedChoices Mean latency (in ms) of 'delayed' choices
medianRTDelayedChoices Median latency (in ms) of 'delayed' choices

Raw Data

File Name: adjustingamountdiscounting_raw*.iqdat

Data Fields

NameDescription
build Inquisit version number
computer.platform Device platform: win | mac |ios | android
date Date the session was run
time Time the session was run
subject, group, session With the current subject/groupnumber/sessionnumber
blockCode Name of the current block
blockNum Number of the current block
trialCode Name of the current trial
trialNum Number of the current trial
countDelays Counts the number of delays tested
delayIndex Index of delay (in ascending order)
delay Stores the current delay tested: ("6 hours from now", "1 day", "1 week", "1 month", "3 months", "1 year", "5 years")
delayDays Stores the current delays in unit 'day' (numbers from original Phython program)
countTrials Counts the number of adjustment trials run per block
delayedReward The delayed amount in $ (here: 100)
immediate Stores the currently tested 'immediate' amount
delayedLocation 1 = delayed amount is presented on the left; 2 = delayed amount is presented on the right
stimulusItem The presented stimuli in order of trial presentation
text.delayed.timestamp The elapsed script time when delayed text was presented
choiceRT The choice RT (in ms); measured from onset of choices
homeButtonRT The time (in ms) that it took to press the green home Button before the choice trial
response The participant's response (for test trials: immediate vs. delayed)
adjust Stores the adjust amount of the next immediate amount
nextImmediate Stores the next 'immediate' amount
lastImmediateChosen Stores the last immediate amount chosen
lastImmediateRejected Stores the last immediate amount rejected
indiffPoint Calculates the current indifference point as the midpoint of values.last ImmediateChosen and values.lastImmediateRejected
in proportion to parameters.delayedRewardAmount; indifference point is stored as a %
and its value directly translate to the corresponding $ value (as the standard amount is $100)
immediateChoiceValidity Immediate choice validity questions after: 3 months, 1 year, 5 year
("get $100 NOW" vs. "get $100 in 5 years")
each immediate choice receives 1 point: max points 3

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
delayedRewardAmount The delayed amount in $ (here: 100)
startTrialDuration The duration (in ms) of the start trial in each block (the announcement of the particular delay) 2000ms
leftx The proportional screen position of the left amount (here: 25% of the width of the canvas) note: 0% is the very left of canvas
rightx The proportional screen position of the right amount (here: 75% of the width of the canvas): 100% is the very right of canvas
testSetting (don't change)"remote"