Parametric approach to analyze single-bounded dichotomous choice contingent valuation data
This function analyzes single-bounded dichotomous choice contingent valuation (CV) data on the basis of the utility difference approach.
sbchoice(formula, data, subset, na.action = na.omit, dist = "log-logistic", ...) ## S3 method for class 'sbchoice' print(x, digits = max(3, getOption("digits") - 1), ...) ## S3 method for class 'sbchoice' vcov(object, ...) ## S3 method for class 'sbchoice' logLik(object, ...)
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. |
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.
Seesummary.sbchoice
for details.
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")
orfamily = 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
.
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 |
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, https://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.
## 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)))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.