* !gumbel.ado version 1.9.0 January/1998 STB-43 sg83 * Manuel Gonzalez & Aurelio Tobias * Parameter estimation for Gumbel distribution program define gumbel version 1.0 local varlist "req ex min(1) max(1)" local if "opt" local in "opt" local options "ITerate(int 100) LTol(real 1e-5) *" parse "`*'" parse "`varlist'", parse(" ") local X `1' preserve if ("`if'"!="") { qui keep `if' } if ("`in'"!="") { qui keep `in' } qui summ `X' local n=_result(1) local mX=_result(3) local vX=_result(4) local d0=(sqrt(6*`vX'))/3.141592654 local dif=1 local i=0 while (`dif'>`ltol') { local i=`i'+1 tempvar v0 v1 v2 v3 gen `v0'=exp(-`X'/`d0')*`X' qui summ `v0' local s0=_result(18) gen `v1'=exp(-`X'/`d0') qui summ `v1' local s1=_result(18) local fd=`d0'-`mX'+(`s0'/`s1') gen `v2'=exp(-`X'/`d0')*(`X'^2) qui summ `v2' local s2=_result(18) gen `v3'=exp(-`X'/`d0') qui summ `v3' local s3=_result(18) local s3=(`s3'*`d0')^2 local fdd=1+((`s2'*`s1')-(`s0'^2))/`s3' local d1=`d0'-(`fd'/`fdd') local dif=abs(`d0'-`d1') local d0=`d1' if (`i'>`iterate') { display in red "Estimation procedure did not converge after " `iterate' " iterations" exit } } tempvar b0 b1 gen `b0'=(exp(-`X'/`d0'))*`X' qui summ `b0' local z0=_result(18) gen `b1'=exp(-`X'/`d0') qui summ `b1' local z1=_result(18) local delta=`mX'-(`z0'/`z1') local lambda=(-`delta')*ln(`z1'/`n') display display in green _col(11) "Parameter estimation for Gumbel distribution" _newline(1) display in green _col(1) "Variable |" _col(13) "Delta" _col(27) "Lambda" _col(41) "Num.Iterations" display in green "---------+---------------------------------------------" display in green _col(1) "`X'" _col(10) "|" in yellow _col (13) `delta' _col(27) `lambda' _col(41) `i' mac def S_E_de `delta' mac def S_E_la `lambda' mac def S_E_it `i' mac def S_E_ltol `ltol' mac def S_E_nobs `n' end