___________________________________________________________________________________________________________________ Delay & Probability Discounting Procedure (Richards et al., 1999) (German instructions) ___________________________________________________________________________________________________________________ Script Author: Meticulously handcrafted from the finest code by David Nitz (nitz.david@gmail.com) for Millisecond Software, LLC. last updated: 05-30-2023 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC Script Copyright © 05-30-2023 Millisecond Software German translation by K. Borchert for Millisecond Software ___________________________________________________________________________________________________________________ BACKGROUND INFO ___________________________________________________________________________________________________________________ This script implements a Delay and Probability Discounting Procedure to establish a) the hypothetical payoffs at which people start to discount higher monetary rewards in favor of shorter wait periods (Delay Discounting) b) the fictional payoffs at which people start to discount high monetary rewards of unsure events in favor of lower monetary rewards of sure wins (Probability Discounting) The implemented procedure is based on: Richards, J. B., Zhang, L., Mitchell, S. H., & De Wit, H. (1999). Delay or probability discounting in a model of impulsive behavior: Effect of alcohol. Journal of the Experimental Analysis of Behavior, 71(2), 121-143. ___________________________________________________________________________________________________________________ TASK DESCRIPTION ___________________________________________________________________________________________________________________ Participants choose between a standard amount of money ($10) with different time/probability delays or a variable amount with no delay until an indifference point for each delay is found or until the maximum number of trials has been run for each delay (default: 30). ___________________________________________________________________________________________________________________ DURATION ___________________________________________________________________________________________________________________ the default set-up of the script takes appr. 15 minutes to complete ___________________________________________________________________________________________________________________ DATA OUTPUT DICTIONARY ___________________________________________________________________________________________________________________ The fields in the data files are: (1) Raw data file: 'dpdt_richards_raw*.iqdat' (a separate file for each participant) build: The specific Inquisit version used (the 'build') that was run computer.platform: the platform the script was run on (win/mac/ios/android) date, time: date and time script was run subject, group: with the current subject/groupnumber session: with the current session id blockCode, blockNum: the name and number of the current block (built-in Inquisit variable) trialCode, trialNum: the name and number of the currently recorded trial (built-in Inquisit variable) Note: trialNum is a built-in Inquisit variable; it counts all trials run; even those that do not store data to the data file such as feedback trials. Thus, trialNum may not reflect the number of main trials run per block. trialCount: Total number of trials run (including distractor trials). latency: the participant’s response latency (in ms) for the current trial (in ms) response: the selected response of the participant for the current trial (for most trials: A or B) text.question.currentItem: the actual decision question presented to participant questionType: 1 = temporal delay question; 2 = probabilistic delay question text.subjectQuestion.currentItem: the question that was randomly selected to determine participant’s reward text.subjectAnswer.currentItem: The participant’s response to the win question var: 'Variable' amount of money offered in the current trial. This value is computed according to the proper bottom and top limits (see below) by expressions 't1_var' through 'p5_var'. std: 'Standard' amount of money to use throughout the task. Default is 10. The following variable is only relevant for trials with Question Type = 1 t: Value of the current temporal delay used in a given trial. The following variable is only relevant for trials with Question Type = 2 p: Value of the current probabilistic 'delay' used in a given trial. The following variables are only relevant for trials trialCode = “t1” t1BMax: The respective maximum bottom limits for temporal delay t1. Used to determine the variable amount of money offered in a given t1 trial and to adjust the limits for subsequent t1 trials. t1Bmin: The respective minimum bottom limits for temporal delay t1. Used to determine the variable amount of money offered in a given t1 trial and to adjust the limits for subsequent t1 trials. t1Tmin: The respective minimum top limits for the temporal delay t1. Used to determine the variable amount of money offered in a given t1 trial and to adjust the limits for subsequent t1 trials. t1TMax: The respective maximum top limits for the temporal delay t1. Used to determine the variable amount of money offered in a given t1 trial and to adjust the limits for subsequent t1 trials. t1Var: 'variable' amount for temporal delays t1. The valid range is restricted by the respective maximum bottom and maximum top limits. Values returned lie between those limits in 0.5 increments. t1Count: Number of trials for temporal delay t1. t1IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t1. t1Ip: Obtained indifference point estimate for temporal delay t1 parameters.t1: Predetermined value for temporal delay t1 questions in this script (t1 = 0) (same for all temporal delays t2-t5) The following variables are only relevant for trials trialCode = “p1” p1BMax: The respective maximum bottom limits for probabilistic ‘delay’ p1. Used to determine the variable amount of money offered in a given p1 trial and to adjust the limits for subsequent p1 trials. p1Bmin: The respective minimum bottom limits for probabilistic ‘delay’ p1. Used to determine the variable amount of money offered in a given p1 trial and to adjust the limits for subsequent p1 trials. p1Tmin: The respective minimum top limits for the probabilistic ‘delay’ p1. Used to determine the variable amount of money offered in a given p1 trial and to adjust the limits for subsequent p1 trials. p1TMax: The respective maximum top limits for the probabilistic ‘delay’ p1. Used to determine the variable amount of money offered in a given p1 trial and to adjust the limits for subsequent p1 trials. p1Var: 'variable' amount for probabilistic ‘delay’ p1. The valid range is restricted by the respective maximum bottom and maximum top limits. Values returned lie between those limits in 0.5 increments. p1Count: Number of trials for probabilistic ‘delay’ p1. p1IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic ‘delay’ p1. p1Ip: Obtained indifference point estimate for probabilistic ‘delay’ p1 p1: Predetermined value for probabilistic ‘delay’ for p1-questions in this script (p1 = 100) (same for all probabilistic delays p2-p5) Relevant for all trials nips: The total number of successfully determined indifference points. The procedure determines a total of 10 different indifference points (for five temporal delays, 't1' to 't5', and five probabilistic 'delays', 'p1' to 'p5'). The procedure is stopped as soon as 'expressions.nips' returns 10, i.e. when all indifference points at question have been obtained. distractorStart: Number of trials to run *before* distractor trials should be added to the mix. Default is 70, i.e. after 70 experimental trials ('t1' to 'p5') have been run, every second trial will be a distractor trial ('d0'). d0Count: Total number of distractor trials run d0Var: Computes a random 'variable' amount to be used in distractor trials ('d0'). The value returned always lies between 0 and the defined 'standard' amount ($10) in 0.5 increments (2) Summary data file: 'dpdt_richards_summary*.iqdat' (a separate file for each participant) inquisit.version: Inquisit version run computer.platform: the platform the script was run on (win/mac/ios/android) startDate: date script was run startTime: time script was started subjectId: assigned subject id number groupId: assigned group id number sessionId: assigned session id number elapsedTime: time it took to run script (in ms); measured from onset to offset of script completed: 0 = script was not completed (prematurely aborted); 1 = script was completed (all conditions run) nips: The total number of successfully determined indifference points. The procedure determines a total of 10 different indifference points (for five temporal delays, 't1' to 't5', and five probabilistic 'delays', 'p1' to 'p5'). The procedure is stopped as soon as 'expressions.nips' returns 10, i.e. when all indifference points at question have been obtained. t1IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t1. t1Ip: Obtained indifference point estimate for temporal delay t1 t2IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t2. t2Ip: Obtained indifference point estimate for temporal delay t2 t3IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t3. t3Ip: Obtained indifference point estimate for temporal delay t3 t4IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t4. t4Ip: Obtained indifference point estimate for temporal delay t4 t5IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for temporal delay t5. t5Ip: Obtained indifference point estimate for temporal delay t5 p1IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic delay p1. p1Ip: Obtained indifference point estimate for probabilistic ‘delay’ p1 p2IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic delay p2. p2Ip: Obtained indifference point estimate for probabilistic ‘delay’ p2 p3IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic delay p3. p3Ip: Obtained indifference point estimate for probabilistic ‘delay’ p3 p4IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic delay p4. p4Ip: Obtained indifference point estimate for probabilistic ‘delay’ p4 p5IpFound: Value reflecting whether an indifference point has been successfully determined ('1') or not ('0') for probabilistic delay p5. p5Ip: Obtained indifference point estimate for probabilistic ‘delay’ p5 text.subjectQuestion.currentItem: the question that was randomly selected to determine participant’s reward text.subjectAnswer.currentItem: The participant’s response to the win question ___________________________________________________________________________________________________________________ EXPERIMENTAL SET-UP ___________________________________________________________________________________________________________________ * 5 temporal delays and 5 probability "delays"; tested within in a mixed design temporal delays are 0, 2, 30, 180 and 365 days probability delays are: 100, 90, 75, 50 and 25 percent => change delays under section EDITABLE PARAMETERS * 1 standard amount (10), variable amounts between 0 <=variable amount <= 10 * once an indifference point is found for a particular delay, that delay is not run any further * potentially 30 trials can be run for each delay -> can be edited under block.dpdt * after a predetermined amount of trials (see EDITABLE PARAMETERS), a distractor trial is run after each test trial * script stops if an indifference point has been found for all delays or the maximum number of trials has been run for each delay (default: 30). Description of the adjustment procedure: If a subject picks the 'variable' amount on a given trial, the respective top and the bottom limits are decreased according to the following three rules: (a) If the 'variable' amount is less than the minimum top limit, the minimum top limit is set to equal the 'variable' amount. The maximum top limit is set equal to the previous minimum top limit. (b) If the 'variable' amount is greater than the minimum top limit, the maximum top limit is set to equal the 'variable' amount. The minimum top limit is left unchanged. (c) If the 'variable' amount is less than the minimum bottom limit, the minimum bottom limit is set to equal the 'variable' amount. The maximum bottom limit is set equal to $0. If a subject picks the 'standard' amount ($10) on a given trial, the respective top and bottom limits are increased according to the following three rules: (a) If the 'variable' amount is greater than the minimum bottom limit, the minimum bottom limit is set to equal the 'variable' amount. The maximum bottom limit is set equal to the previous minimum bottom limit. (b) If the 'variable' amount is less than the minimum bottom limit, the maximum bottom limit is set to equal the 'variable' amount. The minimum bottom limit is left unchanged. (c) If the 'variable' amount is greater than the minimum top limit, the minimum top limit is set to equal to the current 'variable' amount. The maximum top limit is set to equal the 'standard' amount ($10). As soon as the difference between the respective maximum bottom limit and maximum top limit reaches $0.50, the corresponding variable amount is recorded as estimate of the respective indifference point. After an indifference point has been successfully determined for a particular temporal or probabilistic delay, no more trials of that type will be run. ___________________________________________________________________________________________________________________ INSTRUCTIONS ___________________________________________________________________________________________________________________ see section 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: pretrialdelay: Adjustable pretrialpause in milliseconds. Change as needed. posttrialdelay: Adjustable posttrialpause in milliseconds. Change as needed. distractorstart: Number of trials to run *before* distractor trials should be added to the mix. Default is 70, i.e. after 70 experimental trials ('t1' to 'p5') have been run, every second trial will be a distractor trial ('d0'). std: 'Standard' amount of money to use throughout the task. Default is 10. t1 to t5: Values for the five temporal delays. The procedure estimates indifference points for five different temporal delays. Defaults are 0, 2, 30, 180 and 365 days. p1 to p5: Values for the five probabilistic 'delays'. The procedure estimates indifference points for five different probabilities. Defaults are 100, 90, 75, 50 and 25 percent.