Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
23.03.2015
Размер:
48.76 Кб
Скачать

Logl Logl The logl subdirectory contains sample program files for the logl object as described in Chapter 22 of the EViews 5 User's Guide. Multinomial logit (mlogit1.prg) AR(1) (ar1.prg) Conditional logit (clogit1.prg) Box-Cox transformation (boxcox1.prg) Disequilibrium switching model (diseq1.prg) Multiplicative heteroskedasticity (hetero1.prg) Probit with heteroskedasticity (hprobit1.prg) Probit with grouped data (gprobit1.prg) Nested logit (nlogit1.prg) Zero-altered Poisson model (zpoiss1.prg) Heckman sample selection model (heckman1.prg) Weibull hazard model (weibull1.prg)   GARCH with coefficient restrictions (garch1.prg) EGARCH with generalized error distribution (egarch1.prg) GARCH(1,1) with t-distribution (arch_t1.prg) Bivariate GARCH (bv_garch.prg) Trivariate GARCH (tv_garch.prg)   Multinomial logit MLOGIT1.PRG estimates a multinomial logit model with three choices and two individual specific regressors. Analytic derivatives are provided and checked against numeric derivatives at the starting values. ' MLOGIT1.PRG (1.0 - 6/29/98) ' revised for version 5.0 (3/26/2004) ' example program for EViews LogL object ' ' multinomial logit with three choices ' with two individual specific regressors ' ' for a discussion, see Section 19.7 of Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall 'change path to program path %path = @runpath +"../data/" cd %path ' load artificial data load mlogit ' declare parameter vector coef(3) b2 coef(3) b3 ' true values are ' b2(1) -0.4 b2(2) 1 b2(3) -0.2 ' b3(1) -0.4 b3(2) 0.3 b3(3) 0.5 ' setup the loglikelihood logl mlogit mlogit.append @logl logl1 ' define index for each choice mlogit.append xb2 = b2(1)+b2(2)*x1+b2(3)*x2 mlogit.append xb3 = b3(1)+b3(2)*x1+b3(3)*x2 ' define prob for each choice mlogit.append denom = 1+exp(xb2)+exp(xb3) mlogit.append pr1 = 1/denom mlogit.append pr2 = exp(xb2)/denom mlogit.append pr3 = exp(xb3)/denom ' specify likelihood mlogit.append logl1 = (1-dd2-dd3)*log(pr1)+dd2*log(pr2)+dd3*log(pr3) ' specify analytic derivatives for !i=2 to 3 mlogit.append @deriv b{!i}(1) grad{!i}1 b{!i}(2) grad{!i}2 b{!i}(3) grad{!i}3 mlogit.append grad{!i}1 = dd{!i}-pr{!i} mlogit.append grad{!i}2 = grad{!i}1*x1 mlogit.append grad{!i}3 = grad{!i}1*x2 next ' get starting values from binomial logit equation eq2.binary(d=l) dd2 c x1 x2 b2 = eq2.@coefs equation eq3.binary(d=l) dd3 c x1 x2 b3 = eq3.@coefs ' check analytic derivatives at starting values freeze(tab1) mlogit.checkderiv show tab1 ' do MLE and display results mlogit.ml(showopts,m=1000,c=1e-5) show mlogit.output ^Top

AR(1) AR1.PRG estimates an AR(1) model by full maximum likelihood. The program also displays estimates from non-linear least squares (conditional MLE) and full MLE from a state space specification. ' AR1.PRG (1.0 - 6/29/98) ' checked for version 5.0 (3/26/2004) ' example program for EViews LogL object ' ' estimate AR(1) by MLE ' for a discussion, see pp. 118-119 of Hamilton, James D. (1994) Time Series Analysis, ' Princeton University Press. ' ' note that this model becomes difficult to estimate as rho approaches 1 ' make up data that follows an AR(1), with rho=.85 wfcreate ar1 m 1980 1989 rndseed 123 'set seed of random number generator series y=0 smpl @first+1 @last y = 0.85*y(-1) + nrnd ' create dummy variable for first obs series d1 = 0 smpl @first @first d1 = 1 smpl @all ' set starting values to LS (drops first obs) equation eq1.ls y c ar(1) coef(1) rho = c(2) coef(1) s2 = eq1.@se^2 ' set up logl object ' uses new @recode syntax: @recode(true_false, value_if_true, value_if_false) ' to handle the first observation likelihood contribution logl ar1 ar1.append @logl logl1 ar1.append var = @recode( d1=1,s2(1)/(1-rho(1)^2),s2(1) ) ar1.append res = @recode( d1=1,y-c(1)/(1-rho(1)),y-c(1)-rho(1)*y(-1) ) ar1.append sres = res/@sqrt(var) ar1.append logl1 = log(@dnorm(sres)) -log(var)/2 ' do MLE and show results ar1.ml(showopts,m=1000,c=1e-5) show ar1.output ' compare with EViews AR(1) estimates which drop the first obs show eq1.output ' full MLE using state space object sspace ss1 ss1.append @signal y = c(1) + sv1 ss1.append @state sv1 = c(2)*sv1(-1) + [var = exp(c(3))] ' take starting values from NLS eq1.updatecoefs c(3) = log(eq1.@ssr/eq1.@regobs) ss1.ml(showopts,m=1000,c=1e-5) show ss1.output ^Top

Conditional logit CLOGIT1.PRG estimates a conditional logit with 3 outcomes and both individual specific and choice specific regressors. The program also displays the prediction table and carries out a Hausman test for independence of irrelevant alternatives (IIA). See Greene (1997, chapter 19.7) for a discussion of multinomial logit models. ' CLOGIT1.PRG (1.0 - 6/29/98) ' revised for version 5.0 (3/30/2004) ' example program for EViews LogL object ' ' conditional logit with 3 outcomes, and a test for IIA ' ' for a discussion, see Section 19.7.2 of Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall 'change path to program path %path = @runpath+"../data/" cd %path ' load artificial data load mlogit ' full conditional logit using all three outcomes ' declare coef vector to use in MLE coef(2) a1 = 0.1 ' true values 0.6, -0.3 coef(2) b1 = 0.1 ' true values 0.6, 0.7 ' for use in derivative expression series stores = d1*stores1+d2*stores2+d3*stores3 series dist = d1*dist1+d2*dist2+d3*dist3 ' specify likelihood for three outcome logit logl ll1 ll1.append @logl logl1 ll1.append xb1 = a1(1)*stores1+a1(2)*dist1 ll1.append xb2 = a1(1)*stores2+a1(2)*dist2+b1(1)*inc ll1.append xb3 = a1(1)*stores3+a1(2)*dist3+b1(2)*inc ll1.append denom = exp(xb1)+exp(xb2)+exp(xb3) ll1.append logl1 = d1*xb1+d2*xb2+d3*xb3-log(denom) ' analytic derivatives ll1.append @deriv a1(1) grada1 a1(2) grada2 b1(1) gradb2 b1(2) gradb3 ll1.append grada1 = stores-(stores1*exp(xb1)+stores2*exp(xb2)+stores3*exp(xb3))/denom ll1.append grada2 = dist-(dist1*exp(xb1)+dist2*exp(xb2)+dist3*exp(xb3))/denom ll1.append gradb2 = (d2-exp(xb2)/denom)*inc ll1.append gradb3 = (d3-exp(xb3)/denom)*inc ' estimate by MLE ll1.ml(showopts,m=1000,c=1e-5) show ll1.output ' compute predicted probabilities series y2hat = exp(xb2)/denom series y3hat = exp(xb3)/denom series y1hat = 1-y2hat-y3hat ' compute actual and predicted outcome (the one with highest predicted probability) series y = (d2=1)*2+3*(d3=1)+1*(d2=0 and d3=0) series yhat = 2*(y2hat>y3hat and y2hat>y1hat) + 3*(y3hat>y2hat and y3hat>y1hat) + 1*(y1hat>=y3hat and y1hat>=y2hat) ' show prediction table group predict y yhat show predict.freq '------------------------------------------------------------------------------------- ' to test IIA restriction estimate model dropping choice 3 (use only outcomes 1 and 2) '------------------------------------------------------------------------------------- ' initialize params coef(2) a2 = 0.1 coef(1) b2 = 0.1 ' likelihood for restricted model ' make sure not to use the same name for expressions as in ll1 logl ll2 ll2.append @logl logl2 ll2.append xb12 = a2(1)*stores1+a2(2)*dist1 ll2.append xb22 = a2(1)*stores2+a2(2)*dist2+b2(1)*inc ll2.append denom2 = exp(xb12)+exp(xb22) ll2.append logl2 = d1*xb12+d2*xb22-log(denom2) ' analytic derivatives ll2.append @deriv a2(1) grada12 a2(2) grada22 b2(1) gradb22 ll2.append grada12 = d1*stores1+d2*stores2-(stores1*exp(xb12)+stores2*exp(xb22))/denom2 ll2.append grada22 = d1*dist1+d2*dist2-(dist1*exp(xb12)+dist2*exp(xb22))/denom2 ll2.append gradb22 = (d2-exp(xb22)/denom2)*inc ' estimate excluding choice 3 data smpl @all if d3=0 ll2.ml(showopts,m=1000,c=1e-5) show ll2.output ' compute Hausman statistic for IIA test ' get variance of unrestriced sym var_1 = ll1.@coefcov ' resize to match var_2 (this trick depends on the ordering of the coefs) sym(3,3) var_1 ' get variance of restricted sym var_2 = ll2.@coefcov ' get coefs for !i=1 to 2 matrix(3,1) coef_{!i} coef_{!i}(1,1) = a{!i}(1) coef_{!i}(2,1) = a{!i}(2) coef_{!i}(3,1) = b{!i}(1) next ' compute test statistic coef cdiff = coef_2 - coef_1 sym vdiff = var_2 - var_1 matrix hs = @transpose(cdiff) * @inverse(vdiff) * cdiff ' display results in table table out setcolwidth(out,1,20) out(1,1) = "Hausman test for I.I.A.:" out(2,1) = "chi-sqr(" + @str(@rows(cdiff)) + ") = " out(2,2) = @str(hs(1)) out(2,3) = "p-value" out(2,4) = 1-@cchisq(hs(1),@rows(cdiff)) show out ^Top

Box-Cox transformation BOXCOX1.PRG estimates a simple bivariate regression with an estimated Box-Cox transformation on both the dependent and independent variables. Box-Cox transformation models are notoriously difficult to estimate and the results are very sensitive to starting values. ' BOXCOX1.PRG (1.0 - 6/29/98) ' checked for version 5.0 (3/26/2004) ' example program for EViews LogL object ' Box-Cox with transformation on both sides of the equality ' For a description of the likelihood function, see p. 484 of ' Greene, William H. (1997) Econometric Analysis, 3rd edition, ' Prentice-Hall. See Section 10.4 for a general discussion. ' create workfile wfcreate boxcox a 1920 1938 ' fill data series y series x y.fill 73.8,70.6,59.1,55.5,56,56.4,55.8,56.2,55.7,55.8,55.7,54.9,54,53.7,54.3,55,56.1,57.2,58.9 x.fill 3.9,17,14.3,11.7,10.3,11.3,12.5,9.7,10.8,10.4,16.1,21.3,22.1,19.9,16.7,15.5,13.1,10.8,12.9 ' set starting value for lambda ' NOTE: the estimates are very sensitive to starting values coef(1) ylam = -0.5 coef(1) xlam = 0.1 ' get coef starting values series yt = (y^ylam(1)-1)/ylam(1) series xt = (x^xlam(1)-1)/xlam(1) equation eq_temp.ls yt c xt coef(1) var = eq_temp.@se^2 ' setup likelihood logl ll1 ll1.append @logl logl ll1.append yt = (y^ylam(1)-1)/ylam(1) ll1.append xt = (x^xlam(1)-1)/xlam(1) ll1.append res = yt-c(1)-c(2)*xt ll1.append logl = log( @dnorm( res/@sqrt(var(1)) ) ) - log(var(1))/2 + (ylam(1)-1)*log(y) ' do MLE and display results ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ^Top

Disequilibrium switching model DISEQ1.PRG estimates the switching model in exercise 15.14–15.15 of Judge et al. (1985, pages 644–646). Note that there are some typos in Judge et al. (1985, pages 639–640). The program uses the likelihood specification in Quandt (1988, page 32, equations 2.3.16–2.3.17). ' DISEQ1.PRG ' checked for version 5.0 (3/24/2004) ' example program for EViews LogL object ' disequilibrium switching model ' Exercise 15.14-15.15 in (page 644-646), Judge, et al. (1985), ' The Theory and Practice of Econometrics, 2nd Edition, ' John Wiley & Sons. ' create workfile wfcreate diseq u 1 21 ' load data in exercise 15.14 (Table 15.3) ' one obs extra for presample value series u1 series v1 series y1 series w1 u1.fill(o=2) 0.41,-0.09,0.39,-0.52,1.37,-0.8,0.63,1.83,-0.85,-0.85,-1.29,-0.46,-0.79,-0.63,-0.62,-1.53,0.61,0.92,-0.26,-0.93 v1.fill(o=2) 0.46,4.78,2.76,-2.83,3.12,0.28,-0.02,2.81,2.41,0.09,-1.37,0.23,-0.45,2.64,3.83,1.23,-0.81,-1.04,3.33,1.92 y1.fill(o=2) 574.21,653.85,733.81,818.29,899.29,972.78,1057.56,1132.86,1215.8,1292.58,1373.82,1459.22,1538.38,1617.47,1692.97,1777.61,1858.21,1939.75,2010.6,2090.36 w1.fill(o=2) 1.69,1.88,1.94,1.96,2.15,2.16,2.29,2.31,2.59,2.67,2.76,2.73,2.94,3.06,3.19,3.17,3.3,3.44,3.46,3.62 ' set starting value for p smpl 1 1 series p1 = 43.21 ' generate p1, d1, s1, q1 model m1 m1.append d1 = 60-1.8*p1(-1)+0.05*y1+u1 m1.append s1 = 10+2.5*p1(-1)-3*w1+v1 m1.append q1 = (d1=s1)*s1 m1.append p1 = p1(-1)+0.04*(d1-s1) smpl 2 21 m1.solve ' rename rename d1_0 d1 rename s1_0 s1 rename q1_0 q1 p1 = p1_0 ' already exists; overwrite ' declare coef vectors to use in likelihood spec coef(3) alpha ' true values 60, -1.8, 0.05 coef(3) beta ' true values 10, 2.5, -3 coef(1) gamma ' true value 0.04 coef(2) sigma ' true values 1, 2 !pi = @acos(-1) ' setup likelihood as in eqs (2.3.16) & (2.3.17) of Quandt, page 32 ' assume zero correlation between demand and supply error series dp_pos = (d(p1)>0)*d(p1) series dp_neg = (d(p1)<=0)*(-1)*d(p1) logl ll1 ll1.append @logl logl1 ll1.append ud = q1-alpha(1)-alpha(2)*p1(-1)-alpha(3)*y1+dp_pos/gamma(1) ll1.append us = q1-beta(1)-beta(2)*p1(-1)-beta(3)*w1+dp_neg/gamma(1) ll1.append logl1 = -log(2*!pi) -log(@abs(gamma(1))) -log(sigma(1)) -log(sigma(2)) -ud^2/sigma(1)^2/2 -us^2/sigma(2)^2/2 ' estimate 2SLS for starting values equation eqa.tsls q1 c p1(-1) y1 dp_pos @ c p1(-1) y1 w1 alpha = eqa.@coefs sigma(1) = eqa.@se show eqa.output equation eqb.tsls q1 c p1(-1) w1 dp_neg @ c p1(-1) y1 w1 beta = eqb.@coefs sigma(2) = eqb.@se show eqb.output gamma(1) = -1/eqb.c(4) ' do mle and display output ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ^Top

Multiplicative heteroskedasticity HETERO1.PRG estimates a linear regression model with multiplicative heteroskedasticity. Replicates the results in Greene (1997, example 12.14). ' HETERO1.PRG (1.0 - 6/29/98) ' revised for version 4.0 (10/19/2000 h) ' estimate parameteric heterogenerity model ' ' Example 12.14, p. 563 of Greene, William H. (1997) Econometric Analysis, ' 3rd edition, Prentice-Hall ' create workfile wfcreate hetero1 u 1 51 ' read data from Greene (1997) table 12.1, page 541 series expend series inc expend.fill 275,275,531,316,304,431,316,427,259,294,423,335,320,342,268,353,320,821,387,424,265,437,355,327,466,274,359,388,311,397,315,315,356,NA,339,452,428,403,345,260,427,477,433,279,447,322,412,321,417,415,500 inc.fill 0.6247,0.6183,0.8914,0.7505,0.6813,0.7873,0.664,0.8063,0.5736,0.7391,0.8818,0.6607,0.6951,0.7526,0.6489,0.6541,0.6456,1.0851,0.885,0.8604,0.67,0.8745,0.8001,0.6333,0.8442,0.7342,0.9032,0.6505,0.7478,0.7839,0.6242,0.7697,0.7624,0.7597,0.7374,0.8001,1.0022,0.838,0.7696,0.6615,0.8306,0.7847,0.7051,0.7277,0.8267,0.7812,0.7733,0.6841,0.6622,0.845,0.9096 ' specify likelihood function logl ll1 ll1.append @logl logl1 ll1.append res = expend-c(1)-c(2)*inc-c(3)*inc^2 ll1.append var = c(4)*inc^c(5) ll1.append logl1 = log(@dnorm(res/@sqrt(var)))-log(var)/2 ' set starting values to OLS equation eq1.ls expend c inc inc^2 for !i=1 to 3 c(!i) = eq1.c(!i) next c(4) = eq1.@se^2 c(5) = 1 ' estimate for sample with nonmissing values for dependent variable 7smpl @all if expend<>na ll1.ml(showopts, m=1000, c=1e-5) ' should replicate Greene (1997), Table 12.11, p.563 show ll1.output ^Top

Probit with heteroskedasticity HPROBIT.PRG estimates a probit specification with multiplicative heteroskedasticity. See Greene (1997, example 19.7). ' HPROBIT1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' revised for version 5.0 (3/26/2004) ' Estimate probit specification with multiplicative heterogeneity. ' ' Example 19.7 (p. 890) of Greene, William H. (1997) Econometric Analysis, ' 3rd edition, Prentice-Hall. 'create workfile wfcreate hprobit u 32 'read data from Greene series gpa series tuce series psi series grade gpa.fill 2.66,2.89,3.28,2.92,4,2.86,2.76,2.87,3.03,3.92,2.63,3.32,3.57,3.26,3.53,2.74,2.75,2.83,3.12,3.16,2.06,3.62,2.89,3.51,3.54,2.83,3.39,2.67,3.65,4,3.1,2.39 tuce.fill 20,22,24,12,21,17,17,21,25,29,20,23,23,25,26,19,25,19,23,25,22,28,14,26,24,27,17,24,21,23,21,19 psi.fill 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1 grade.fill 0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,1,1,0,1,1,0,1 ' arbitrary (random) starting values rndseed 1234 coef(4) beta rnd(beta) coef(1) gam rnd(gam) ' specify the likelihood logl ll1 ll1.append @logl logl1 ll1.append index = (beta(1)+beta(2)*gpa+beta(3)*tuce+beta(4)*psi)/exp(gam(1)*psi) ll1.append mills = @dnorm(index)*(grade-@cnorm(index))/@cnorm(index)/(1-@cnorm(index)) ll1.append logl1 = grade*log(@cnorm(index))+(1-grade)*log(1-@cnorm(index)) ' specify analytic derivatives ll1.append @deriv beta(1) grad1 beta(2) grad2 beta(3) grad3 beta(4) grad4 gam(1) grad5 ll1.append grad1 = mills/exp(gam(1)*psi) ll1.append grad2 = grad1*gpa ll1.append grad3 = grad1*tuce ll1.append grad4 = grad1*psi ll1.append grad5 = mills*psi*(-index) ' carry out MLE and display results ll1.ml(showopts, m=1000, c=1e-5) 'does not quite match results in Table 19.4 (right block), p.890 'but eviews logl is higher show ll1.output ^Top

Probit with grouped data GPROBIT1.PRG estimates a probit with grouped data (proportions data). Estimates the model in Greene (1997, exercise 19.6). ' GPROBIT1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' checked for version 5.0 (3/26/2004) ' grouped (proportions) data probit ' ' Problem 6, page 947 of Greene, William H. (1997) Econometric Analysis, ' 3rd edition, Prentice-Hall ' create workfile wfcreate gprobit u 10 ' fill data series trucks trucks.fill 160,250,170,365,210,206,203,305,270,340 series prate prate.fill 11,74,8,87,62,83,48,84,71,79 prate = prate/100 ' set up likelihood for probit logl ll1 ll1.append @logl logl1 ll1.append xb = c(1)+c(2)*trucks ll1.append logl1 = prate*log(@cnorm(xb)) + (1-prate)*log(1-@cnorm(xb)) ' analytic derivatives ll1.append @deriv c(1) grad1 c(2) grad2 ll1.append mills1 = @dnorm(xb)/@cnorm(xb) ll1.append mills2 = -@dnorm(xb)/(1-@cnorm(xb)) ll1.append grad1 = prate*mills1+(1-prate)*mills2 ll1.append grad2 = prate*mills1*trucks+(1-prate)*mills2*trucks ' set OLS starting values equation eq1.ls prate c trucks ' do MLE ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ' create table for answer to problems table(3,2) ans setcolwidth(ans,1,30) ' problem 6(a) setcell(ans,1,1, "answer to 6(a)","l") scalar ans_a = ( @qnorm(.95)-ll1.c(1) )/ll1.c(2) ans(1,2) = ans_a ' problem 6(b) ' ans_b is the expected participation rate if budget 6.5 million setcell(ans,2,1,"expected participation rate","l") scalar ans_b = @cnorm( ll1.c(1)+ll1.c(2)*650/2 ) ans(2,2) = ans_b ' problem 6(c) setcell(ans,3,1,"marginal participation rate at 301","l") scalar ans_c = ll1.c(2)*@dnorm( ll1.c(1)+ll1.c(2)*301 ) ans(3,2) = ans_c show ans ^Top

Nested logit NLOGIT1.PRG estimates a nested logit model with 2 branches. Tests the IIA assumption by a Wald test. See Greene (1997, chapter 19.7.4) for a discussion of nested logit models. ' NLOGIT1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' revised for version 5.0 (3/26/2004) ' nested logit with three choices and two branches: ' branch 1 (y=1) and branch 2 (y=2,3) ' ' for a discussion, see Section 19.7.4 of Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall 'change path to program path %path = @runpath + "../data/" cd %path ' load artificial data load mlogit ' declare coef vector to use in MLE coef(2) a3 = 0.1 ' true values 0.6, -0.3 coef(2) b3 = 0.1 ' true values 0.6, 0.7 coef(1) c3 = 0.1 ' true value 1 (conditional logit) ' specify likelihood logl ll3 ll3.append @logl logl3 ll3.append xb1 = a3(1)*stores1+a3(2)*dist1 ll3.append xb2 = a3(1)*stores2+a3(2)*dist2+b3(1)*inc ll3.append xb3 = a3(1)*stores3+a3(2)*dist3+b3(2)*inc ' inclusive values for each branch ll3.append ival1 = xb1 ll3.append ival2 = log(exp(xb2)+exp(xb3)) ' (unconditional) prob for each brach ll3.append prob1 = exp(ival1)/( exp(ival1)+exp(c3(1)*ival2) ) ll3.append prob2 = exp(c3(1)*ival2)/( exp(ival1)+exp(c3(1)*ival2) ) ' conditional prob within branch 2 ll3.append prob22 = exp(xb2)/( exp(xb2)+exp(xb3) ) ll3.append prob23 = exp(xb3)/( exp(xb2)+exp(xb3) ) ll3.append logl3 = d1*log(prob1) + d2*log(prob2*prob22) + d3*log(prob2*prob23) ' estimate MLE ' check that you get the conditional logit estimates if c3(1)=1 ll3.ml(showopts) freeze(out1) ll3.output show out1 ' test IIA by testing c3(1)=1 ll3.wald c3(1)=1 ^Top

Zero-altered Poisson model ZPOISS1.PRG estimates the zero-altered Poisson model. Also carries out the non-nested LR test of Vuong (1989). See Greene (1997, chapter 19.9.6) for a discussion of zero-altered Poisson models and Vuong’s non-nested likelihood ratio test. ' ZPOISS1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' checked for version 5.0 (3/26/2004) ' ' zero-altered poisson models ' ' see Section 19.9.6 in Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall. ' create workfile wfcreate zpoiss u 1 1000 ' generate artificial data rndseed 123 for !i=1 to 4 series x{!i} = 2*nrnd next series zstar = 0.1*x1+0.3*x2+nrnd series z = (zstar>0) series xbeta = exp(0.1+0.6*x3+0.4*x4) series ystar = @rpoisson(xbeta) series y=z*ystar ' declare params to estimate coef(3) gam = 0.1 ' true values 0, 0.1, 0.3 coef(3) beta = 0.1 ' true values 0.1, 0.6, 0.4 ' specify likelihood ' note: variance of probit not identified; only ratio to coef identified logl ll1 ll1.append @logl logl1 ' index function for the probit ll1.append xb0 = (gam(1)+gam(2)*x1+gam(3)*x2) ' index function for the Poisson ll1.append lambda = exp(beta(1)+beta(2)*x3+beta(3)*x4) ll1.append prob0 = (1-@cnorm(xb0)) + @cnorm(xb0)*exp(-lambda) ll1.append logl1 = (y=0)*log(prob0)+(y>0)*( log(@cnorm(xb0)) -lambda+y*log(lambda)-@factlog(y) ) ' get starting values from probit and poission models equation eq1.binary(d=n) (y>0) c x1 x2 gam = eq1.@coefs equation eq2.count y c x3 x4 beta = eq2.@coefs ' do MLE ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ' Vuong non-nested LR test, Greene (1997), page 944 ' need to get the log likelihood series from binary and Poisson models ' probit log likelihood series xb21 = eq1.c(1)+eq1.c(2)*x1+eq1.c(3)*x2 series logl21 = (y>0)*log( @cnorm(xb21) ) + (y=0)*log( 1-@cnorm(xb21) ) ' poisson log likelihood series lam22 = exp( eq2.c(1)+eq2.c(2)*x3+eq2.c(3)*x4 ) series logl22 = -lam22+y*log(lam22)-@factlog(y) ' likelihood ratio series series logl2 = logl21+logl22 series m = logl1-logl2 ' test statistic (take model 1 if v>2, take model 2 if v<2, else inconclusive) table out setcolwidth(out,1,20) out(1,1) = "Vuong non-nested LR test" out(2,1) = "Zero-altered model if v>2; probit-poisson if v<2; else inconclusive" scalar v = @sum(m)/@sqrt( @sumsq(m-@mean(m)) ) out(3,1) = "v = " + @str(v) show out ^Top

Heckman sample selection model HECKMAN1.PRG estimates Heckman’s two equation sample selection model by MLE using the two-step estimates as starting values. ' HECKMAN1.PRG (1.0 - 6/30/98) ' example program for EViews LogL object ' revised (3/28/2004) ' ' Heckman selection model with three regressors z1, z2, z3 ' (common to both selection and regression equations) ' selection equation: lfp=1 if selected; otherwise 0 ' regression model: lw (dependent) c z1 z2 z3 (regressors) ' ' for a discussion, see Section 20.4 of Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall 'change path to program path %path = @runpath +"../data/" cd %path ' load artificial data load mlogit ' get starting values from 2-step Heckman ' first step: estimate probit of the selection equation smpl @all equation eq1.binary(d=n) lfp c z1 z2 z3 ' copy starting values to selection equation params coef(4) b = eq1.@coefs ' true values b(1) 1 b(2) 0.2 b(3) 0.5 b(4) -0.3 ' compute inverse mills ratio eq1.fit(i) xbhat series imills = @dnorm(xbhat)/@cnorm(xbhat) ' compute delta to estimate sig2 (variance) series delta = imills*(imills+xbhat) ' run second step OLS, including the inverse mills ratio smpl @all if lfp=1 equation eq2.ls lw c z1 z2 z3 imills ' true values c(1) 5 c(2) 0.8 c(3) 0.1 c(4) -1 ' construct estimate of correlation rho (note: uses only estimation sample of 2nd step) eq2.makeresid resid2 ' initial estimate of the regression model variance coef(1) sig2 = @sumsq(resid2)/eq2.@regobs+@mean(delta)*eq2.c(5)^2 ' true value 4 ' initial estimate of the squared correlation between the two equations ' rho2 should be constrained between 0 and 1 coef(1) rho2 = eq2.c(5)^2/sig2(1) ' true value 0.64 ' end of 2 step Heckman ' set up log likelihood !pi = @acos(-1) ' the constant pie logl ll1 ll1.append @logl logl1 ' index for selection equation ll1.append xb0 = b(1)+b(2)*z1+b(3)*z2+b(4)*z3 ' log probability if not observed ll1.append logp0 = log( 1-@cnorm(xb0) ) ' fitted values from the regression model ll1.append xb1 = c(1)+c(2)*z1+c(3)*z2+c(4)*z3 ' standardized residual from the regression model ll1.append sres = (lw-xb1)/@sqrt(sig2(1)) ' index for observed regression model ll1.append index = (xb0+sres*@sqrt(rho2(1)) )/@sqrt( 1-rho2(1) ) ' log probability if observed ll1.append logp1 = -log(2*!pi)/2-log(sig2(1))/2-sres^2/2+log(@cnorm(index)) ' specify contribution to the likelihood (uses new @recode syntax) ll1.append logl1 = @recode(lfp=0,logp0,logp1) ' do MLE and show results smpl @all ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ^Top

Weibull hazard model WEIBULL1.PRG estimates the uncensored Weibull hazard model described in Greene (1997, example 20.18). The program also carries out one of the conditional moment tests in Greene (1997, example 20.19). ' WEIBULL1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' last checked (3/26/2004) ' ' weibull duration model with (fixed) covariates; no censoring ' ' see Example 20.18 (pp. 990-991) in Greene, William H. (1997) ' Econometric Analysis, 3rd edition, Prentice-Hall. ' create workfile wfcreate weibull u 1 62 ' fill data series days series ind days.fill 7,9,13,14,26,29,52,130,9,37,41,49,52,119,3,17,19,28,72,99,104,114,152,153,216,15,61,98,2,25,85,3,10,1,2,3,3,3,4,8,11,22,23,27,32,33,35,43,43,44,100,5,49,2,12,12,21,21,27,38,42,117 ind.fill 0.01138,0.01138,0.01138,0.01138,0.01138,0.01138,0.01138,0.01138,0.02299,0.02299,0.02299,0.02299,0.02299,0.02299,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.03957,-0.05467,-0.05467,-0.05467,0.00535,0.00535,0.00535,0.07427,0.07427,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,0.0645,-0.10443,-0.10443,-0.007,-0.007,-0.007,-0.007,-0.007,-0.007,-0.007,-0.007,-0.007 ' declare params to estimate with arbitrary initial values coef(2) beta = 0.1 coef(1) p = 0.1 ' setup likelihood for weibull model logl ll1 ll1.append @logl logl1 ll1.append loglam = -beta(1)-beta(2)*ind ll1.append w = p(1)*(loglam+log(days)) ll1.append logl1 = w+log(p(1))-exp(w) ' resg is the generalized residuals (should have mean 1) ll1.append resg = exp(w) ' analytic derivatives ll1.append @deriv beta(1) grad1 beta(2) grad2 p(1) grad3 ll1.append grad1 = p(1)*(resg-1) ll1.append grad2 = grad1*ind ll1.append grad3 = (w+1-w*resg)/p(1) ' do MLE ll1.ml(showopts, m=1000, c=1e-7) show ll1.output ' conditional moment tests (Greene, example 20.19, p. 994) !psi = @psi(1) ' @psi is the first deriv of log gamma group gm resg^2-2 log(resg)-!psi group gg grad1 grad2 grad3 matrix mm = @convert(gm) matrix dd = @convert(gg) 'compute M'i matrix(gm.count,1) colsum for !i=1 to gm.count series _tmp = gm(!i) colsum(!i,1) = @sum( _tmp ) next ' compute M'M - M'D(D'D)^{-1}D'M sym dtd = @transpose(dd)*dd matrix qdiff = @transpose(mm)*mm - @transpose(mm)*dd*@inverse(dtd)*@transpose(dd)*mm ' evaluate quadratic form at the bottom of page 994 matrix chi2_stat = @transpose(colsum)*@inverse(qdiff)*colsum table out setcolwidth(out, 1, 10) out(1,1) = "Conditional moment tests for the Weibull specification" out(2,1) = "Matches E[e^2] and E[log(e)]" out(3,1) = "chi-sqr(" + @str(@columns(mm)) + ") = " out(3,2) = @str(chi2_stat(1)) out(3,3) = "p-value" out(3,4) = 1-@cchisq(chi2_stat(1),@columns(mm)) show out ^Top

GARCH with coefficient restrictions GARCH1.PRG estimates an MA(1)-GARCH(1,1) model with coefficient restrictions in the conditional variance equation. This model is estimated by Bollerslev, Engle, and Nelson (1994, equation 9.1, page 3015) using different data. ' GARCH1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' revised for version 5.0 (3/26/2004) ' ' GARCH(1,1) model with MA(1) errors and coef restrictions. ' ' This is the specification described in Section 9.1 (pp. 3014-3017) ' of Bollerslev, Tim, Robert F. Engle and Daniel B. Nelson (1994) ' "ARCH Models", in Chapter 49 of the Handbook of Econometrics, ' Volume 4, North-Holland, applied to different data. 'change path to program path %path = @runpath +"../data/" cd %path ' load workfile load gerus series y = 100*dlog(ger) ' set sample (1/2/82-7/9/92) as in Table 1, column 1 ' 10/6/86 is obs 3945 sample s0 2750 2750 sample s1 2751 5392 smpl s1 ' declare coef vectors to use in ARCH likelihood coef(1) mu = .1 coef(1) theta = .1 coef(2) omega = .1 coef(1) alpha = .1 coef(1) beta = .1 ' get starting values from MA(1) equation eq_temp.ls y c ma(1) mu(1) = eq_temp.c(1) theta(1) = eq_temp.c(2) omega(1) = eq_temp.@se^2 ' set presample values of expressions in logl smpl s0 series sig2 = omega(1) series resma = 0 ' set up ARCH likelihood logl ll1 ll1.append @logl logl ll1.append res = y-mu(1) ll1.append resma = res - theta(1)*resma(-1) ll1.append sig2 = omega(1)+omega(2)*dumw-omega(2)*(alpha(1)+beta(1))*dumw(-1) +alpha(1)*resma(-1)^2 +beta(1)*sig2(-1) ll1.append z = resma/@sqrt(sig2) ll1.append logl = log(@dnorm(z)) - log(sig2)/2 ' estimate and display results smpl s1 ll1.ml(showopts, m=1000, c=1e-5) show ll1.output ^Top

EGARCH with generalized error distribution EGARCH1.PRG estimates Nelson’s (1991) exponential GARCH model assuming a Generalized Error Distribution (GED) for the innovations. The specification and likelihood is described in Hamilton (1994, pages 668–669). Note that this specification differs slightly from that estimated using the built-in EViews EGARCH with GED procedure. ' EGARCH1.PRG (1.0 - 6/29/98) ' example program for EViews LogL object ' revised for version 5.0 (3/30/2004) ' Estimate EGARCH with generalized error distribution (Nelson's specification) ' ' For discussion, see p. 668 of Hamilton, James D. (1994) Time Series Analysis, ' Princeton University Press. 'change path to program path %path = @runpath + "../data/" cd %path ' load workfile load gerus series y = 100*dlog(ger) ' set sample to 1/2/82-7/9/92 (10/6/86 is obs 3945) sample s0 2748 2750 sample s1 2751 5392 smpl s1 ' get starting values from Gaussian EGARCH-M equation eq1 eq1.arch(2,2,egarch,archm=var) y c y(-1) show eq1.output ' declare and initialize parameters ' coefs on lagged variance coef(2) delta delta(1) = eq1.c(8) delta(2) = eq1.c(9) ' coefs on lagged resids coef(2) alpha alpha(1) = eq1.c(5) alpha(2) = eq1.c(7) ' coef on asym term coef(1) chi chi(1) = eq1.c(6)/eq1.c(5) ' coefs on deterministic terms coef(2) rho rho(1) = 2*log(eq1.@se) rho(2) = 0 ' 0

Соседние файлы в папке docs