User Tools

Site Tools


delay_discounting

Today or Tomorrow? (Delay Discounting)

Feature made available by David Stillwell and Richard Tunney. We'd appreciate it if, when you use this questionnaire, you cite:

Stillwell, D.J. & Tunney, R.J. (2012) Effects of measurement methods on the relationship between smoking and delay reward discounting. Addiction

Measures delay discounting. There are 3 conditions:

  1. Amounts Ascending ($1 to $1000)
  2. Amounts Descending ($1000 to $1)
  3. Amounts Randomized

There are 7 sections, displayed in a random order, each has 15 questions:

  1. 15 different amounts now vs. $1000 in 1 week
  2. 15 different amounts now vs. $1000 in 2 weeks
  3. 15 different amounts now vs. $1000 in 1 month
  4. 15 different amounts now vs. $1000 in 6 months
  5. 15 different amounts now vs. $1000 in 1 year
  6. 15 different amounts now vs. $1000 in 5 years
  7. 15 different amounts now vs. $100 in 1 month

The 15 different amounts are:

  1. $1000
  2. $950
  3. $900
  4. $850
  5. $750
  6. $600
  7. $500
  8. $400
  9. $250
  10. $150
  11. $100
  12. $60
  13. $20
  14. $10
  15. $1

For the final block, which is 15 questions of $100 delayed by 1 month, the immediate amounts are all divided by 10. So it's $100 now, $95 now … $0.10 now.

Users can choose the currency they are most familiar with from a list. Whatever currency they choose, the amounts are adjusted into that currency from the US dollar amounts according to the exchange rate shown in the DB (i.e. $1000 becomes £680 if the exchange rate is .68).

The conditions are in the 'condition' variable. The other columns are always the same even if the condition is different, i.e. q1 always refers to $1000 now vs. $1000 in 1 week, and q105 always refers to $0.10 now vs. $100 in 1 month.

So basically when the data is collected it just fills up the data table in a different order depending on the condition and the 'section_order'.

Missing data: -1 means that the user submitted a page with that question on it, but did not answer the question. 0 means that the user did not submit a page with that question on it.

Smoking/Drinking/Drug-Use There are also optional background questions on smoking, drinking, and drug-taking behaviour.

Users answered a drop-down list question about how often they used the substance. If they did not answer 'Never' then they were also asked to complete a substance use scale.

Questions (and values stored in the DB) were:

Do you smoke?

  • Blank (-1)
  • Daily or more (1)
  • Less than daily (2)
  • Never (3)

Do you drink alcohol?

  • Blank (-1)
  • Weekly or more often (1)
  • Less than once a week (2)
  • Never (3)

Do you use drugs?

  • Blank (-1)
  • Weekly or more often (1)
  • Less than once a week (2)
  • Never (3)

References for the substance use scales used are:

  • Etter, J. F., Le Houezec, J., & Perneger, T. V. (2003). A self-administered questionnaire to measure dependence on cigarettes: The Cigarette Dependence Scale. Neuropsychopharmacology, 28 (2), 359-370.
  • Townshend, J. M., & Duka, T. (2005). Binge drinking, cognitive performance and mood in a population of young social drinkers. Alcoholism-Clinical and Experimental Research, 29 (3), 317-325.
  • Willner, P. (2000). Further validation and development of a screening instrument for the assessment of substance misuse in adolescents. Addiction, 95(11), 1691-1698.

R code to calculate delay discounting (from Vaishali Mahalingam):

dd.data<-read.csv("delay_discounting_data.csv", header=TRUE)
View(dd.data)

# calculating indifference values 

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q1==1,]$minimum<-1000
dd.data[dd.data$q2==1,]$minimum<-950
dd.data[dd.data$q3==1,]$minimum<-900
dd.data[dd.data$q4==1,]$minimum<-850
dd.data[dd.data$q5==1,]$minimum<-750
dd.data[dd.data$q6==1,]$minimum<-600
dd.data[dd.data$q7==1,]$minimum<-500
dd.data[dd.data$q8==1,]$minimum<-400
dd.data[dd.data$q9==1,]$minimum<-250
dd.data[dd.data$q10==1,]$minimum<-150
dd.data[dd.data$q11==1,]$minimum<-100
dd.data[dd.data$q12==1,]$minimum<-60
dd.data[dd.data$q13==1,]$minimum<-20
dd.data[dd.data$q14==1,]$minimum<-10
dd.data[dd.data$q15==1,]$minimum<-1
dd.data[dd.data$q15==2,]$maximum<-1
dd.data[dd.data$q14==2,]$maximum<-10
dd.data[dd.data$q13==2,]$maximum<-20
dd.data[dd.data$q12==2,]$maximum<-60
dd.data[dd.data$q11==2,]$maximum<-100
dd.data[dd.data$q10==2,]$maximum<-150
dd.data[dd.data$q9==2,]$maximum<-250
dd.data[dd.data$q8==2,]$maximum<-400
dd.data[dd.data$q7==2,]$maximum<-500
dd.data[dd.data$q6==2,]$maximum<-600
dd.data[dd.data$q5==2,]$maximum<-750
dd.data[dd.data$q4==2,]$maximum<-850
dd.data[dd.data$q3==2,]$maximum<-900
dd.data[dd.data$q2==2,]$maximum<-950
dd.data[dd.data$q1==2,]$maximum<-1000

dd.data$s1_minimum <- dd.data$minimum
dd.data$s1_maximum <- dd.data$maximum

dd.data$s1_maximum<-ifelse(dd.data$s1_maximum < 0,0,dd.data$maximum)
dd.data$s1_minimum<-ifelse(dd.data$s1_minimum < 0,1000,dd.data$minimum)

#dd.data[dd.data$s1_maximum < 0 && dd.data$s1_maximum!=NA,]$s1_maximum <- 0
#dd.data[dd.data$s1_minimum < 0,]$s1_minimum <- 1000

dd.data$delay_value_s1 <- (dd.data$s1_minimum + dd.data$s1_maximum) / 2

View(dd.data$delay_value_s1)
#####

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q16==1,]$minimum<-1000
dd.data[dd.data$q17==1,]$minimum<-950
dd.data[dd.data$q18==1,]$minimum<-900
dd.data[dd.data$q19==1,]$minimum<-850
dd.data[dd.data$q20==1,]$minimum<-750
dd.data[dd.data$q21==1,]$minimum<-600
dd.data[dd.data$q22==1,]$minimum<-500
dd.data[dd.data$q23==1,]$minimum<-400
dd.data[dd.data$q24==1,]$minimum<-250
dd.data[dd.data$q25==1,]$minimum<-150
dd.data[dd.data$q26==1,]$minimum<-100
dd.data[dd.data$q27==1,]$minimum<-60
dd.data[dd.data$q28==1,]$minimum<-20
dd.data[dd.data$q29==1,]$minimum<-10
dd.data[dd.data$q30==1,]$minimum<-1
dd.data[dd.data$q30==2,]$maximum<-1
dd.data[dd.data$q29==2,]$maximum<-10
dd.data[dd.data$q28==2,]$maximum<-20
dd.data[dd.data$q27==2,]$maximum<-60
dd.data[dd.data$q26==2,]$maximum<-100
dd.data[dd.data$q25==2,]$maximum<-150
dd.data[dd.data$q24==2,]$maximum<-250
dd.data[dd.data$q23==2,]$maximum<-400
dd.data[dd.data$q22==2,]$maximum<-500
dd.data[dd.data$q21==2,]$maximum<-600
dd.data[dd.data$q20==2,]$maximum<-750
dd.data[dd.data$q19==2,]$maximum<-850
dd.data[dd.data$q18==2,]$maximum<-900
dd.data[dd.data$q17==2,]$maximum<-950
dd.data[dd.data$q16==2,]$maximum<-1000

dd.data$s2_minimum <- dd.data$minimum
dd.data$s2_maximum <- dd.data$maximum

dd.data$s2_maximum<-ifelse(dd.data$s2_maximum < 0,0,dd.data$maximum)
dd.data$s2_minimum<-ifelse(dd.data$s2_minimum < 0,1000,dd.data$minimum)

dd.data$delay_value_s2 <- (dd.data$s2_minimum + dd.data$s2_maximum) / 2

########

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q31==1,]$minimum<-1000
dd.data[dd.data$q32==1,]$minimum<-950
dd.data[dd.data$q33==1,]$minimum<-900
dd.data[dd.data$q34==1,]$minimum<-850
dd.data[dd.data$q35==1,]$minimum<-750
dd.data[dd.data$q36==1,]$minimum<-600
dd.data[dd.data$q37==1,]$minimum<-500
dd.data[dd.data$q38==1,]$minimum<-400
dd.data[dd.data$q39==1,]$minimum<-250
dd.data[dd.data$q40==1,]$minimum<-150
dd.data[dd.data$q41==1,]$minimum<-100
dd.data[dd.data$q42==1,]$minimum<-60
dd.data[dd.data$q43==1,]$minimum<-20
dd.data[dd.data$q44==1,]$minimum<-10
dd.data[dd.data$q45==1,]$minimum<-1
dd.data[dd.data$q45==2,]$maximum<-1
dd.data[dd.data$q44==2,]$maximum<-10
dd.data[dd.data$q43==2,]$maximum<-20
dd.data[dd.data$q42==2,]$maximum<-60
dd.data[dd.data$q41==2,]$maximum<-100
dd.data[dd.data$q40==2,]$maximum<-150
dd.data[dd.data$q39==2,]$maximum<-250
dd.data[dd.data$q38==2,]$maximum<-400
dd.data[dd.data$q37==2,]$maximum<-500
dd.data[dd.data$q36==2,]$maximum<-600
dd.data[dd.data$q35==2,]$maximum<-750
dd.data[dd.data$q34==2,]$maximum<-850
dd.data[dd.data$q33==2,]$maximum<-900
dd.data[dd.data$q32==2,]$maximum<-950
dd.data[dd.data$q31==2,]$maximum<-1000

dd.data$s3_minimum <- dd.data$minimum
dd.data$s3_maximum <- dd.data$maximum

dd.data$s3_maximum<-ifelse(dd.data$s3_maximum < 0,0,dd.data$maximum)
dd.data$s3_minimum<-ifelse(dd.data$s3_minimum < 0,1000,dd.data$minimum)

dd.data$delay_value_s3 <- (dd.data$s3_minimum + dd.data$s3_maximum) / 2

##########

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q46==1,]$minimum<-1000
dd.data[dd.data$q47==1,]$minimum<-950
dd.data[dd.data$q48==1,]$minimum<-900
dd.data[dd.data$q49==1,]$minimum<-850
dd.data[dd.data$q50==1,]$minimum<-750
dd.data[dd.data$q51==1,]$minimum<-600
dd.data[dd.data$q52==1,]$minimum<-500
dd.data[dd.data$q53==1,]$minimum<-400
dd.data[dd.data$q54==1,]$minimum<-250
dd.data[dd.data$q55==1,]$minimum<-150
dd.data[dd.data$q56==1,]$minimum<-100
dd.data[dd.data$q57==1,]$minimum<-60
dd.data[dd.data$q58==1,]$minimum<-20
dd.data[dd.data$q59==1,]$minimum<-10
dd.data[dd.data$q60==1,]$minimum<-1
dd.data[dd.data$q60==2,]$maximum<-1
dd.data[dd.data$q59==2,]$maximum<-10
dd.data[dd.data$q58==2,]$maximum<-20
dd.data[dd.data$q57==2,]$maximum<-60
dd.data[dd.data$q56==2,]$maximum<-100
dd.data[dd.data$q55==2,]$maximum<-150
dd.data[dd.data$q54==2,]$maximum<-250
dd.data[dd.data$q53==2,]$maximum<-400
dd.data[dd.data$q52==2,]$maximum<-500
dd.data[dd.data$q51==2,]$maximum<-600
dd.data[dd.data$q50==2,]$maximum<-750
dd.data[dd.data$q49==2,]$maximum<-850
dd.data[dd.data$q48==2,]$maximum<-900
dd.data[dd.data$q47==2,]$maximum<-950
dd.data[dd.data$q46==2,]$maximum<-1000

dd.data$s4_minimum <- dd.data$minimum
dd.data$s4_maximum <- dd.data$maximum

dd.data$s4_maximum<-ifelse(dd.data$s4_maximum < 0,0,dd.data$maximum)
dd.data$s4_minimum<-ifelse(dd.data$s4_minimum < 0,1000,dd.data$minimum)

dd.data$delay_value_s4 <- (dd.data$s4_minimum + dd.data$s4_maximum) / 2

############

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q61==1,]$minimum<-1000
dd.data[dd.data$q62==1,]$minimum<-950
dd.data[dd.data$q63==1,]$minimum<-900
dd.data[dd.data$q64==1,]$minimum<-850
dd.data[dd.data$q65==1,]$minimum<-750
dd.data[dd.data$q66==1,]$minimum<-600
dd.data[dd.data$q67==1,]$minimum<-500
dd.data[dd.data$q68==1,]$minimum<-400
dd.data[dd.data$q69==1,]$minimum<-250
dd.data[dd.data$q70==1,]$minimum<-150
dd.data[dd.data$q71==1,]$minimum<-100
dd.data[dd.data$q72==1,]$minimum<-60
dd.data[dd.data$q73==1,]$minimum<-20
dd.data[dd.data$q74==1,]$minimum<-10
dd.data[dd.data$q75==1,]$minimum<-1
dd.data[dd.data$q75==2,]$maximum<-1
dd.data[dd.data$q74==2,]$maximum<-10
dd.data[dd.data$q73==2,]$maximum<-20
dd.data[dd.data$q72==2,]$maximum<-60
dd.data[dd.data$q71==2,]$maximum<-100
dd.data[dd.data$q70==2,]$maximum<-150
dd.data[dd.data$q69==2,]$maximum<-250
dd.data[dd.data$q68==2,]$maximum<-400
dd.data[dd.data$q67==2,]$maximum<-500
dd.data[dd.data$q66==2,]$maximum<-600
dd.data[dd.data$q65==2,]$maximum<-750
dd.data[dd.data$q64==2,]$maximum<-850
dd.data[dd.data$q63==2,]$maximum<-900
dd.data[dd.data$q62==2,]$maximum<-950
dd.data[dd.data$q61==2,]$maximum<-1000

dd.data$s5_minimum <- dd.data$minimum
dd.data$s5_maximum <- dd.data$maximum

dd.data$s5_maximum<-ifelse(dd.data$s5_maximum < 0,0,dd.data$maximum)
dd.data$s5_minimum<-ifelse(dd.data$s5_minimum < 0,1000,dd.data$minimum)

dd.data$delay_value_s5 <- (dd.data$s5_minimum + dd.data$s5_maximum) / 2

#########

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q76==1,]$minimum<-1000
dd.data[dd.data$q77==1,]$minimum<-950
dd.data[dd.data$q78==1,]$minimum<-900
dd.data[dd.data$q79==1,]$minimum<-850
dd.data[dd.data$q80==1,]$minimum<-750
dd.data[dd.data$q81==1,]$minimum<-600
dd.data[dd.data$q82==1,]$minimum<-500
dd.data[dd.data$q83==1,]$minimum<-400
dd.data[dd.data$q84==1,]$minimum<-250
dd.data[dd.data$q85==1,]$minimum<-150
dd.data[dd.data$q86==1,]$minimum<-100
dd.data[dd.data$q87==1,]$minimum<-60
dd.data[dd.data$q88==1,]$minimum<-20
dd.data[dd.data$q89==1,]$minimum<-10
dd.data[dd.data$q90==1,]$minimum<-1
dd.data[dd.data$q90==2,]$maximum<-1
dd.data[dd.data$q89==2,]$maximum<-10
dd.data[dd.data$q88==2,]$maximum<-20
dd.data[dd.data$q87==2,]$maximum<-60
dd.data[dd.data$q86==2,]$maximum<-100
dd.data[dd.data$q85==2,]$maximum<-150
dd.data[dd.data$q84==2,]$maximum<-250
dd.data[dd.data$q83==2,]$maximum<-400
dd.data[dd.data$q82==2,]$maximum<-500
dd.data[dd.data$q81==2,]$maximum<-600
dd.data[dd.data$q80==2,]$maximum<-750
dd.data[dd.data$q79==2,]$maximum<-850
dd.data[dd.data$q78==2,]$maximum<-900
dd.data[dd.data$q77==2,]$maximum<-950
dd.data[dd.data$q76==2,]$maximum<-1000

dd.data$s6_minimum <- dd.data$minimum
dd.data$s6_maximum <- dd.data$maximum

dd.data$s6_maximum<-ifelse(dd.data$s6_maximum < 0,0,dd.data$maximum)
dd.data$s6_minimum<-ifelse(dd.data$s6_minimum < 0,1000,dd.data$minimum)

dd.data$delay_value_s6 <- (dd.data$s6_minimum + dd.data$s6_maximum) / 2

############

dd.data$minimum<-NA
dd.data$maximum<-NA

dd.data[dd.data$q91==1,]$minimum<-100
dd.data[dd.data$q92==1,]$minimum<-95
dd.data[dd.data$q93==1,]$minimum<-90
dd.data[dd.data$q94==1,]$minimum<-85
dd.data[dd.data$q95==1,]$minimum<-75
dd.data[dd.data$q96==1,]$minimum<-60
dd.data[dd.data$q97==1,]$minimum<-50
dd.data[dd.data$q98==1,]$minimum<-40
dd.data[dd.data$q99==1,]$minimum<-25
dd.data[dd.data$q100==1,]$minimum<-15
dd.data[dd.data$q101==1,]$minimum<-10
dd.data[dd.data$q102==1,]$minimum<-6
dd.data[dd.data$q103==1,]$minimum<-2
dd.data[dd.data$q104==1,]$minimum<-1
dd.data[dd.data$q105==1,]$minimum<-0.1
dd.data[dd.data$q105==2,]$maximum<-0.1
dd.data[dd.data$q104==2,]$maximum<-1
dd.data[dd.data$q103==2,]$maximum<-2
dd.data[dd.data$q102==2,]$maximum<-6
dd.data[dd.data$q101==2,]$maximum<-10
dd.data[dd.data$q100==2,]$maximum<-15
dd.data[dd.data$q99==2,]$maximum<-25
dd.data[dd.data$q98==2,]$maximum<-40
dd.data[dd.data$q97==2,]$maximum<-50
dd.data[dd.data$q96==2,]$maximum<-60
dd.data[dd.data$q95==2,]$maximum<-75
dd.data[dd.data$q94==2,]$maximum<-85
dd.data[dd.data$q93==2,]$maximum<-90
dd.data[dd.data$q92==2,]$maximum<-95
dd.data[dd.data$q91==2,]$maximum<-100

dd.data$s7_minimum <- dd.data$minimum
dd.data$s7_maximum <- dd.data$maximum

dd.data$s7_maximum<-ifelse(dd.data$s7_maximum < 0,0,dd.data$maximum)
dd.data$s7_minimum<-ifelse(dd.data$s7_minimum < 0,100,dd.data$minimum)

dd.data$delay_value_s7 <- (dd.data$s7_minimum + dd.data$s7_maximum) / 2

# Delete unnecessary variables from dd.dataframe
dd.data$minimum<-NULL
dd.data$maximum<-NULL
dd.data$s1_minimum<-NULL
dd.data$s1_maximum<-NULL
dd.data$s2_minimum<-NULL
dd.data$s2_maximum<-NULL
dd.data$s3_minimum<-NULL
dd.data$s3_maximum<-NULL
dd.data$s4_minimum<-NULL
dd.data$s4_maximum<-NULL
dd.data$s5_minimum<-NULL
dd.data$s5_maximum<-NULL
dd.data$s6_minimum<-NULL
dd.data$s6_maximum<-NULL
dd.data$s7_minimum<-NULL
dd.data$s7_maximum<-NULL



#  Calculating k values

dd.data$k_time1_1000<-(1000-dd.data$delay_value_s1)/(dd.data$delay_value_s1*0.25)
dd.data$k_time2_1000<-(1000-dd.data$delay_value_s2)/(dd.data$delay_value_s2*0.5)
dd.data$k_time3_1000<-(1000-dd.data$delay_value_s3)/(dd.data$delay_value_s3*1)
dd.data$k_time4_1000<-(1000-dd.data$delay_value_s4)/(dd.data$delay_value_s4*6)
dd.data$k_time5_1000<-(1000-dd.data$delay_value_s5)/(dd.data$delay_value_s5*12)
dd.data$k_time6_1000<-(1000-dd.data$delay_value_s6)/(dd.data$delay_value_s6*60)
dd.data$k_time3_100<-(100-dd.data$delay_value_s7)/(dd.data$delay_value_s7*1)


#log transform k values
dd.data$logk_time1_1000<-log10(dd.data$k_time1_1000)
dd.data$logk_time2_1000<-log10(dd.data$k_time2_1000)
dd.data$logk_time3_1000<-log10(dd.data$k_time3_1000)
dd.data$logk_time4_1000<-log10(dd.data$k_time4_1000)
dd.data$logk_time5_1000<-log10(dd.data$k_time5_1000)
dd.data$logk_time6_1000<-log10(dd.data$k_time6_1000)
dd.data$logk_time3_100<-log10(dd.data$k_time3_100)

names(dd.data)
# mean log_k
dd.data$mean_logk_1000<-rowMeans(dd.data[,153:159],na.rm=T)

View(dd.data)
write.csv(dd.data,"delay_discounting_data.KValues.csv",row.names = FALSE)
delay_discounting.txt · Last modified: 2017/05/05 11:37 by David Stillwell