prodestWRDG_GMM {prodest} | R Documentation |
Estimate productivity - Wooldridge method
Description
The prodestWRDG_GMM()
function accepts at least 6 objects (id, time, output, free, state and proxy variables), and returns a prod
object of class S3
with three elements: (i) a list of model-related objects, (ii) a list with the data used in the estimation and estimated vectors of first-stage residuals, and (iii) a list with the estimated parameters and their bootstrapped standard errors.
Usage
prodestWRDG_GMM(Y, fX, sX, pX, idvar, timevar, cX = NULL, tol = 1e-100)
Arguments
Y |
the vector of value added log output. |
fX |
the vector/matrix/dataframe of log free variables. |
sX |
the vector/matrix/dataframe of log state variables. |
pX |
the vector/matrix/dataframe of log proxy variables. |
cX |
the vector/matrix/dataframe of control variables. By default |
idvar |
the vector/matrix/dataframe identifying individual panels. |
timevar |
the vector/matrix/dataframe identifying time. |
tol |
optimizer tolerance. By default |
Details
Consider a Cobb-Douglas production technology for firm i
at time t
-
y_{it} = \alpha + w_{it}\beta + k_{it}\gamma + \omega_{it} + \epsilon_{it}
where y_{it}
is the (log) output, w_it a 1xJ vector of (log) free variables, k_it is a 1xK vector of state variables and \epsilon_{it}
is a normally distributed idiosyncratic error term.
The unobserved technical efficiency parameter \omega_{it}
evolves according to a first-order Markov process:
-
\omega_{it} = E(\omega_{it} | \omega_{it-1}) + u_{it} = g(\omega_{it-1}) + u_{it}
and u_{it}
is a random shock component assumed to be uncorrelated with the technical efficiency, the state variables in k_{it}
and the lagged free variables w_{it-1}
.
Wooldridge method allows to jointly estimate OP/LP two stages jointly in a system of two equations. It relies on the following set of assumptions:
a)
\omega_{it} = g(x_{it} , p_{it})
: productivity is an unknown functiong(.)
of state and a proxy variables;b)
E(\omega_{it} | \omega_{it-1)}=f[\omega_{it-1}]
, productivity is an unknown functionf[.]
of lagged productivity,\omega_{it-1}
.
Under the above set of assumptions, It is possible to construct a system gmm using the vector of residuals from
-
r_{1it} = y_{it} - \alpha - w_{it}\beta - x_{it}\gamma - g(x_{it} , p_{it})
-
r_{2it} = y_{it} - \alpha - w_{it}\beta - x_{it}\gamma - f[g(x_{it-1} , p_{it-1})]
where the unknown function f(.)
is approximated by a n-th order polynomial and g(x_{it} , m_{it}) = \lambda_0 + c(x_{it} , m_{it})\lambda
. In particular, g(x_{it} , m_{it})
is a linear combination of functions in (x_{it} , m_{it})
and c_{it}
are the addends of this linear combination. The residuals r_{it}
are used to set the moment conditions
-
E(Z_{it}*r_{it}) =0
with the following set of instruments:
-
Z1_{it} = (1, w_{it}, x_{it}, c_{it})
-
Z2_{it} = (w_{it-1}, c_{it}, c_{it})
Value
The output of the function prodestWRDG
is a member of the S3
class prod. More precisely, is a list (of length 3) containing the following elements:
Model
, a list containing:
-
method:
a string describing the method ('WRDG'). -
elapsed.time:
time elapsed during the estimation. -
opt.outcome:
optimization outcome.
Data
, a list containing:
-
Y:
the vector of value added log output. -
free:
the vector/matrix/dataframe of log free variables. -
state:
the vector/matrix/dataframe of log state variables. -
proxy:
the vector/matrix/dataframe of log proxy variables. -
control:
the vector/matrix/dataframe of log control variables. -
idvar:
the vector/matrix/dataframe identifying individual panels. -
timevar:
the vector/matrix/dataframe identifying time.
Estimates
, a list containing:
-
pars:
the vector of estimated coefficients. -
std.errors:
the vector of bootstrapped standard errors.
Members of class prod
have an omega
method returning a numeric object with the estimated productivity - that is: \omega_{it} = y_{it} - (\alpha + w_{it}\beta + k_{it}\gamma)
.
FSres
method returns a numeric object with the residuals of the first stage regression, while summary
, show
and coef
methods are implemented and work as usual.
Author(s)
Gabriele Rovigatti
References
Wooldridge, J M (2009). "On estimating firm-level production functions using proxy variables to control for unobservables." Economics Letters, 104, 112-114.
Examples
data("chilean")
# we fit a model with two free (skilled and unskilled), one state (capital)
# and one proxy variable (electricity)
WRDG.GMM.fit <- prodestWRDG_GMM(chilean$Y, fX = cbind(chilean$fX1, chilean$fX2),
chilean$sX, chilean$pX, chilean$idvar, chilean$timevar)
# show results
WRDG.GMM.fit
# estimate a panel dataset - DGP1, various measurement errors - and run the estimation
sim <- panelSim()
WRDG.GMM.sim1 <- prodestWRDG_GMM(sim$Y, sim$fX, sim$sX, sim$pX1, sim$idvar, sim$timevar)
WRDG.GMM.sim2 <- prodestWRDG_GMM(sim$Y, sim$fX, sim$sX, sim$pX2, sim$idvar, sim$timevar)
WRDG.GMM.sim3 <- prodestWRDG_GMM(sim$Y, sim$fX, sim$sX, sim$pX3, sim$idvar, sim$timevar)
WRDG.GMM.sim4 <- prodestWRDG_GMM(sim$Y, sim$fX, sim$sX, sim$pX4, sim$idvar, sim$timevar)
# show results in .tex tabular format
printProd(list(WRDG.GMM.sim1, WRDG.GMM.sim2, WRDG.GMM.sim3, WRDG.GMM.sim4),
parnames = c('Free','State'))