sbchoice {DCchoice} | R Documentation |
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
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, ...)
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 functionglm()
with the argument
family = binomial(link = "logit")
or
family = binomial(link = "probit")
.
Whendist = "weibull"
, optimization is carried out using theoptim()
function with a hard-coded log-likelihood function.Outputs from
sbchoice()
are slightly different from those fromdbchoice()
because the analysis insbchoice()
internally depends on the functionglm()
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, 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.
See Also
summary.sbchoice
,
krCI
, bootCI
,
NaturalPark
,
turnbull.sb
, kristrom
glm
, formula
dbchoice
Examples
## 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)))