// CORNWELL SCHMIDT AND SICKLES (1990) RANDOM EFFECTS // CODED BY PHILL WHEAT, SENIOR RESEARCH FELLOW, UNIVERISTY OF LEEDS // P.E.WHEAT@ITS.LEEDS.AC.UK // 31/03/2015 // CONVERTED TO A STATA PROGRAM, AND OTHER MINOR CHANGES BY ALEX STEAD, m2i RESEARCH FELLOW IN EFFICIENCY ANALYSIS, UNIVERSITY OF LEEDS // A.D.STEAD@LEEDS.AC.UK // 07/10/2016 /* THIS CODE CAN BE USED TO ESTIMATE THE TIME VARYING RANDOM EFFECTS MODEL OF CORNWELL, SCHMIDT AND SICKLES (1990) Journal of Econometrics 46 (1990) 185-200. THE OUTPUT IS A VECTOR, BGLS, OF PARAMETER ESTIMATES, A COVARIANCE MATRIX WITH RESPECT TO THE ESTIMATES, GLSVC, AND VARIABLES, INEFF AND EFF, BEING THE INEFFICIENCY AND EFFICIENCY PREDICTIONS RESPECTIVELY. THIS CODE WAS DEVELOPED ORIGINALLY FROM CODE SOURCED FROM THE WEBSITE OF ROBIN SICKLES (WONG SONG, 2002) AND CODED IN LIMDEP IN 2012. SUBSEQUENT TO THIS CODING, SICKLES RELEASED A REVISED VERSION OF THE CODE (Wong Sung, 2014) CORRECTING SOME ERRORS IN THE ORIGINAL. THIS CODE INCLUDES THESE CHANGES. AS WELL AS SOME DEGREES OF FREEDOM CORRECTION CHANGES, THE MAIN CHANGE IS LINES 107 TO 113 (THIS CODE). SONG HAS CORRECTED THE CODE TO ALLOW THE WITHIN ESTIMATOR TO BE USED. IN THE LIMDEP CODE AT THE TIME WE ADOPTED A POOLED ESTIAMTOR AS THE WITHIN GAVE VERY STRANGE RESULTS (BECAUSE THE TIME VARYING RANDOM COMPOENNTS WERE NOT EXPLICITLY TAKEN INTO ACCOUNT). FOR COMPARISION I HAVE RETAINED THE POOLED CODE BUT COMMENTED IT OUT OF THE SCRIPT. IF THIS IS REINSTATED (AND THE WITHIN ELEMENTS COMMENTED OUT) THEN THE CODE REPLICATES THE LIMDEP CODE (WITH THE EXCEPTION OF A VERY SMALL EFFECT OF SOME DEGREES OF FREEDOM CHANGE ON LINE 97) */ quietly{ set matsize 800 program cssre, eclass version 11 if !replay() { syntax varlist(numeric ts) [if] [in] [, Level(cilevel)] marksample touse gettoken depvar indepvars : varlist _fv_check_depvar `depvar' fvexpand `indepvars' local cnames `r(varlist)' tempname qtime nreg colxm colwmat rowind zcoln qmat tempold c d f g j k rowind1 temp1 kend temp2 pmat rowp mmat intwith int2with bwith int3with reswith ssgwint ssgtop ssgw intbet int2bet bbet resp pw respoo deltamat f1 c1 c2 c3 c4 c5 omega d1 d2 d3 bgls glsvc a1 a2 a3 a4 a5 a6 a7 a8 a9 observ capture drop alpha eff ineff gen cons=1 xtset gen panelvar=`r(panelvar)' gen timevar=`r(timevar)' replace timevar=timevar-r(tmin)+1 gen timevar_sq=timevar^2 local qtime "cons timevar timevar_sq" local cons "cons" mkmat `depvar', matrix(ymat) //y vector mkmat `indepvars', matrix(xmat) //x matrix mkmat `qtime', matrix(wmat) //q matrix mkmat `cons' `indepvars', matrix(commat) //x and q matrix quietly tab panelvar, matcell(indicat) //how many obs for each firm? scalar nreg=rowsof(xmat) //number of observations scalar colxm=colsof(xmat) //number of xvars scalar colwmat=colsof(wmat) //number of time vars scalar rowind=rowsof(indicat) //number of firms scalar zcoln=rowind*colwmat //number of time parameters matrix qmat=J(nreg,zcoln,0) //n by no. of time parameters matrix of zeros scalar tempold=0 local i=1 scalar k=1 scalar j=1 scalar rowind1=rowind+1 while (`i'