options memory=10 crt limwarn=0 double ; ? ? ========================= ONEMLHS =============================== ? ? One Variable Time Series Process - MLE. ? Uses CMLEHSX (conditional maximum likelihood with HS variances) ? BCHM paper Mai 1995. ? Hall-Mairesse paper March 2001. ? Revised Sept. 2001 ? ?read (file="bchmussc.dta") ; ?read (file="/bhresearch/us/unit/bchmfrsc.xls") ; read (file="/bhresearch/japan/bchmcln.dta") ; clean = 1 ; set nobt = @nob ; const t 12 ; set t1 = t-1 ; set nob = @nob/t ; list dylist dy79-dy89 ; loge = logl ; ? Fix up name due to confusion with log likelihood. delete logl ; ? ? Set up the data to be used - the series is called y. ? supres smpl ; date startime ; dot (index=iser) s r i e y ; smpl 1 nobt ; msd log. ; y = log. ; if iser=5 ; then ; do ; ? sort (all,reverse) clean id year ; select clean ; set nobt = @nob ; set nob = nobt/t ; print nobt nob t ; smpl 1 nobt ; enddo ; select year>78 ; dy = y-y(-1) ; msd dy ; set var = @var(1) ; mmake dymat dy ; mform (nrow=t1,ncol=nob) dymat ; mat dymat = dymat' ; smpl 1 nob ; unmake dymat dylist ; msd (silent) dylist ; unmake @mean mean79-mean89 ; unmake @var var79-var89 ; dot 79-89 ; dy. = dy.-mean. ; enddot ; ? Compute likelihood for rho=1. set srho = -1 ; set rho = 1 ; param var 1 ; set var = (var79+var80+var81+var82+var83+var84 +var85+var86+var87+var88+var89)/t1 ; set var = var*(nob-1)/nob ; cmlechsx dylist rho srho var svar logl conv ; set logl0 = logl ; set srho = 1 ; param rho 0.5 var ; cmlechsx dylist rho srho var svar logl conv ; ? Estimate by CMLE. if srho=1 ; then ; srho=@miss ; set rho. = rho ; set srho. = srho ; set logl. = logl ; set var. = var ; set svar. = svar ; set conv. = conv ; set lrtest. = (logl-logl0)*2 ; cdf (chisq,df=1) lrtest. lrcrit. ; set lltest. = (rho-1)/srho ; if ~miss(lltest.) ; then ; cdf (normal,lowtail) lltest. llcrit. ; else ; set llcrit. = @miss ; enddot ; list stat logl conv rho srho var svar lltest llcrit lrtest lrcrit ; smpl 1 5 ; dot stat ; mmake . .s .r .i .e .y ; unmake . . ; enddot ; print stat ; date endtime ; set time = (endtime-startime)/60 ; print (format="( ' Elapsed time in minutes:',f6.1)") time ;