clear
set mem 400
capture log close
log using c:\temp\PROGRAM1.log, replace
quietly{
**************************************************************
*                                                            *      
*           THIS PROGRAM IS FOR THE SPECIFICATION            *    
*                                                            *
*   Y = BETA1 + X*BETA2 + U, U = RHO*WEIGHINGMATRIX*U + E    * 
*                                                            *
**************************************************************
**************************************************************
*EXPLANATION OF THE VARIABLES USED IN THE PROGRAM            *
*Y.......VECTOR OF DEPENDENT VARIABLE                        *
*X.......VECTOR OF EXOGENOUS EXPLANATORY VARIABLE            *
*U.......VECTOR OF DISTURBANCES                              *
*MMAT....SPATIAL WEIGHTING MATRIX                            *
*E.......VECTOR OF INNOVATIONS                               *
*RHO.....SPATIAL AUTOREGRESSIVE PARAMETER                    *
*B1HOLS..OLS ESTIMATE OF ALPHA                               *
*B1HGLS..GLS ESTIMATE OF ALPHA                               *
*B2HOLS..OLS ESTIMATE OF BETA                                *
*B2HGLS..GLS ESTIMATE OF BETA                                *
*RHOGM...GENERAL MOMENTS ESTIMATOR OF RHO                    *
*NS......SAMPLE SIZE                                         *
**************************************************************

**************************************************************
*                      READ THE DATA                         *
**************************************************************

infile y x1 x2 using c:\temp\var1.dat
save c:\temp\var1.dta, replace
clear
infile m1-m100 using c:\temp\mmat.dat
merge using c:\temp\var1
set matsize 100
mkmat m1-m100, mat(MMAT)




**************************************************************
*       IN THE FIRST STEP ESTIMATE THE MODEL BY OLS          *
*          AND GET THE ESTIMATED DISTURBANCES                *
**************************************************************

reg y x2 x1, noconstant noheader
predict r, resid
gen r2=r^2
egen ss=sum(r2)
scalar S2HOLS=ss/(_N-1)
scalar B1HOLS=_b[x1]
scalar B2HOLS=_b[x2]
}
**************************************************************
*                   STEP 1:  OLS ESTIMATORS                  *
**************************************************************
scalar list B1HOLS B2HOLS S2HOLS
**************************************************************


quietly{

**************************************************************
*   IN THE SECOND STEP USE THE ESTIMATES OF DISTURBANCES     * 
*          FOR THE GENERAL MOMENTS(GM) ESTIMATOR             *
**************************************************************

gmproc1 r
}
**************************************************************
*        STEP 2:  NLS ESTIMATORS OF RHO AND SIGMA^2,         * 
**************************************************************
scalar list RHOGM S2GM
************************************************************** 


quietly{
**************************************************************
*    IN THE THIRD STEP USE THE GM ESTIMATES FOR SPATIAL      *
* AUTOREGRESSIVE PARAMETER,  CORRECT FOR SPATIAL CORRELATION *
*  IN DISTURBANCES AND  ESTIMATE THE CORRECTED MODEL BY OLS  *
************************************************************** 

merge using c:\temp\var1
drop _merge
merge using c:\temp\mmat
glsproc1 y x1 x2 m1-m100
matrix VCBHGLS=e(V)
}

**************************************************************
*              STEP 3:  FEASIBLE GLS ESTIMATORS              *
**************************************************************
scalar list B1HGLS B2HGLS S2HGLS
**************************************************************


**************************************************************
*      VARIANCE-COVARIANCE MATRIX OF GLS ESTIMATED BETAS     *
**************************************************************
mat list VCBHGLS
**************************************************************

quietly{
vgmproc1
}

**************************************************************
*        STEP 4:  ESTIMATED VARIANCE FOR RHOGM               * 
**************************************************************
scalar list S2RHOGM
**************************************************************

log close
clear
