# Parametric approach to analyze single-bounded dichotomous choice contingent valuation data

### Description

This function analyzes single-bounded dichotomous choice contingent valuation (CV) data on the basis of the utility difference approach.

### Usage

1 2 3 4 5 6 7 8 9 10 11 |

### Arguments

`formula` |
an S3 class object |

`data` |
a data frame containing the variables in the model formula. |

`subset` |
an optional vector specifying a subset of observations. |

`na.action` |
a function which indicates what should happen when the data contains |

`dist` |
a character string setting the error distribution in the model, which takes one
of |

`x` |
an object of class |

`digits` |
a number of digits to display. |

`object` |
an object of class |

`...` |
optional arguments. Currently not in use. |

### Details

The function `sbchoice()`

implements an analysis of single-bounded dichotomous choice
contingent valuation (CV) data on the basis of the utility difference approach
(Hanemann, 1984).

The extractor function `summary()`

is available for a `"sbchoice"`

class object.
See

`summary.sbchoice`

for details.

There are two functions available for computing the confidence intervals for the estimates of WTPs.
`krCI`

implements simulations to construct empirical distributions of the WTP while
`bootCI`

carries out nonparametric bootstrapping.

Most of the details of `sbchoice()`

is the same as those of `dbchoice()`

, a double-bounded
analogue of `sbchoice`

. See the section **Details** in `dbchoice`

. Differences between
the two functions are as follows:

In the model formula, the first part contains only one response variable (e.g.,

`R1`

) and the third part contains only one bid variable (e.g.,`BD1`

) because respondents are requested to answer a CV question in the single-bounded dichotomous choice CV. The following is a typical structure of the formula:

`R1 ~ (the names of the covariates) | BD1`

The function

`sbchoice()`

analyzes the responses to single-bounded dichotomous choice CV questions internally using the function`glm()`

with the argument

`family = binomial(link = "logit")`

or

`family = binomial(link = "probit")`

.

When`dist = "weibull"`

, optimization is carried out using the`optim()`

function with a hard-coded log-likelihood function.Outputs from

`sbchoice()`

are slightly different from those from`dbchoice()`

because the analysis in`sbchoice()`

internally depends on the function`glm()`

for the (log-) normal or (log-) logistic distributions. (see the**Value**section).

Nonparametric analysis of single-bounded dichotomous choice data can be done by `turnbull.sb`

or by `kristrom`

.

### Value

This function returns an object of S3 class `"sbchoice"`

that is a list with the following components.

`coefficients` |
a named vector of estimated coefficients. |

`call` |
the matched call. |

`formula` |
the formula supplied. |

`glm.out` |
a list of components returned from |

`glm.null` |
a list of components returned from |

`distribution` |
a character string showing the error distribution used. |

`nobs` |
a number of observations. |

`covariates` |
a named matrix of the covariates used in the model. |

`bid` |
a named matrix of the bids used in the model. |

`yn` |
a named matrix of the responses to the CV question used in the model. |

`data.name` |
the data matrix. |

`terms` |
terms |

`contrast` |
contrasts used for factors |

`xlevels` |
levels used for factors |

### References

Bateman IJ, Carson RT, Day B, Hanemann M, Hanley N, Hett T, Jones-Lee M, Loomes
G, Mourato S, \"Ozdemiro\=glu E, Pearce DW, Sugden R, Swanson J (eds.) (2002).
*Economic Valuation with Stated Preference Techniques: A Manual.*
Edward Elger, Cheltenham, UK.

Boyle KJ, Welsh MP, Bishop RC (1988).
“Validation of Empirical Measures of Welfare Change: Comment.”
*Land Economics*, **64**(1), 94–98.

Carson RT, Hanemann WM (2005).
“Contingent Valuation.”
in KG M\"aler, JR Vincent (eds.), *Handbook of Environmental Economics*.
Elsevier, New York.

Croissant Y (2011).
*Ecdat: Data Sets for Econometrics,*
**R** package version 0.1-6.1,
http://CRAN.R-project.org/package=Ecdat.

Hanemann, WM (1984).
“Welfare Evaluations in Contingent Valuation Experiments with Discrete Responses”,
*American Journal of Agricultural Economics*,
**66**(2), 332–341.

Hanemann M, Kanninen B (1999).
“The Statistical Analysis of Discrete-Response CV Data.”,
in IJ Bateman, KG Willis (eds.),
*Valuing Environmental Preferences: Theory and Practice of the Contingent
Valuation Methods in the US, EU, and Developing Countries*,
302–441.
Oxford University Press, New York.

### See Also

`summary.sbchoice`

,
`krCI`

, `bootCI`

,
`NaturalPark`

,
`turnbull.sb`

, `kristrom`

`glm`

, `formula`

`dbchoice`

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | ```
## Examples for sbchoice() are also based on a data set NaturalPark
## in the package Ecdat (Croissant 2011): so see the section Examples
## in the dbchoice() for details.
data(NaturalPark, package = "Ecdat")
## The variable answers are converted into a format that is suitable for
## the function sbchoice() as follows:
NaturalPark$R1 <- ifelse(substr(NaturalPark$answers, 1, 1) == "y", 1, 0)
NaturalPark$R2 <- ifelse(substr(NaturalPark$answers, 2, 2) == "y", 1, 0)
## We assume that the error distribution in the model is a log-logistic;
## therefore, the bid variables bid1 is converted into LBD1 as follows:
NaturalPark$LBD1 <- log(NaturalPark$bid1)
## The utility difference function is assumed to contain covariates
## (sex, age, and income) as well as the bid variable (LBD1) as follows
## (R2 is not used because of single-bounded dichotomous choice CV format):
fmsb <- R1 ~ sex + age + income | LBD1
## Not run:
## The formula may be alternatively defined as
fmsb <- R1 ~ sex + age + income | log(bid1)
## End(Not run)
## The function sbchoice() with the function fmsb and the data frame NP
## is executed as follows:
NPsb <- sbchoice(fmsb, data = NaturalPark)
NPsb
NPsbs <- summary(NPsb)
NPsbs
## Not run:
## Generic functions such as summary() and coefficients() work for glm.out
summary(NPsb$glm.out)
coefficients(NPsb$glm.out)
## The confidence intervals for these WTPs are calculated using the
## function krCI() or bootCI() as follows:
krCI(NPsb)
bootCI(NPsb)
## The WTP of a female with age = 5 and income = 3 is calculated
## using function krCI() or bootCI() as follows:
krCI(NPsb, individual = data.frame(sex = "female", age = 5, income = 3))
bootCI(NPsb, individual = data.frame(sex = "female", age = 5, income = 3))
## End(Not run)
## The variable age and income are deleted from the fitted model,
## and the updated model is fitted as follows:
update(NPsb, .~. - age - income |.)
## Respondents' utility and probability of choosing Yes under
## the fitted model and original data are predicted as follows:
head(predict(NPsb, type = "utility"))
head(predict(NPsb, type = "probability"))
## Utility and probability of choosing Yes for a female with age = 5
## and income = 3 under bid = 10 are predicted as follows:
predict(NPsb, type = "utility",
newdata = data.frame(sex = "female", age = 5, income = 3, LBD1 = log(10)))
predict(NPsb, type = "probability",
newdata = data.frame(sex = "female", age = 5, income = 3, LBD1 = log(10)))
## Plot of probabilities of choosing yes is drawn as drawn as follows:
plot(NPsb)
## The range of bid can be limited (e.g., [log(10), log(20)]):
plot(NPsb, bid = c(log(10), log(20)))
``` |

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker. Vote for new features on Trello.