gnrprod

gnrprod implements the nonparametric identification of gross output production functions outlined in Gandhi, Navarro, and Rivers (2020). The main wrapper function gnrprod estimates the parameters of production functions and productivity. The current version of gnrprod supports only one flexible input.

Installation

To install the latest development version of from Github, run the following from R:

install.packages("devtools")
library(devtools)
devtools::install_github("davidjin0/gnrprod")
library(gnrprod)

Usage

This package features three main functions: gnrprod, gnrflex, and gnriv. gnrprod performs the entire production function estimation routine. gnrflex performs the first stage of the estimation routine which returns the flexible input elasticity. gnriv performs the second stage of the estimation routine which returns the fixed input elasticities and productivity.

An example of the use of gnrprod:

require(gnrprod)
#> Loading required package: gnrprod

# load Colombian plant-level data
data <- colombian

# estimate production function parameters and productivity
gnr_fit <- gnrprod(output = "RGO", fixed = c("L", "K"), flex = "RI",
                   share = "share", id = "id", time = "year", data = data)

# print results
gnr_fit
#> Gross Output Function:
#>   output:  "RGO" 
#>   fixed inputs:  c("L", "K") 
#>   flexible inputs:  "RI" 
#>   data: data
#> 
#> Estimates:
#>      L      K     RI 
#> 0.2332 0.1124 0.6793
summary(gnr_fit)
#> Gross Output Function:
#>   output: "RGO"
#>   fixed inputs:  c("L", "K") 
#>   flexible inputs: "RI"
#>   data: data
#> 
#> Total Productivity:
#>     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
#>   0.1416  12.5365  14.1472  14.8638  16.0179 539.9703 
#> 
#> Estimates:
#>    Estimate
#> L     0.233
#> K     0.112
#> RI    0.679
#> 
#> First-Stage Convergence: TRUE with 22 iterations. Sum of Squared Residuals: 315.1547 
#> Second-Stage Convergence: TRUE with 75 iterations. Value: 0.002222362

Alternatively, one can use gnrflex and gnriv:

# estimate flexible input elasticities (first stage)
gnr_fs <- gnrflex(output = "RGO", fixed = c("L", "K"), flex = "RI",
                  share = "share", id = "id", time = "year", data = data)

# print estimate
gnr_fs
#> Flexible Input Elasticity:
#>     RI 
#> 0.6793 
#> 
#> First-Stage Sum of Squared Residuals: 315.1547
#> Convergence: TRUE

# estimate fixed input elasticities and productivity (second stage)
gnr_ss <- gnriv(object = gnr_fs)

# print estimates
gnr_ss
#> Fixed Input Elasticity:
#>      L      K 
#> 0.2332 0.1124 
#> 
#> Total Productivity:
#>   productivity     
#>  Min.   :  0.1416  
#>  1st Qu.: 12.5365  
#>  Median : 14.1472  
#>  Mean   : 14.8638  
#>  3rd Qu.: 16.0179  
#>  Max.   :539.9703  
#> 
#> Second-Stage Objective Function Value: 0.002222362
#> Convergence:  TRUE

References

Gandhi, Amit, Salvador Navarro, and David Rivers. 2020. “On the Identification of Gross Output Production Functions.” Journal of Political Economy, 128(8): 2973-3016. https://doi.org/10.1086/707736.