Signature
M_0 = b * w_1 - a * w_0; M_1 = b * w_2 - a * w_1
| Inputs | Definition | Unit |
|---|---|---|
b | Value of the later outcome, arriving one period after the sooner one, such as 13 units from quitting | same as a |
w_1 | Discount weight on an outcome one period ahead, from HE-FM-HYPD-001, HE-FM-HYPD-003, HE-FM-HYPD-004 or a constant-rate factor | none |
a | Value of the sooner outcome, such as 10 units of satisfaction from smoking this month in the article | units of value, utility or money |
w_0 | Discount weight on an outcome now, 1 for every form in this package | none |
w_2 | Discount weight on an outcome two periods ahead from the same function as w_1 | none |
M_0 | Weighted value of the larger-later amount minus that of the smaller-sooner amount when the sooner one is available now | same as a and b |
|---|---|---|
M_1 | Weighted value of the larger-later amount minus that of the smaller-sooner amount when the same choice falls one period ahead | same as a and b |
Function
Hyperbolic discount weight function with impatience that declines with delay
Maps a delay t, counted from the moment of choice, and the parameters of a chosen non-constant discount function to the weight placed on an outcome t periods ahead and to the per-period discount rate that the weights imply. Under the constant-rate factor of the Discount Rate page (HE-FM-DR-001), and in the stream totals of the Discounting page (HE-FN-DISC-001 and its formulas), the rate between two adjacent periods is the same at every delay, whereas the forms here let it fall as the delay grows. The package gives the simple hyperbola and its per-period rate, the generalised hyperbola of Loewenstein and Prelec, the quasi-hyperbolic beta-delta form, and a check for a preference reversal between a smaller-sooner and a larger-later outcome. Notation follows the Hyperbolic Discounting article.
Computational function
Computational function for a smaller-sooner against larger-later plan check with commitment thresholds under a chosen discount form
Takes the two amounts, a choice of discount form and its parameters, builds the weights at delays 0, 1 and 2, and returns the two margins of HE-FM-HYPD-005, whether the plan reverses, the penalty on the sooner outcome felt now that would tip today's choice, the reward paid with the later outcome that would do the same, and the first whole delay at which waiting is preferred. The penalty is minus M_0 and the reward minus M_0 divided by w_1, so their ratio is the timing premium 1/w_1 in step 4 of the article's example. The inputs therefore differ from the formula's variables, which take the weights as given.
Inputs and outputs:
aandbare the smaller-sooner and larger-later amounts, one period apart, in units of value.formisexp,hyp,genorqhfor the constant-rate factor delta^t, the simple hyperbola, the generalised hyperbola or the quasi-hyperbolic form.alpha,betaanddeltaare that form's parameters.w_1andw_2are the weights one and two periods ahead.M_0andM_1are the margins.Pis the smallest penalty felt now andRthe smallest reward paid with the later outcome that would make waiting win today, both zero when it already wins.s_staris the first delay at which waiting is preferred, or none within the search range.Assumption: The amounts are fixed, the weights are seen from today and the later outcome arrives one period after the sooner one. The calculator line below follows the quasi-hyperbolic path, which gives constant-rate weights when beta = 1; the R and Python code cover all four forms.
Worked example (Article's quasi-hyperbolic smoker): Smoking wins today by 0.991, quitting wins for next month, and the penalty and reward thresholds are 0.991 and about 1.430, as in the article.
a = 10; b = 13; beta = 0.7; delta = 0.99; w_1 = 0.693; w_2 = 0.68607; M_0 = -0.991; M_1 = 1.98891; P = 0.991; R = 1.430014. The first delay at which waiting wins is 1.Worked example (Article's simple hyperbolic smoker): With alpha = 0.4 the plan also reverses, and the reward needed is exactly 1 unit, 10 divided by 0.714286 minus 13 (computed here for illustration). The values come from the R and Python code, since the calculator line follows the quasi-hyperbolic path.
a = 10; b = 13; alpha = 0.4; w_1 = 0.714286; w_2 = 0.555556; M_0 = -0.714286; M_1 = 0.079365; P = 0.714286; R = 1. The first delay at which waiting wins is 1.Worked example (Impatient exponential smoker with delta of 0.75): Waiting never wins at any delay, so no plan to quit is formed and there is nothing to reverse.
a = 10; b = 13; beta = 1; delta = 0.75; w_1 = 0.75; w_2 = 0.5625; M_0 = -0.25; M_1 = -0.1875; P = 0.25; R = 0.333333.Worked example (Patient exponential smoker with delta of 0.99): Waiting wins today, so both thresholds are zero, a limiting case.
a = 10; b = 13; beta = 1; delta = 0.99; w_1 = 0.99; w_2 = 0.9801; M_0 = 2.87; M_1 = 2.8413; P = 0; R = 0.Excel:
=AND(LaterAmount*QHBeta*QHDelta-SoonerAmount<0,LaterAmount*QHBeta*QHDelta^2-SoonerAmount*QHBeta*QHDelta>0)Returns TRUE when a quasi-hyperbolic plan reverses;=MAX(SoonerAmount/(QHBeta*QHDelta)-LaterAmount,0)returns the reward threshold.R:
plan_check <- function(a, b, form, alpha = 0, beta = 1, delta = 1, s_max = 120) { w <- switch(form, exp = function(t) delta^t, hyp = function(t) 1/(1+alpha*t), gen = function(t) (1+alpha*t)^(-beta/alpha), qh = function(t) ifelse(t == 0, 1, beta*delta^t)); m0 <- b*w(1)-a*w(0); m1 <- b*w(2)-a*w(1); s <- 0:s_max; ok <- which(b*w(s+1) > a*w(s)); list(w_1 = w(1), w_2 = w(2), M_0 = m0, M_1 = m1, reversal = m0 < 0 & m1 > 0, P = max(-m0, 0), R = max(-m0/w(1), 0), s_star = if (length(ok)) s[ok[1]] else NA) }Returns a named list.Python:
def plan_check(a, b, form, alpha=0.0, beta=1.0, delta=1.0, s_max=120): w = {'exp': lambda t: delta**t, 'hyp': lambda t: 1/(1+alpha*t), 'gen': lambda t: (1+alpha*t)**(-beta/alpha) if t else 1.0, 'qh': lambda t: beta*delta**t if t else 1.0}[form]; m0 = b*w(1)-a*w(0); m1 = b*w(2)-a*w(1); s_star = next((s for s in range(s_max+1) if b*w(s+1) > a*w(s)), None); return w(1), w(2), m0, m1, m0 < 0 < m1, max(-m0, 0), max(-m0/w(1), 0), s_starPlain Python with no imports.Test (Reward threshold equals the penalty divided by the one-period weight): The timing premium 1/w_1 links the two thresholds, 1.443 for the article's quasi-hyperbolic smoker. The expected result is TRUE. Excel check
=ABS((10/(0.7*0.99)-13)-(10-13*0.7*0.99)/(0.7*0.99))<1E-9Test (Constant-rate weights never reverse): For delta = 0.75 and 0.99 the two margins share a sign. The expected result is TRUE. Excel check
=AND((13*0.75-10)*(13*0.75^2-10*0.75)>0,(13*0.99-10)*(13*0.99^2-10*0.99)>0)Common error (Reward sized as if paid now): Offering the 0.991 penalty threshold as a reward paid with next month's health gain leaves today's choice unchanged, since 13.991 times 0.693 is about 9.70, still below 10; a reward paid then needs to exceed about 1.430 (computed here for illustration).
Source: Frederick S, Loewenstein G, O'Donoghue T. Time discounting and time preference: a critical review. Journal of Economic Literature. 2002;40(2) 351-401. Section 5.1, pages 366 to 368, on time-inconsistent preferences under non-exponential discounting, precommitment, and commitment devices for sophisticated and naive people. Attema AE, Brouwer WBF, Claxton K. Discounting in economic evaluations. PharmacoEconomics. 2018;36(7) 745-758. Section on discount models, on a preference between two programmes reversing within a year with nothing changed.
w_1 = beta * delta; w_2 = beta * delta^2; M_0 = b * w_1 - a; M_1 = b * w_2 - a * w_1; P = max(a - b * w_1, 0); R = max(a / w_1 - b, 0)
Try this function
Implementations
Excel
Preference reversal check from named weights and amounts
With the amounts in SoonerAmount and LaterAmount and the weights in Weight0, Weight1 and Weight2, the first two formulas return M_0 and M_1 and the third returns TRUE when the plan reverses, with the two margins in cells named WaitNow and WaitNext.
=LaterAmount*Weight1-SoonerAmount*Weight0; =LaterAmount*Weight2-SoonerAmount*Weight1; =AND(WaitNow<0,WaitNext>0)
Assumptions
All reversal-check weights from one function seen from today
The three weights come from the same discount function evaluated at the present, so M_1 is today's view of next period's choice. Next period the person re-evaluates with w_0 and w_1 again, which is where a naive plan unravels.
Reversal-check amounts in common units and fixed over time
The amounts a and b are in the same units and do not change between the two judgements, so any change in the ranking comes from the weights alone. Attema and colleagues give the example of preferring one programme now and the other a year later with nothing changed.
Worked examples
Article's quasi-hyperbolic smoker plans to quit next month
With weights 1, 0.693 and 0.68607 from beta = 0.7 and delta = 0.99, quitting loses by 0.991 today but wins by about 1.989 when judged for next month, the article's preference reversal (illustrative values).
a = 10; b = 13; w_0 = 1; w_1 = 0.693; w_2 = 0.68607; M_0 = -0.991; M_1 = 1.9889
Article's simple hyperbolic smoker plans to quit next month
With weights 1, 0.714286 and 0.555556 from alpha = 0.4, quitting loses by about 0.714 today and wins by about 0.079 for next month, as in the article's table (9.29 against 10, and 7.22 against 7.14).
a = 10; b = 13; w_0 = 1; w_1 = 0.714286; w_2 = 0.555556; M_0 = -0.7143; M_1 = 0.0794
Article's impatient exponential smoker never plans to quit
With weights 1, 0.75 and 0.5625 from delta = 0.75, waiting loses both today and for next month, so the steep constant discounter is impatient but consistent.
a = 10; b = 13; w_0 = 1; w_1 = 0.75; w_2 = 0.5625; M_0 = -0.25; M_1 = -0.1875
Common errors
Steep constant discounting mistaken for present bias
An impatient exponential discounter with delta = 0.75 has M_0 = minus 0.25 and M_1 = minus 0.1875, so the person never plans to wait. A reversal needs a rate that declines with delay, not a high rate, which is the article's second misreading.
Reversal taken as proof of hyperbolic preferences
A plan that unravels fits hyperbolic weights but does not establish them. Frederick and colleagues report Read's argument that rates falling with horizon could reflect subadditive discounting, and in their own review the link between horizon and discount factor disappears once studies with horizons of a year or less are excluded.
Sources
Time-inconsistent preferences under any non-exponential discount function
Frederick S, Loewenstein G, O'Donoghue T. Time discounting and time preference: a critical review. Journal of Economic Literature. 2002;40(2) 351-401. Section 5.1, page 366, which reports that Strotz recognised that any discount function other than exponential gives time-inconsistent preferences and describes the strategies of precommitment and consistent planning, and section 4.1, page 361, on subadditive discounting and the horizon correlation of almost exactly zero after excluding horizons of one year or less.
Preference between two programmes reversing over time under hyperbolic discounting
Attema AE, Brouwer WBF, Claxton K. Discounting in economic evaluations. PharmacoEconomics. 2018;36(7) 745-758. Section on discount models, which gives the example that under hyperbolic discounting one could prefer one programme over another now but the second over the first in one year, with the options unchanged and no new information.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0
