* Average Partial Effects (APEs)
* Stata Simulation to generate a binary response variables
* We want to estimate the average partial effect.
* Of the explanatory variable. This often a more useful
* estimate than the coefficients from the probit.
* Set up the simulation
set seed 101
clear
set obs 10000
* Generate two explanatory variables
gen subsidy = rbinomial(1,.5)
label define subsidy 0 "No Subsidy" 1 "Subsidy"
label values subsidy subsidy
gen road_access = rbinomial(1,.3)
label define road_access 0 "No Road Access" 1 "Road Access"
label values road_access road_access
* Generate the error terms
gen u=rnormal()*5
* Generate the linear form that will be normally transformed
gen XB_u= 2*subsidy + road_access + u
sum XB_u
gen XB_u_norm = (XB_u-r(mean))/r(sd)
gen double Py=normal(XB_u_norm)
label var Py "True probability of market sale"
gen y=rbinomial(1,Py)
* We have to first calculate the true average partial effect.
* Since it is not possible to specify it ex ante directly through
* the simulation proceedure.
* Generate y with subsidy = 0
gen XB_X10_u= 2*0 + road_access + u
* Calculate the probability of 1 with subsidy == 0
sum XB_u
gen XB_subsidy0_u_norm = (XB_X10_u-r(mean))/r(sd)
* Calculate the average partial effect of subsidy
gen double Py_subsidy0=normal(XB_subsidy0_u_norm)
* Generate partial effect.
gen double pe_subsidy0=(Py-Py_subsidy0)/subsidy
* Generate y with road_access size = 0
gen XB_RA0_u= 2*subsidy +1*0 + u
sum XB_u
gen XB_RA0_u_norm = (XB_RA0_u-r(mean))/r(sd)
* Calculate the average partial effect of subsidy
gen double Py_RA0=normal(XB_RA0_u_norm)
* Calculate the average partial effect
* road_access size.
gen double pe_RA=(Py-Py_RA0)/road_access
sum pe*
************************************************************************
* Simulation END
probit y subsidy road_access
margins, dydx(*)
* This command finds the average partial effect of the explanatory variable on the
* the probability observing a 1 in the dependent variable. This is basically taking
* the partial effects estimated by the probit for each observation then taking the
* average across all observations.
* This is extremely useful because the direct results of the probit estimations
* can not be directly interpreted as partial effects without a transformation.
reg y subsidy road_access
* Interestingly, the OLS model ignoring the binary nature of the response variable
* yields results that are very similar to the post estimation partial effects estimates.
predict u_hat, residual
graph box u_hat, over(subsidy) over(road_access) ///
title(Residuals by Road access and Subsidy) legend(on)
* We can see that the errors are heteroskedastic in the explanatory variables.
* We we use heteroskedastically robust standard errors since by necessity
* the errors are heteroskedastic.
reg y subsidy road_access, robust
sum pe*
* We can see the results of the previous estimations are pretty good at estimating
* the true partial effects.
No comments:
Post a Comment