Estimating non-parametric WTP from Double-bounded dichotomous choice questions: insights into bid design

There are many ways to ask questions with the goal of estimating willingness to pay (WTP) for a good or service. I have talked about single-bounded dichotomous choice questions. An alternative is to ask a double-bounded dichotomous choice question. This type of question presents a first yes-or-no choice, and then follows-up with an additional yes-or-no question with a different bid amount. If the respondent was willing to pay in the first question, then a higher amount will be presented in the second question. If (s)he was not willing to pay, then a lower amount will be presented in the second question.

Upon the time of its introduction by Hanemann et al. (1991), this double-dounded dichotomous choice question was argued to improve estimation efficiency over the single-bounded dichotomous choice question. From one respondent, one could extract additional information to increase WTP’s efficiency. However, double-bounded dichotomous choice questions are more prone to anchoring, wherein the answer in the follow-up question may depend on the bid amount in the first question. There are concerns that this double-bounded question is not incentive compatible (Johnston et al., 2017).

Nonetheless, the number of studies using the double-bounded dichotomous choice question has been rather stable in the past decade. In google scholar, the number of publications that mention this type of question are 148 in 2010, 180 in 2011, 185 in 2012, 216 in 2013, 219 in 2014, 239 in 2015, 236 in 2016, 291 in 2017, 275 in 2018, 237 in 2019, 251 in 2020, 193 in 2021 and 52 in 2022 (so far).

Our upcoming contingent valuation study uses a double-bounded dichotomous choice question with the intent of improving efficiency. In this blog post, I will use our pilot data to illustrate how to obtain non-parametric WTP estimates from this type of question.

We asked a first dichotomous choice question with 4 bids: 5, 10, 20 and 50 euros. The follow-up question has the same bid amounts, but also 2 euros for the respondents who said no to paying 5 euros, and 100 euros to the respondents who said yes to 50 euros. Overall, the bid amounts range from 2 to 100 euros. The first bid variable is called bid and the second is bid2. The first response is R1 and the second is R2. This is how the first responses look like:

> head(data[,138:141])
   bid bid2 R1 R2
28   5   10  1  1
29  50  100  1  0
31  50  100  1  0
32  10   20  1  0
34  20   10  0  1
36  20   50  1  1

So, person 28 was presented with a bid of 5 euros, to which they said yes. They then got a second scenario where they were asked to pay 10 euros, and they said yes to be willing to pay 10 euros.

I want to estimate non-parametric WTP using the DCchoice package. The functions to do so are and turnbull.db. I will start by analyzing the first yes or no response and estimating WTP from that response alone:

> summary( ~ bid, data = data))
Survival probability: 
   Upper   Prob.
1      0  1.0000
2      5  0.8750
3     10  0.8750
4     20  0.4444
5     50  0.4444
6    Inf  0.0000

WTP estimates:
 Mean: 26.527779  (Kaplan-Meier)
 Mean: 28.993056  (Spearman-Karber)
 Median in: [      10 ,      20 ] 

The estimated WTP is 26.5 – 29 EUR per person. The probability of responding yes decreases with the bid amount being asked, which is what the turnbull estimator does.

I now use the two dichotomous choice questions to estimate WTP:

> turnbull.db(R1 + R2 ~ bid + bid2, data = data)

Probability: 0.104813 0.209626 0.173530 0.256016 0.256016 
> summary(turnbull.db(R1 + R2 ~ bid + bid2, data = data))
Error in if ([i] != ip[i]) { : 
  missing value where TRUE/FALSE needed

The function turnbull.db reports the probability of saying yes for 5 bid amounts. However, we have in fact six bids: 2, 5, 10, 20, 50 and 100. With 6 bids and five probabilities, the code is probably missing one probability for one of the bid amounts, hence getting the error message: “missing value where TRUE/FALSE needed“.

To investigate why this error pops up, I simulated some data using our question design. The bid amounts are the same, but in a simulation I can simulate the individual’s true WTP and simulate their yes or no response given the bid that is presented to them. For now, let us say that the underlying WTP has a mean of 10 euros with a standard deviation of 30. The number of observations is twenty (mimicking the number of observations in the pilot data). I simulate the data using the code below:

obs <- 20
sim <- data.frame(1:obs)
sim$bid1 <- sample(c(5,10,20,50), obs, replace=TRUE)
sim$wtp <- rnorm(obs,10,30)
sim$R1 <- ifelse(sim$bid1<sim$wtp, 1, 0)
sim$bid2[sim$bid1==5&sim$R1==0] <- 2
sim$bid2[sim$bid1==10&sim$R1==0] <- 5
sim$bid2[sim$bid1==20&sim$R1==0] <- 10
sim$bid2[sim$bid1==50&sim$R1==0] <- 20
sim$bid2[sim$bid1==5&sim$R1==1] <- 10
sim$bid2[sim$bid1==10&sim$R1==1] <- 20
sim$bid2[sim$bid1==20&sim$R1==1] <- 50
sim$bid2[sim$bid1==50&sim$R1==1] <- 100
sim$R2 <- ifelse(sim$bid2<sim$wtp, 1, 0)

When I try to estimate the non-parametric WTP, I get the same error message:

> summary(turnbull.db(R1 + R2 ~ bid1 + bid2, data = sim))
Error in if ([i] != ip[i]) { : 
  missing value where TRUE/FALSE needed

If I increase the number of observations and the WTP’s standard deviation, the code (sometimes) runs:

> summary(turnbull.db(R1 + R2 ~ bid1 + bid2, data = sim))
Survival probability: 
   Upper    Prob.
1      0  1.00000
2      2  0.51959
3      5  0.51959
4     10  0.50180
5     20  0.45207
6     50  0.29062
7    100  0.05284
8    Inf  0.00000

WTP estimates:
 Mean: 20.988189  (Kaplan-Meier)
 Mean: 30.127983  (Spearman-Karber)
 Median in: [      10 ,      20 ] 

This gives me some confidence that the problem is not the bid design, but that it can be solved if we get some responses to the survey. The problem however may still be the bid design: if the underlying WTP has a low standard deviation, then I might never be able to estimate WTP using this double-bound dichotomous choice question. Instead, I should go for a bid vector containing values that are closer to the underlying WTP to improve precision of the WTP estimate (for example, 5, 8,12, 15, and 20).

Ideally, prior to running the study, one should have access to pilot data or some idea of the value of the mean WTP (sometimes from prior studies). From gathering this data, we can learn whether our bid values are appropriate and redefine them when collecting data from a representative sample next time.


Hanemann W. Michael, John Loomis, and Barbara Kanninen. (1991). Statistical efficiency of double-bounded dichotomous choice contingent valuation. American Journal of Agricultural Economics 73:1255–63.

Johnston, R. J., Boyle, K. J., Adamowicz, W., Bennett, J., Brouwer, R., Cameron, T. A., … & Vossler, C. A. (2017). Contemporary guidance for stated preference studies. Journal of the Association of Environmental and Resource Economists4(2), 319-405.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s