*! lmndh V1.0 01/05/2014 *! *! Emad Abd Elmessih Shehata *! Professor (PhD Economics) *! Agricultural Research Center - Agricultural Economics Research Institute - Egypt *! Email: emadstat@hotmail.com *! WebPage at IDEAS: http://ideas.repec.org/f/psh494.html *! WebPage at EconPapers: http://econpapers.repec.org/RAS/psh494.htm *! Sahra Khaleel A. Mickaiel *! Professor (PhD Economics) *! Cairo University - Faculty of Agriculture - Department of Economics - Egypt *! Email: sahra_atta@hotmail.com *! WebPage at IDEAS: http://ideas.repec.org/f/pmi520.html *! WebPage at EconPapers: http://econpapers.repec.org/RAS/pmi520.htm program define lmndh , eclass version 11.0 syntax varlist [if] [in] , [NOCONStant coll] gettoken yvar xvar : varlist qui marksample touse qui markout `touse' `varlist' , strok local both : list yvar & xvar if "`both'" != "" { di di as err " {bf:{cmd:`both'} included in both LHS and RHS Variables}" di as res " LHS: `yvar'" di as res " RHS: `xvar'" exit } if "`xvar'"=="" { di as err " {bf:Independent Variable(s) must be combined with Dependent Variable}" exit } tempvar E E2 E3 E4 Ea EE Eo Hat ht LDE LE LEo lf SSE Time wald weit Wi tempvar Wio WS X0 Yb Yh Yh2 Yhb Yho Yt YY YYm YYv Yh_ML Ue_ML TimeN tempname b B b1 b2 Beta Bv Bv1 Bx Cov D DX E E1 Hat HT IPhi J K L M tempname M1 M2 n OM P Phi Pm q Q q1 q2 S Wald We Wi Wi1 SSEo llf mh tempname Sig2 Sig2o Sn Sw v2 SST1 SST2 V Wio X X0 Y Yh Nn N kx DF kb qui cap count if `touse' local N = r(N) scalar `Nn'=`N' qui gen `TimeN'=_n qui gen `Time'=_n if `touse' qui tsset `Time' qui gen `X0'=1 if `touse' matrix `X0'= J(`N',1,1) if "`coll'"=="" { _rmcoll `varlist' if `touse' , `noconstant' `coll' forcedrop local varlist "`r(varlist)'" gettoken yvar xvar : varlist } local kx : word count `xvar' mkmat `yvar' if `touse' , matrix(`Y') if "`noconstant'"!="" { qui mkmat `xvar' if `touse' , matrix(`X') scalar `DF'=`N'-`kx' scalar `kb'=`kx' } else { qui mkmat `xvar' `X0' if `touse' , matrix(`X') scalar `DF'=`N'-`kx'-1 scalar `kb'=`kx'+1 } qui gen `Wi'=1 if `touse' qui gen `weit' = 1 if `touse' mkmat `Wi' if `touse' , matrix(`Wi') matrix `Wi'=diag(`Wi') tempname SSEo Sigo r2bu r2bu_a r2raw r2raw_a R20 f fp wald waldp tempname r2v r2v_a fv fvp r2h r2h_a fh fhp SSTm SSE1 SST11 SST21 Rho di di _dup(78) "{bf:{err:=}}" di as txt "{bf:{err:* Ordinary Least Squares (OLS)}}" di _dup(78) "{bf:{err:=}}" matrix `B'=invsym(`X''*`X')*`X''*`Y' matrix `E'=`Y'-`X'*`B' matrix `Yh_ML'=`X'*`B' matrix `Ue_ML'=`E' qui svmat `Yh_ML' , name(`Yh_ML') qui svmat `Ue_ML' , name(`Ue_ML') qui rename `Yh_ML'1 `Yh_ML' qui rename `Ue_ML'1 `Ue_ML' matrix `SSE'=`E''*`E' scalar `SSEo'=`SSE'[1,1] scalar `Sig2o'=`SSEo'/`DF' scalar `Sigo'=sqrt(`Sig2o') matrix `Cov'=`Sig2o'*inv(`X''*`X') qui summ `Yh_ML' if `touse' local NUM=r(Var) qui summ `yvar' if `touse' local DEN=r(Var) scalar `r2v'=`NUM'/`DEN' scalar `r2v_a'=1-((1-`r2v')*(`N'-1)/`DF') scalar `fv'=`r2v'/(1-`r2v')*(`N'-`kb')/(`kx') scalar `fvp'=Ftail(`kx', `DF', `fv') qui correlate `Yh_ML' `yvar' if `touse' scalar `r2h'=r(rho)*r(rho) scalar `r2h_a'=1-((1-`r2h')*(`N'-1)/`DF') scalar `fh'=`r2h'/(1-`r2h')*(`N'-`kb')/(`kx') scalar `fhp'=Ftail(`kx', `DF', `fh') local Sig=`Sigo' qui summ `yvar' if `touse' local Yb=r(mean) qui gen `YYm'=(`yvar'-`Yb')^2 if `touse' qui summ `YYm' if `touse' qui scalar `SSTm' = r(sum) qui gen `YYv'=(`yvar')^2 if `touse' qui summ `YYv' if `touse' local SSTv = r(sum) qui summ `weit' if `touse' qui gen `Wi1'=sqrt(`weit'/r(mean)) if `touse' mkmat `Wi1' if `touse' , matrix(`Wi1') matrix `P' =diag(`Wi1') qui gen `Wio'=(`Wi1') if `touse' mkmat `Wio' if `touse' , matrix(`Wio') matrix `Wio'=diag(`Wio') matrix `Pm' =`Wio' matrix `IPhi'=`P''*`P' matrix `Phi'=inv(`P''*`P') matrix `J'= J(`N',1,1) matrix `D'=(`J'*`J''*`IPhi')/`N' matrix `SSE'=`Ue_ML''*`IPhi'*`Ue_ML' matrix `SST1'=(`Y'-`D'*`Y')'*`IPhi'*(`Y'-`D'*`Y') matrix `SST2'=(`Y''*`Y') scalar `SSE1'=`SSE'[1,1] scalar `SST11'=`SST1'[1,1] scalar `SST21'=`SST2'[1,1] scalar `r2bu'=1-`SSE1'/`SST11' if `r2bu'< 0 { scalar `r2bu'=`r2h' } scalar `r2bu_a'=1-((1-`r2bu')*(`N'-1)/`DF') scalar `r2raw'=1-`SSE1'/`SST21' scalar `r2raw_a'=1-((1-`r2raw')*(`N'-1)/`DF') scalar `R20'=`r2bu' scalar `f'=`R20'/(1-`R20')*(`N'-`kb')/`kx' scalar `fp'= Ftail(`kx', `DF', `f') scalar `wald'=`f'*`kx' scalar `waldp'=chi2tail(`kx', abs(`wald')) scalar `llf'=-(`N'/2)*log(2*_pi*`SSEo'/`N')-(`N'/2) local Nof =`N' local Dof =`DF' matrix `B'=`B'' if "`noconstant'"!="" { matrix colnames `Cov' = `xvar' matrix rownames `Cov' = `xvar' matrix colnames `B' = `xvar' } else { matrix colnames `Cov' = `xvar' _cons matrix rownames `Cov' = `xvar' _cons matrix colnames `B' = `xvar' _cons } yxregeq `yvar' `xvar' di as txt _col(3) "Sample Size" _col(21) "=" %12.0f as res `N' ereturn post `B' `Cov' , dep(`yvar') obs(`Nof') dof(`Dof') qui test `xvar' scalar `f'=r(F) scalar `fp'= Ftail(`kx', `DF', `f') scalar `wald'=`f'*`kx' scalar `waldp'=chi2tail(`kx', abs(`wald')) di as txt _col(3) "{cmd:Wald Test}" _col(21) "=" %12.4f as res `wald' _col(37) "|" _col(41) as txt "P-Value > {cmd:Chi2}(" as res `kx' ")" _col(65) "=" %12.4f as res `waldp' di as txt _col(3) "{cmd:F-Test}" _col(21) "=" %12.4f as res `f' _col(37) "|" _col(41) as txt "P-Value > {cmd:F}(" as res `kx' " , " `DF' ")" _col(65) "=" %12.4f as res `fp' di as txt _col(2) "(Buse 1973) R2" _col(21) "=" %12.4f as res `r2bu' _col(37) "|" as txt _col(41) "Raw Moments R2" _col(65) "=" %12.4f as res `r2raw' ereturn scalar r2bu =`r2bu' ereturn scalar r2bu_a=`r2bu_a' ereturn scalar f =`f' ereturn scalar fp=`fp' ereturn scalar wald =`wald' ereturn scalar waldp=`waldp' di as txt _col(2) "(Buse 1973) R2 Adj" _col(21) "=" %12.4f as res `r2bu_a' _col(37) "|" as txt _col(41) "Raw Moments R2 Adj" _col(65) "=" %12.4f as res `r2raw_a' di as txt _col(3) "Root MSE (Sigma)" _col(21) "=" %12.4f as res `Sigo' as txt _col(37) "|" _col(41) "Log Likelihood Function" _col(65) "=" %12.4f as res `llf' di _dup(78) "-" di as txt "- {cmd:R2h}=" %7.4f as res `r2h' _col(17) as txt "{cmd:R2h Adj}=" as res %7.4f `r2h_a' as txt _col(34) "{cmd:F-Test} =" %8.2f as res `fh' _col(51) as txt "P-Value > F(" as res `kx' " , " `DF' ")" _col(72) %5.4f as res `fhp' if `r2v'<1 { di as txt "- {cmd:R2v}=" %7.4f as res `r2v' _col(17) as txt "{cmd:R2v Adj}=" as res %7.4f `r2v_a' as txt _col(34) "{cmd:F-Test} =" %8.2f as res `fv' _col(51) as txt "P-Value > F(" as res `kx' " , " `DF' ")" _col(72) %5.4f as res `fvp' ereturn scalar r2v=`r2v' ereturn scalar r2v_a=`r2v_a' ereturn scalar fv=`fv' ereturn scalar fvp=`fvp' } ereturn scalar r2raw =`r2raw' ereturn scalar r2raw_a=`r2raw_a' ereturn scalar llf =`llf' ereturn scalar sig=`Sigo' ereturn scalar r2h=`r2h' ereturn scalar r2h_a=`r2h_a' ereturn scalar fh=`fh' ereturn scalar fhp=`fhp' ereturn scalar kb=`kb' ereturn scalar kx=`kx' ereturn scalar DF=`DF' ereturn scalar Nn=_N ereturn scalar R20=`R20' ereturn display matrix `b'=e(b) matrix `V'=e(V) matrix `Bx'=e(b) local N=`Nn' tempvar Yh E E1 E2 E3 E4 Es U2 DE LDE LDF1 Yt U Hat tempname Hat corr1 corr3 corr4 mpc2 mpc3 mpc4 s q1 q2 ECov ECov2 Eb Sk Ku tempname M2 M3 M4 K2 K3 K4 Ss Kk GK sksd kusd N1 N2 EN S2N SN mean sd small A2 B0 B1 tempname B2 B3 LA Z Rn wsq2 ve lve Skn gn an cn kn vz Ku1 Kun n1 n2 n3 eb2 tempname R2W vb2 svb2 k1 a devsq m2 sdev m3 m4 sqrtb1 b2 g1 g2 stm3b2 S1 S2 S3 S4 tempname b2minus3 sm sms y k2 wk delta alpha yalpha pc1 pc2 pc3 pc4 pcb1 pcb2 sqb1p b2p qui tsset `Time' qui gen `Yh'=`Yh_ML' if `touse' qui gen `E' =`Ue_ML' if `touse' qui gen `E2'=`E'*`E' if `touse' matrix `Hat'=vecdiag(`Wi''*`Wi'*`X'*invsym(`X''*`Wi''*`Wi'*`X')*`X''*`Wi''*`Wi')' qui svmat `Hat' , name(`Hat') rename `Hat'1 `Hat' qui summ `E' if `touse' , det scalar `Sk'=r(skewness) scalar `Ku'=r(kurtosis) scalar `wsq2'=-1+sqrt(2*((3*(`N'^2+27*`N'-70)/((`N'-2)*(`N'+5))*((`N'+1)/(`N'+7))*((`N'+3)/(`N'+9)))-1)) scalar `ve'=`Sk'*sqrt((`N'+1)*(`N'+3)/(6*(`N'-2)))/sqrt(2/(`wsq2'-1)) scalar `lve'=ln(`ve'+(`ve'^2+1)^0.5) scalar `Skn'=`lve'/sqrt(ln(sqrt(`wsq2'))) scalar `gn'=((`N'+5)/(`N'-3))*((`N'+7)/(`N'+1))/(6*(`N'^2+15*`N'-4)) scalar `an'=(`N'-2)*(`N'^2+27*`N'-70)*`gn' scalar `cn'=(`N'-7)*(`N'^2+2*`N'-5)*`gn' scalar `kn'=(`N'*`N'^2+37*`N'^2+11*`N'-313)*`gn'/2 scalar `vz'= `cn'*`Sk'^2 +`an' scalar `Ku1'=(`Ku'-1-`Sk'^2)*`kn'*2 scalar `Kun'=(((`Ku1'/(2*`vz'))^(1/3))-1+1/(9*`vz'))*sqrt(9*`vz') ereturn scalar lmndh =`Skn'^2 + `Kun'^2 ereturn scalar lmndhp= chi2tail(2, abs(e(lmndh))) qui sort `Time' di di _dup(78) "{bf:{err:=}}" di as txt "{bf:{err:*** OLS Non Normality Doornik-Hansen Test}}" di _dup(78) "{bf:{err:=}}" di as txt "{bf: Ho: Normality - Ha: Non Normality}" di _dup(78) "-" di as txt "- Doornik-Hansen LM Test" _col(40) "=" as res %9.4f e(lmndh) _col(55) as txt "P-Value > Chi2(2) " _col(73) as res %5.4f e(lmndhp) di _dup(78) "-" qui tsset `TimeN' end program define yxregeq version 10.0 syntax varlist tempvar `varlist' gettoken yvar xvar : varlist local LEN=length("`yvar'") local LEN=`LEN'+3 di "{p 2 `LEN' 5}" as res "{bf:`yvar'}" as txt " = " " local kx : word count `xvar' local i=1 while `i'<=`kx' { local X : word `i' of `xvar' if `i'<`kx' { di " " as res " {bf:`X'}" _c di as txt " + " _c } if `i'==`kx' { di " " as res "{bf:`X'}" } local i=`i'+1 } di "{p_end}" di as txt "{hline 78}" end