In my previous post, I showed how to analyze contingent valuation (CV) data using the linear probability model. In this post I will illustrate how to analyze the same CV data using alternative models: the probit and logit models.
In probit and logit models, the probability of observing a “sucessful” outcome follows a given distribution. In the case of the probit, it follows the cumulative standard normal distribution and in the case of logit it is the logistic distribution.
Perhaps the most well-known advantage of probit or logit models is that the predictions of the probability of success are bounded by 0 and 1. On the other hand, the linear probability model can predict probabilities lower than 0 or higher than 1.
I will illustrate this by borrowing from last post’s example. The first linear probability model that I got was the following:
> summary(OLS_A) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.792944 0.046148 17.183 <2e-16 *** log_bid -0.084939 0.009567 -8.879 <2e-16 ***
If for example the respondent was faced with a bid vector of five cents (in US dollars), the probability that (s)he would be willing to pay that amount to avoid the oil spill would be 104.74%.
> OLS_A$coefficients+OLS_A$coefficients*log(0.05) 1.047399
As we know from probabilities, these cannot exceed 100%.
Likewise, if the respondent faced a bid of 100,000 US dollars, the expected probability that he would be willing to pay is -18.50%.
> OLS_A$coefficients+OLS_A$coefficients*log(100000) -0.1849548
Yet negative probabilities do not make sense.
This is one of the main arguments against the linear probability model and in favor of probit and logit models instead.
I will be illustrating how to use the probit and logit models and then estimate the willingness-to-pay (WTP) given the coefficient estimates. I am using the same data as in my previous post. This data is from a CV study in the aftermath of the Deepwater Horizon oil spill.
Similarly to the previous post, the dependent variable Vote takes the value 1 for yes, or 0 for no, hence it is binary. I expect the propensity to say yes to decrease with the bid amount (or payment) that was presented to the respondent (bidvalue) and increases if the damage variable, which is also binary, takes the value 1, hence it is a larger set of damages than damages=0.
To run a probit model, I use the glm function in R. I specify that I want the probit model in the family= option.
PROBIT <- glm(Vote ~ bidvalue + damages, data=DATA, family=binomial(link="probit")) summary(PROBIT)
The summary function displays the following results:
Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.0291990 0.0390835 0.747 0.45501 bidvalue -0.0016771 0.0001446 -11.594 < 2e-16 *** damages 0.1151763 0.0425382 2.708 0.00678 **
As expected, the probability of saying yes decreases with the size of the bid, since the coefficient associated with bidvalue is negative. Moreover, it is also true that the probability of saying yes increases if the respondent is faced with larger damages from an oil spill, because the coefficient associated with damages is positive.
However, the estimated coefficients can no longer be interpreted as in the OLS model, where a change in the bid value would lead to a change in the probability of saying yes. I can check the sign of the coefficient to identify a positive or negative effect though.
To look into marginal effects, I can use the predict function. For example, I want to understand what is the difference in the probability of saying yes between the smaller set of damages from an oil spill and the large one. Essentially, when damages changes from 0 to 1, how much does the probability of voting yes change? Let’s assume the respondent was facing a bid of 20 US dollars in both cases.
predict(PROBIT, data.frame("bidvalue" = c(20, 20), "damages" = c(0, 1)), type = "response")
This command gives me two probabilities: 0.4982676 for the case of damages=0 and 0.5441260 when damages =1. Thus, for a bidvalue=20, the probability of saying yes increases by almost 5% when the damage size increases.
The logit model is estimated almost identically.
LOGIT <- glm(Vote ~ bidvalue + damages, data=DATA, family=binomial(link="logit")) summary(LOGIT)
And the output is as follows:
Estimate Std. Error z value Pr(>|z|) (Intercept) 0.0503551 0.0628591 0.801 0.42309 bidvalue -0.0027318 0.0002384 -11.460 < 2e-16 *** damages 0.1857294 0.0688349 2.698 0.00697 **
Again, the probability of voting yes decreases with the bid value and increases when the set of damages increases. Like the logit model, the estimated coefficients cannot be directly interpreted, besides the interpretation of the sign of the coefficient. So again, I am using the predict function to analyze marginal changes:
> predict(LOGIT, data.frame("bidvalue" = c(20, 20), "damages" = c(0, 1)), + type = "response") 1 2 0.4989300 0.5452383
The estimated probabilities are almost identical to the ones when using the probit model.
Only one question remains: how to obtain the WTP from the coefficients estimated? The WTP equation is as follows:
And using the coefficients we estimated:
> -(PROBIT$coefficients+PROBIT$coefficients*0)/PROBIT$coefficients 17.41069 > -(PROBIT$coefficients+PROBIT$coefficients*1)/PROBIT$coefficients 86.08761
Hence, the WTP to avoid a “small” oil spill is 17.41 US dollars per person, and to avoid a larger oil spill is 86.09 US dollars per person.
As for the logit model, the WTP are virtually the same.
> -(LOGIT$coefficients+LOGIT$coefficients*0)/LOGIT$coefficients 18.43322 > -(LOGIT$coefficients+LOGIT$coefficients*1)/LOGIT$coefficients 86.42225
These are the basics to analyze CV data using a parametric approach (i.e. assuming a distribution to some variable). In a future post I will summarize how to estimate WTP and analyze CV data using non-parametric approaches.