chks

chks: A Stata Command for Frontier Models

chks is a user-written Stata command designed to estimate Nonlinear Index Models and Zero Stochastic Frontier (ZSF) Models.

Development Status & Disclaimer

Please note: This command was developed in 2018 as part of my doctoral studies. It is provided “as-is” and is no longer under active development. While the code has not been updated since its initial release, it may still be useful for estimating basic models.

Getting Started

  1. Install. You can choose from one of the following two methods to install:

    • From the Stata command window:

      net install chks, from(https://luischanci.github.io/chks/) replace

    • Manual installation: Download, unzip, and locate all the files into the Stata ado folder (for instance, locate the unzipped ado and other files into C:\ado\personal\c\).

  2. Syntaxis.

    The general syntaxis is,

    chks depvariable xregressors, indx(indexvariables) type() estimation() eoption() maxitera() nonconstant robust

    where,

    • indx(). varlist for the index. indx() could be empty, which means that the model is linear rather than a nonlinear index.

    • type(). Functional form for the nonlinear index. There are two types: CES type(ces) and Cobb-Douglas type(cd).

    • estimation(). Estimation method: NLS estimation(nls), Stochastic Frontier estimation(sf), or Zero-Stochastic Frontier estimation(zsf).

    • eoption(): is the estimation option when estimation is ZSF. It could be Maximum Likelihood Estimation eoption(ml) or Expectation-Maximization Algorithm eoption(em). EM is the default option.

    • maxitera() specifies the maximum number of iterations; the default is 500.

\[\,\]

Model Specification

The general model is like,

\[ log(\eta)_i=x_i\beta'+\epsilon_i \]

where, \(\eta\) is a nonlinear index and \(x_{i}\) is a vector of explanatory variables.

To ilustrate, \(\eta\) in a CES specifiction would be like,

\[ \eta=\left(\sum_{m=1}^M{\delta_mY_m^\rho}\right)^{1/\rho} \]

thus, the model to estimate becomes,

\[ log(Y_1)_i=-(1/\rho)*log\left(1+\sum_r^{M-1}{\delta_r (C_r^{\rho}-1)}\right)+x_i\beta'+\epsilon_i \]

with, \(C_r=(Y_r/Y_1)\), and \(r\neq1\).

\[\,\]

Using the code.

  • Estimation NLS. Let’s say that \(M=3\) and there are \(k\) regressors,

    chks Y1 x1 x2 ... xk, indx(Y2 Y3) t(ces) es(nls)

    Notes: If indx() is nonempty, variables Y1,...,Ym should be in levels.

  • On the other hand, if the residual is such that \(\epsilon_i=v_i-u_i\) with, \(v_i\sim\mathcal{N}(0,\sigma^2_v)\) and \(u_i\sim\mathcal{N}^+(0,\sigma^2_u)\), which is bascally a Nonlinear Stochastic Frontier Model, the command for estimation would be:

    chks Y1 x1 x2 ... xk, indx(Y2 Y3) t(ces) es(sf)

  • Furthermore, if there is a probability that some \(u_i=0\), known as Zero-Inefficiency Stochastic Frontier model (see Kumbhakar, Parmeter and Tsionas, 2013, “A zero inefficiency stochastic frontier model”, in Journal of Econometrics , 172(1), 66-76), the command would be:

    chks Y1 x1 x2 ...xk, indx(Y2 Y3) t(ces) es(zsf)

    In this case there are two additional options for the estimation method: Maximum Likelihood Extimation (add eo(ml)) or Expectation-Maximization Algorithm (add eo(em)).

Final comments. Other specifications are: a Cobb-Douglas index or linear functions. For instance, a version of a linear Zero-Inefficiency Stochastic Frontier model would be:

\[y_i=x_i\beta'+\epsilon_i\]

with \(\epsilon_i=v_i-u_i\), and \(v_i\sim\mathcal{N}(0,\sigma^2_v)\) and \(u_i\sim\mathcal{N}^+(0,\sigma^2_u)\). In this case, the command would be:

chks y1 x1 x2, es(zsf)

Finally, it is possible to report the robust standard errors (add robust) or omit the constant term (add nocons).

\[\,\]

Examples.

  • Example 1: A Linear Z-SF.

    Data (simulation). To illustrate the use of the command, I am going to use a simulation proposed by Diego Restrepo (of course, any mistake would be my responsability). The code for a cost function would be,

    clear all
    set obs 1000
    gen x = rnormal()/10
    gen v = rnormal()/10
    gen z = rnormal()
    gentrun double u, left(0)     /* Need module GENTRUN */
    replace u = u/10              /* u ~ Truncated-left N(0,0.1)*/
    replace u = 0 if _n > _N-_N/2 /* For a  p=50%, u=0, no inefficiency*/
    gen       e = v - u           /* For production function (not cost)*/
    gen       y = 1 + x + e

    Command: chks y x, es(zsf) for EM-algorithm and chks y x, es(zsf) eo(ml) for MLE.

    Results using MLE:

    . chks y x, es(zsf) eo(ml)
    Zero Stochastic Frontier for linear models
    (ZSF, linear model)
    .
    .
    .
    Iteration 12:  f(p) =  715.46477
    Iteration 13:  f(p) =  715.46477
     (Zero) Stochastic Frontier, linear model. M.L.E.
    -----------------------------------------------------------------------------------
                    y |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
    ------------------+----------------------------------------------------------------
                    x |   1.020781   .0376483    27.11   0.000     .9469912     1.09457
                _cons |   .9688054   .0050194   193.01   0.000     .9589675    .9786434
            lnsigma_u |  -1.677142   .3815109    -4.40   0.000    -2.424889   -.9293944
            lnsigma_v |  -2.170457   .0289882   -74.87   0.000    -2.227272   -2.113641
    logist_probabil~y |   3.404257   1.090584     3.12   0.002     1.266751    5.541763
    -----------------------------------------------------------------------------------

    Results using EM-algorithm:

    . chks y x, es(zsf)
    Zero Stochastic Frontier for linear models
    (ZSF, linear model)
    .
    .
    .
    (Zero) Stochastic Frontier, linear model. EM-Algorithm.
    -----------------------------------------------------------------------------------
                    y |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
    ------------------+----------------------------------------------------------------
                    x |   1.021142   .0367627    27.78   0.000     .9490882    1.093195
                _cons |   .9699379   .0036587   265.10   0.000     .9627669    .9771089
            lnsigma_u |  -1.775768   .1535916   -11.56   0.000    -2.076802   -1.474734
            lnsigma_v |  -2.175327   .0227074   -95.80   0.000    -2.219833   -2.130821
    logist_probabil~y |    3.07854   .1541839    19.97   0.000     2.776345    3.380734
    -----------------------------------------------------------------------------------

\[\,\]

  • Example 2: Nonlinear index.

    Estimation using NLS

    ```
    use https://luischanci.github.io/chks/chksdata1, clear
    chks Y1 x1 x2, indx(Y2 Y3) es(nls) t(ces) r
    
    Iteration 16:  f(p) =  12.058803
      -----------------------------------------------------------------------------------
                    Y1 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
      -----------+-----------------------------------------------------------------------
                    x1 |   .0158278   .0006196    25.54   0.000     .0146134    .0170422
                    x2 |   .0401204   .0008423    47.63   0.000     .0384695    .0417712
                  _cons|   2.894777   .0180462   160.41   0.000     2.859407    2.930146
                    Y2 |    .225702    .012979    17.39   0.000     .2002636    .2511403
                    Y3 |   .5136438   .0136537    37.62   0.000     .4868831    .5404046
                   rho |   2.301384   .1146792    20.07   0.000     2.076617    2.526151
      -----------------------------------------------------------------------------------
    ```

    In this particular example, in which there is a nonlinear function without additional especifications in the residual term, a similar result could be obtained by using NLS in Stata:

    ```
    g  ly1 = ln(Y1)
    g  ry2 = Y2/Y1
    g  ry3 = Y3/Y1
    
        nl (ly1 = -(1/{rho = 0.5})*ln( 1 +                    ///
                            {delta2 = 0.3}*(ry2^{rho}-1) +  ///
                            {delta3 = 0.3}*(ry3^{rho}-1) )  ///
                            + ({b0}+{b1}*x1+{b2}*x2) ), r
    
    Iteration 6:  residual SS =   12.0588
    Iteration 7:  residual SS =   12.0588
    
    
    Nonlinear regression                                Number of obs =      1,000
                                                        R-squared     =     0.9839
                                                        Adj R-squared =     0.9838
                                                        Root MSE      =   .1101435
                                                        Res. dev.     =  -1580.083
    
      -----------------------------------------------------------------------------------
                       |               Robust
                   ly1 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
      -----------------------------------------------------------------------------------
                  /rho |   2.301383   .1085109    21.21   0.000     2.088447     2.51432
               /delta2 |    .225702   .0124839    18.08   0.000     .2012041    .2501999
               /delta3 |   .5136438   .0134125    38.30   0.000     .4873237    .5399639
                   /b0 |   2.894777   .0180631   160.26   0.000      2.85933    2.930223
                   /b1 |   .0158278   .0006212    25.48   0.000     .0146087    .0170469
                   /b2 |   .0401204   .0008432    47.58   0.000     .0384657     .041775
      -----------------------------------------------------------------------------------
    Parameter b0 taken as constant term in model
    ```
  • Example 3: Non-linear (Index) Stochastic Frontier.

      chks Y1 x1 x2, indx(Y2 Y3) es(sf) t(ces) r
    Iteration 34:  f(p) =  793.27611
        -----------------------------------------------------------------------------------
                    Y1 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
        -----------------------------------------------------------------------------------
                    x1 |   .0155817   .0006264    24.87   0.000      .014354    .0168095
                    x2 |   .0392952   .0009681    40.59   0.000     .0373978    .0411925
                 _cons |   2.993987   .0264685   113.11   0.000      2.94211    3.045865
                    Y2 |   .2249359   .0125398    17.94   0.000     .2003583    .2495134
                    Y3 |   .5125146   .0132849    38.58   0.000     .4864766    .5385526
                    rho|   2.296911   .1106526    20.76   0.000     2.080036    2.513786
             lnsigma_u |  -2.206232   .1435049   -15.37   0.000    -2.487496   -1.924967
             lnsigma_v |  -2.435302   .0812527   -29.97   0.000    -2.594555    -2.27605
        ------------------------------------------------------------------------------
  • Example 4: Non-linear (Index). Zero Stochastic Frontier.

    chks Y1 x1 x2, indx(Y2 Y3) t(ces) es(zsf) eo(em)

      ------------------------------------------------------------------------------
               Y1 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
      ------------------------------------------------------------------------------
               x1 |   .0155953   .0005609    27.81   0.000     .014496    .0166946
               x2 |   .0392709   .0007659    51.27   0.000    .0377697    .0407721
            _cons |   2.935441   .0167206   175.56   0.000    2.902669    2.968213
               Y2 |   .2252023   .0124254    18.12   0.000    .2008489    .2495557
               Y3 |   .5117927   .0132434    38.65   0.000    .4858362    .5377493
              rho |   2.293806   .1025533    22.37   0.000    2.092805    2.494807
        lnsigma_u |  -2.299401   .0789157   -29.14   0.000   -2.454073   -2.144729
        lnsigma_v |  -2.340403   .0252419   -92.72   0.000   -2.389876    -2.29093
      logist_prob |   .5607503   .0657478     8.53   0.000    .4318871    .6896136
      ------------------------------------------------------------------------------
      di 1/(1+exp(-.5607503))
      0.63662613




Final notes:

  • It’s a draft (2019). Please provide me with any comments you may have on bugs, wording, inconsistencies, etc.
  • All files available here are for education and/or research purposes ONLY. The code within this repository comes with no guarantee, the use of this code is your responsibility.
  • Github: Repository