Re: using runmlwin in batch mode on Unix
Posted: Tue Dec 03, 2019 6:15 pm
got it! apologies (and much thanks) for the continued responses ... I fixed it and re-ran, now got an error reading "file /tmp/St29511.000004 not found", with log-file output (part 1):
Fit model using PQL2
. runmlwin distress_cats cons , ///
> level2(group: cons) ///
> level1(idcode:) ///
> discrete(distribution(binomial) link(logit) denominator(denominator) pql2)
> ///
> rigls maxiterations(100) ///
> nopause
---------------------------------------------------------- begin runmlwin ---
- if c(stata_version) >= 15 local user user
- if _caller() >= 12 version 12.0, `user'
= if _caller() >= 12 version 12.0, user
- if _caller() <= 9 version 9.0, `user'
= if _caller() <= 9 version 9.0, user
- display " "
- if replay() {
if ("`e(cmd)'" ~= "runmlwin") error 301
syntax [, Level(cilevel) CFORMAT(string) PFORMAT(string) SFORMAT(string) no
> HEADer noGRoup noCONTrast noFETable noRETable SD CORrelations OR IRr RRr MOde
> MEdian Zratio *]
runmlwin_display, level(`level') cformat(`cformat') pformat(`pformat') sfor
> mat(`sformat') `header' `group' `contrast' `fetable' `retable' `sd' `correlat
> ions' `or' `irr' `rrr' `mode' `median' `zratio'
makecns, displaycns
}
- else {
- syntax anything [if] [in], [Level(cilevel) CFORMAT(string) PFORMAT(string)
> SFORMAT(string) noHEADer noGRoup noCONTrast noFETable noRETable SD CORrelatio
> ns OR IRr RRr MOde MEdian Zratio *]
- timer clear 99
- timer on 99
- Estimates `0'
= Estimates distress_cats cons , level2(group: cons) level1(idcode:) di
> screte(distribution(binomial) link(logit) denominator(denominator) pql2) ri
> gls maxiterations(100) nopause
---------------------------------------------- begin runmlwin.Estimates ---
- if _caller() >= 12 version 12.0
- if _caller() <= 9 version 9.0
- local runmlwin_cmdline `0'
= local runmlwin_cmdline distress_cats cons , level2(group: cons) level
> 1(idcode:) discrete(distribution(binomial) link(logit) denominator(denomina
> tor) pql2) rigls maxiterations(100) nopause
- local maxlevels 1
- gettoken comma tmpstr : 0, parse(",") bind
- while strpos("`tmpstr'", "level") != 0 {
= while strpos(", level2(group: cons) level1(idcode:) discrete(distri
> bution(binomial) link(logit) denominator(denominator) pql2) rigls maxiterat
> ions(100) nopause", "level") != 0 {
- local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
= local tmpstr = substr(", level2(group: cons) level1(idcode:) discre
> te(distribution(binomial) link(logit) denominator(denominator) pql2) rigls
> maxiterations(100) nopause", strpos(", level2(group: cons) level1(idcod
> e:) discrete(distribution(binomial) link(logit) denominator(denominator) pq
> l2) rigls maxiterations(100) nopause", "level") + 5, .)
- local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
= local lev = substr("2(group: cons) level1(idcode:) discrete(distribut
> ion(binomial) link(logit) denominator(denominator) pql2) rigls maxiteration
> s(100) nopause", 1, strpos("2(group: cons) level1(idcode:) discrete(dis
> tribution(binomial) link(logit) denominator(denominator) pql2) rigls maxite
> rations(100) nopause", "(") - 1)
- if `=real("`lev'")' != . {
= if 2 != . {
- if `lev' > `maxlevels' {
= if 2 > 1 {
- local maxlevels `lev'
= local maxlevels 2
- }
- }
- }
- while strpos("`tmpstr'", "level") != 0 {
= while strpos("2(group: cons) level1(idcode:) discrete(distribution(bi
> nomial) link(logit) denominator(denominator) pql2) rigls maxiterations(100)
> nopause", "level") != 0 {
- local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
= local tmpstr = substr("2(group: cons) level1(idcode:) discrete(distri
> bution(binomial) link(logit) denominator(denominator) pql2) rigls maxiterat
> ions(100) nopause", strpos("2(group: cons) level1(idcode:) discrete(dis
> tribution(binomial) link(logit) denominator(denominator) pql2) rigls maxite
> rations(100) nopause", "level") + 5, .)
- local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
= local lev = substr("1(idcode:) discrete(distribution(binomial) link(log
> it) denominator(denominator) pql2) rigls maxiterations(100) nopause", 1,
> strpos("1(idcode:) discrete(distribution(binomial) link(logit) denominator(
> denominator) pql2) rigls maxiterations(100) nopause", "(") - 1)
- if `=real("`lev'")' != . {
= if 1 != . {
- if `lev' > `maxlevels' {
= if 1 > 2 {
local maxlevels `lev'
}
- }
- }
- while strpos("`tmpstr'", "level") != 0 {
= while strpos("1(idcode:) discrete(distribution(binomial) link(logit) de
> nominator(denominator) pql2) rigls maxiterations(100) nopause", "level")
> != 0 {
local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
if `=real("`lev'")' != . {
if `lev' > `maxlevels' {
local maxlevels `lev'
}
}
}
- if ("`verbose'"~="") display as text "Highest level: `maxlevels'"
= if (""~="") display as text "Highest level: 2"
- local levargs
- forvalues l = 2/`maxlevels' {
= forvalues l = 2/2 {
- local levargs LEVEL`l'(string) `levargs'
= local levargs LEVEL2(string)
- }
- syntax anything(name=eqlist id="equations" equalok) [if] [in], [ `levargs
> ' ] LEVEL1(string) [ Weights(string) Constraints(numlist >0 integer) IGLS RIG
> LS TOLerance(numlist >0 integer min=1 max=1) MAXIterations(numlist >0 integer
> min=1 max=1) FPSandwich RPSandwich INITSPrevious INITSB(namelist min=1 max=1
> ) INITSV(namelist min=1 max=1) INITSModel(namelist min=1 max=1) DISCRETE(stri
> ng) MCMC(string) SEED(numlist integer min=1 max=1) SIMulate(namelist min=1 ma
> x=1) MLWINPATH(string) MLWINSCRIPTPATH(string) VIEWMacro SAVEMacro(string) SA
> VEWorksheet(string) SAVEStata(string) USEWorksheet(string) Level(cilevel) CFO
> RMAT(string) PFORMAT(string) SFORMAT(string) OR IRr RRr SD CORrelations MOde
> MEdian Zratio noHEADer noGRoup noCONTrast noFETable noRETable noDrop FORCESor
> t FORCERecast noMLWIN noPause noVERSIONCHECK BATCh noSORT PLUGIN Verbose VIEW
> FULLMacro SAVEFULLMacro(string) SAVEEQuation(string) MLWINSETTINGS(string) ]
= syntax anything(name=eqlist id="equations" equalok) [if] [in], [ LEVEL2(s
> tring) ] LEVEL1(string) [ Weights(string) Constraints(numlist >0 integer) IGL
> S RIGLS TOLerance(numlist >0 integer min=1 max=1) MAXIterations(numlist >0 in
> teger min=1 max=1) FPSandwich RPSandwich INITSPrevious INITSB(namelist min=1
> max=1) INITSV(namelist min=1 max=1) INITSModel(namelist min=1 max=1) DISCRETE
> (string) MCMC(string) SEED(numlist integer min=1 max=1) SIMulate(namelist min
> =1 max=1) MLWINPATH(string) MLWINSCRIPTPATH(string) VIEWMacro SAVEMacro(strin
> g) SAVEWorksheet(string) SAVEStata(string) USEWorksheet(string) Level(cilevel
> ) CFORMAT(string) PFORMAT(string) SFORMAT(string) OR IRr RRr SD CORrelations
> MOde MEdian Zratio noHEADer noGRoup noCONTrast noFETable noRETable noDrop FOR
> CESort FORCERecast noMLWIN noPause noVERSIONCHECK BATCh noSORT PLUGIN Verbose
> VIEWFULLMacro SAVEFULLMacro(string) SAVEEQuation(string) MLWINSETTINGS(strin
> g) ]
- local doublevar 1
- if c(mode) == "batch" local batch = c(mode)
- if "`mlwinpath'" == "" & "`mlwinscriptpath'" ~= "" & "`batch'" ~= "" loca
> l mlwinpath `mlwinscriptpath'
= if "" == "" & "" ~= "" & "batch" ~= "" local mlwinpath
- if "`mlwinpath'" == "" & "$MLwiNScript_path" ~= "" & "`batch'" ~= "" loca
> l mlwinpath $MLwiNScript_path
= if "" == "" & "/udd/nkabe/ado/personal/mlnscript" ~= "" & "batch" ~= "" l
> ocal mlwinpath /udd/nkabe/ado/personal/mlnscript
- if "`mlwinpath'" == "" & "$MLwiN_path" ~= "" local mlwinpath $MLwiN_path
= if "/udd/nkabe/ado/personal/mlnscript" == "" & "/udd/nkabe/ado/personal/m
> lnscript" ~= "" local mlwinpath /udd/nkabe/ado/personal/mlnscript
- if "`mlwin'"~="nomlwin" & "`mlwinpath'" ~= "" {
= if ""~="nomlwin" & "/udd/nkabe/ado/personal/mlnscript" ~= "" {
- capture confirm file "`mlwinpath'"
= capture confirm file "/udd/nkabe/ado/personal/mlnscript"
- if _rc == 601 {
display as error "`mlwinpath' does not exist." _n
exit 198
}
- if "`versioncheck'" ~= "noversioncheck" {
= if "" ~= "noversioncheck" {
- quietly capture runmlwin_verinfo `mlwinpath'
= quietly capture runmlwin_verinfo /udd/nkabe/ado/personal/mlnscript
---------------------------------------------- begin runmlwin_verinfo ---
- version 9.0
- syntax [anything] [, *]
- tempname ver1
- tempname ver2
- tempname ver3
- tempname ver4
- scalar `ver1' = .
= scalar __000001 = .
- scalar `ver2' = .
= scalar __000002 = .
- scalar `ver3' = .
= scalar __000003 = .
- scalar `ver4' = .
= scalar __000004 = .
- capture plugin call runmlwin_getversion, `"`anything'"' "`ver1'" "`ver2
> '" "`ver3'" "`ver4'"
= capture plugin call runmlwin_getversion, `"/udd/nkabe/ado/personal/mlns
> cript"' "__000001" "__000002" "__000003" "__000004"
- if c(rc) == 199 {
- display as error "Warning: getversion plugin could not be loaded"
- }
- display as text "Version: " `ver1' as text "." `ver2' as text "." `ver3
> ' as text "." `ver4'
= display as text "Version: " __000001 as text "." __000002 as text "." _
> _000003 as text "." __000004
- return clear
- return scalar ver1 = `ver1'
= return scalar ver1 = __000001
- return scalar ver2 = `ver2'
= return scalar ver2 = __000002
- return scalar ver3 = `ver3'
= return scalar ver3 = __000003
- return scalar ver4 = `ver4'
= return scalar ver4 = __000004
------------------------------------------------ end runmlwin_verinfo ---
- if _rc == 198 {
display as error "`mlwinpath' is not a valid version of MLwiN"
exit 198
}
- local majorver `r(ver1)'
= local majorver .
- local minorver `r(ver2)'
= local minorver .
- local versionok = 1
- local versionold = 0
- if (`majorver' < 2) | (`majorver' == 2 & `minorver' < 36) local versionok
> = 0
= if (. < 2) | (. == 2 & . < 36) local versionok = 0
- if (`majorver' < 3) | (`majorver' == 3 & `minorver' < 03) local versionol
> d = 1
= if (. < 3) | (. == 3 & . < 03) local versionold = 1
- if `versionok' == 0 {
= if 1 == 0 {
display as error "runmlwin assumes MLwiN version 2.36 or higher. You can
> download the latest version of MLwiN at:" _n "https://www.bristol.ac.uk/cmm/s
> oftware/mlwin/download/upgrades.html." _n "If you want to ignore this warning
> and attempt to continue anyway you can use the noversioncheck option"
exit 198
}
- if `versionold' == 1 display as error "WARNING: Your version of MLwiN is
> out of date. You can download the latest version of MLwiN at:" _n "https://ww
> w.bristol.ac.uk/cmm/software/mlwin/download/upgrades.html"
= if 0 == 1 display as error "WARNING: Your version of MLwiN is out of date
> . You can download the latest version of MLwiN at:" _n "https://www.bristol.a
> c.uk/cmm/software/mlwin/download/upgrades.html"
- }
- local mlwinversion `majorver'.`minorver'
= local mlwinversion ...
- if "`mlwinversion'" ~= "..." {
= if "..." ~= "..." {
if `mlwinversion' < 3 {
local doublevar 0
}
}
- }
- marksample touse, novarlist
- if ("`discrete'"~="") {
= if ("distribution(binomial) link(logit) denominator(denominator) pql2"~="
> ") {
- local 0 , `discrete'
= local 0 , distribution(binomial) link(logit) denominator(denominator) pql
> 2
- syntax , Distribution(string) [Link(namelist min=1 max=1) DEnominator(var
> list numeric) Extra Offset(varname numeric) Proportion(varname) Basecategory(
> numlist integer min=1 max=1) MQL1 MQL2 PQL1 PQL2]
- local validdistributions normal binomial poisson nbinomial multinomial
- local checkdistribution :list distribution & validdistributions
- if "`checkdistribution'"=="" {
= if "binomial"=="" {
display as error "Invalid distribution(). Valid distributions are: normal
> , binomial, poisson, nbinomial, multinomial"
exit 198
}
- if ("`mql2'"=="" & "`pql1'"=="" & "`pql2'"=="") local linearization MQL1
= if (""=="" & ""=="" & "pql2"=="") local linearization MQL1
- if ("`mql2'"~="") local linearization MQL2
= if (""~="") local linearization MQL2
- if ("`pql1'"~="") local linearization PQL1
= if (""~="") local linearization PQL1
- if ("`pql2'"~="") local linearization PQL2
= if ("pql2"~="") local linearization PQL2
- if "`link'"=="" {
= if "logit"=="" {
if ("`distribution'"=="binomial") {
di as error "You must specify the link() function. Valid link functions f
> or the binomial distribution are: logit, probit and cloglog."
exit 198
}
if ("`distribution'"=="multinomial") {
di as error "You must specify the link() function. Valid link functions f
> or the multinomial distribution are: mlogit, ologit, oprobit, ocloglog."
exit 198
}
if ("`distribution'"=="poisson" | "`distribution'"=="nbinomial") local li
> nk log
}
- if "`link'" ~= "" {
= if "logit" ~= "" {
- local 0 , `link'
= local 0 , logit
- syntax , [Identity Logit Probit Cloglog Mlogit OLogit OProbit OCloglog LO
> G]
- if ("`distribution'"=="binomial") {
= if ("binomial"=="binomial") {
- if ~inlist("`link'","logit","probit","cloglog") {
= if ~inlist("logit","logit","probit","cloglog") {
display as error "Invalid link() function. Valid link functions for the b
> inomial distribution are: logit, probit and cloglog." _n
exit 198
}
- }
- if ("`distribution'"=="multinomial") {
= if ("binomial"=="multinomial") {
if ~inlist("`link'","mlogit","ologit","oprobit","ocloglog") {
display as error "Invalid link() function. Valid link functions for the m
> ultinomial distribution are: mlogit, ologit, oprobit, ocloglog." _n
exit 198
}
}
- if ("`distribution'"=="poisson") {
= if ("binomial"=="poisson") {
if ~inlist("`link'","log") {
display as error "Invalid link() function. Valid link functions for the p
> oisson distribution are: log." _n
exit 198
}
}
- if "`identity'" ~= "" local link identity
= if "" ~= "" local link identity
- if "`logit'" ~= "" local link logit
= if "logit" ~= "" local link logit
- if "`probit'" ~= "" local link probit
= if "" ~= "" local link probit
- if "`cloglog'" ~= "" local link cloglog
= if "" ~= "" local link cloglog
- if "`mlogit'" ~= "" local link mlogit
= if "" ~= "" local link mlogit
- if "`ologit'" ~= "" local link ologit
= if "" ~= "" local link ologit
- if "`oprobit'" ~= "" local link oprobit
= if "" ~= "" local link oprobit
- if "`ocloglog'" ~= "" local link ocloglog
= if "" ~= "" local link ocloglog
- if "`log'" ~= "" local link log
= if "" ~= "" local link log
- }
- }
- else {
local link identity
}
- tempname o
- .`o' = ._eqlist.new, eqopts(NOConstant) eqargopts(EQ) numdepvars(1) nonee
> dvarlist
= .__000002 = ._eqlist.new, eqopts(NOConstant) eqargopts(EQ) numdepvars(1)
> noneedvarlist
-class {
-instance:
- array n_depvars
- string needequal
- string noneedvarlist
- string wtypes
- string collinear
- string nocons
- string nocons_ignore
- double n_eq
- string gl_if
- string gl_in
- string gl_wgt
- string gl_options
- _optlist eq_opts_allowed
-class {
-instance:
- array options = {}
- array names = {}
-}
- array eq_list
- _optlist mark_opts
- array mark_list
- array mark_name
- _optlist rmcoll_opts
- array rmcoll_list
- array rmcoll_name
- _optlist rmdcoll_opts
- array rmdcoll_list
- array rmdcoll_name
-}
--------------------------------------------------- begin _eqlist.new ---
- version 9.2
- ._init
----------------------------------------------- begin _eqlist._init ---
- version 9.2
- .n_eq = 0
- .gl_if = ""
- .gl_in = ""
- .gl_wgt = ""
- .gl_options = ""
- .eq_list = {}
------------------------------------------------- end _eqlist._init ---
- ._setup `0'
= ._setup , eqopts(NOConstant) eqargopts(EQ) numdepvars(1) noneedvarlist
---------------------------------------------- begin _eqlist._setup ---
- version 9.2
- .mark_list = {}
- .mark_name = {}
- .mark_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- .rmcoll_list = {}
- .rmcoll_name = {}
- .rmcoll_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- .rmdcoll_list = {}
- .rmdcoll_name = {}
- .rmdcoll_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- syntax [, EQopts(namelist) EQARGopts(namelist) noNEEDVARLIST COMMONop
> ts(string asis) MARKopts(namelist) RMCOLLopts(namelist) RMDCOLLopts(namelist)
> NUMDEPvars(numlist integer >=0) NEEDEQUAL WTYPES(string) IGNORENOCONS ]
- .eq_opts_allowed.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- foreach opt of local eqopts {
- .eq_opts_allowed.addopt `opt'
= .eq_opts_allowed.addopt NOConstant
------------------------------------------- begin _optlist.addopt ---
- version 9
- syntax name(name=optspec) [, PASSthru]
- local mname = lower("`optspec'")
= local mname = lower("NOConstant")
- if "`passthru'" != "" {
= if "" != "" {
local optspec `optspec'(passthru)
}
- .options.Arrpush "`optspec'"
= .options.Arrpush "NOConstant"
- .names.Arrpush "`mname'"
= .names.Arrpush "noconstant"
--------------------------------------------- end _optlist.addopt ---
- }
- foreach opt of local eqargopts {
- .eq_opts_allowed.addopt `opt', passthru
= .eq_opts_allowed.addopt EQ, passthru
------------------------------------------- begin _optlist.addopt ---
- version 9
- syntax name(name=optspec) [, PASSthru]
- local mname = lower("`optspec'")
= local mname = lower("EQ")
- if "`passthru'" != "" {
= if "passthru" != "" {
- local optspec `optspec'(passthru)
= local optspec EQ(passthru)
- }
- .options.Arrpush "`optspec'"
= .options.Arrpush "EQ(passthru)"
- .names.Arrpush "`mname'"
= .names.Arrpush "eq"
--------------------------------------------- end _optlist.addopt ---
- }
- local i 0
- foreach opt of local markopts {
.mark_opts.addopt `opt', passthru
}
- local i 0
- foreach opt of local rmcollopts {
.rmcoll_opts.addopt `opt', passthru
}
- local i 0
- foreach opt of local rmdcollopts {
.rmdcoll_opts.addopt `opt', passthru
}
- .n_depvars.Arrdropall
- if "`numdepvars'" != "" {
= if "1" != "" {
- foreach ndep of local numdepvars {
- .n_depvars.Arrpush `ndep'
= .n_depvars.Arrpush 1
- }
- }
- else .n_depvars.Arrpush 1
- .needequal = "`needequal'"
= .needequal = ""
- .wtypes = "`wtypes'"
= .wtypes = ""
- .noneedvarlist = "`needvarlist'"
= .noneedvarlist = "noneedvarlist"
- .nocons_ignore = "`ignorenocons'"
= .nocons_ignore = ""
------------------------------------------------ end _eqlist._setup ---
----------------------------------------------------- end _eqlist.new ---
- .`o'.parse `eqlist'
= .__000002.parse distress_cats cons
------------------------------------------------- begin _eqlist.parse ---
- version 9.2
- ._init
----------------------------------------------- begin _eqlist._init ---
- version 9.2
- .n_eq = 0
- .gl_if = ""
- .gl_in = ""
- .gl_wgt = ""
- .gl_options = ""
- .eq_list = {}
------------------------------------------------- end _eqlist._init ---
- local MARKOPTLIST `"`.mark_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local MARKOPTLIST `""'
- local RMCOLLOPTLIST `"`.rmcoll_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local RMCOLLOPTLIST `""'
- local RMDCOLLOPTLIST `"`.rmdcoll_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local RMDCOLLOPTLIST `""'
- _parse expand EQ GL : 0, gweight common( `MARKOPTLIST' `RMCOLLOPTLIST'
> `RMDCOLLOPTLIST' COLlinear )
= _parse expand EQ GL : 0, gweight common( COLlinear )
- if `EQ_n' == 0 & "`.noneedvarlist'" == "" {
= if 1 == 0 & "noneedvarlist" == "" {
syntax varlist
}
- local rebind = `EQ_n' == 1
= local rebind = 1 == 1
- if `rebind' {
= if 1 {
- tokenize `"`0'"', parse(",()[]")
= tokenize `"distress_cats cons"', parse(",()[]")
- local rebind = `"`1'"' != "(" & `"`2'"' == "("
= local rebind = `"distress_cats cons"' != "(" & `""' == "("
- }
- if `rebind' {
= if 0 {
while `:length local 0' {
gettoken tok 0 : 0, parse(" ,") bind match(par)
if "`par'" == "(" {
local ZERO `"(`ZERO') (`tok') `0'"'
local 0
}
else if inlist("`tok'", "if", "in", ",") {
local ZERO `"(`ZERO') `tok' `0'"'
local 0
}
else {
local ZERO `"`ZERO' `tok'"'
}
}
_parse expand EQ GL : ZERO, gweight common( `MARKOPTLIST' `RMCOLLOPTLIS
> T' `RMDCOLLOPTLIST' COLlinear )
}
- forval i = 1/`EQ_n' {
= forval i = 1/1 {
- if `i' <= `.n_depvars.arrnels' {
= if 1 <= 1 {
- local ndep = `.n_depvars[`i']'
= local ndep = 1
- }
- .eq_list[`i'] = ._eqspec.new, numdepvars(`ndep') `.needequal' `.noneedv
> arlist' wtypes(`.wtypes') `.nocons_ignore'
= .eq_list[1] = ._eqspec.new, numdepvars(1) noneedvarlist wtypes()
-class {
-instance:
- double n_depvars
- double needequal
- double needvarlist
- string wtypes
- string name
- string depvars
- double hasequal
- string indepvars
- string other_markvars
- double nocons
- double nocons_ignore
- string offset
- double exposure
- double freeparm
- string if
- string in
- string wgt
- string options
-}
------------------------------------------------- begin _eqspec.new ---
- version 9.2
- syntax [, NUMDEPvars(numlist integer >=0 max=1) NEEDEQUAL noNEEDVARLI
> ST WTYPES(string) IGNORENOCONS ]
- .n_depvars = 1
- if `:list sizeof numdepvars' {
= if 1 {
- .n_depvars = `numdepvars'
= .n_depvars = 1
- }
- .needequal = ("`needequal'" != "")
= .needequal = ("" != "")
- .needvarlist = ("`needvarlist'" == "")
= .needvarlist = ("noneedvarlist" == "")
- .nocons_ignore = ("`ignorenocons'" != "")
= .nocons_ignore = ("" != "")
- .wtypes = "`wtypes'"
= .wtypes = ""
--------------------------------------------------- end _eqspec.new ---
- .eq_list[`i'].parse `.eq_opts_allowed.objkey':`EQ_`i''
= .eq_list[1].parse __key(4603c80):distress_cats cons
----------------------------------------------- begin _eqspec.parse ---
- version 9.2
- _on_colon_parse `0'
= _on_colon_parse __key(4603c80):distress_cats cons
------------------------------------------- begin _on_colon_parse ---
- version 8.2
- sreturn local before ""
- sreturn local after ""
- gettoken before after : 0, parse(":") bind match(par) quotes
- if "`par'" != "" {
= if "" != "" {
local before `"(`before')"'
}
- if `"`before'"' == ":" {
= if `"__key(4603c80)"' == ":" {
sreturn local after `"`after'"'
exit
}
- while `"`COLON'"' != ":" & `"`after'"' != "" {
= while `""' != ":" & `":distress_cats cons"' != "" {
- gettoken COLON after : after, parse(":") bind match(par) quotes
- if "`par'" != "" {
= if "" != "" {
local before `before' (`COLON')
local COLON
}
- else if `"`COLON'"' != ":" {
= else if `":"' != ":" {
local before `"`before' `COLON'"'
local COLON
}
- }
- while `"`COLON'"' != ":" & `"`after'"' != "" {
= while `":"' != ":" & `"distress_cats cons"' != "" {
gettoken COLON after : after, parse(":") bind match(par) quotes
if "`par'" != "" {
local before `before' (`COLON')
local COLON
}
else if `"`COLON'"' != ":" {
local before `"`before' `COLON'"'
local COLON
}
}
- if `"`COLON'"' != ":" {
= if `":"' != ":" {
di as err "'' found where ':' expected"
exit 198
}
- sreturn local before `"`before'"'
= sreturn local before `"__key(4603c80)"'
- sreturn local after `"`after'"'
= sreturn local after `"distress_cats cons"'
--------------------------------------------- end _on_colon_parse ---
- local ol `s(before)'
= local ol __key(4603c80)
- if `:list sizeof ol' {
= if 1 {
- local OPTLIST `"`.`ol'.dumpoptions'"'
-------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/2 {
- local optlist `optlist' `.options[`i']'
= local optlist NOConstant
- }
- local optlist `optlist' `.options[`i']'
= local optlist NOConstant EQ(passthru)
- }
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `"NOConstant EQ(passthru)"'
- class exit `"`optlist'"'
= class exit `"NOConstant EQ(passthru)"'
---------------------------------------- end _optlist.dumpoptions ---
= local OPTLIST `"NOConstant EQ(passthru)"'
- local OPTNAMES `"`.`ol'.dumpnames'"'
---------------------------------------- begin _optlist.dumpnames ---
- version 9
- forval i = 1/`.names.arrnels' {
= forval i = 1/2 {
- local namelist `namelist' `.names[`i']'
= local namelist noconstant
- }
- local namelist `namelist' `.names[`i']'
= local namelist noconstant eq
- }
- local namelist : list uniq namelist
- sreturn local namelist `"`namelist'"'
= sreturn local namelist `"noconstant eq"'
- class exit `"`namelist'"'
= class exit `"noconstant eq"'
------------------------------------------ end _optlist.dumpnames ---
= local OPTNAMES `"noconstant eq"'
- local NOCONS constant noconstant
- if `"`:list NOCONS & OPTNAMES'"' == "" {
= if `"noconstant"' == "" {
local NOCONS noCONStant
}
- else local NOCONS
- }
- local 0 `"`s(after)'"'
= local 0 `"distress_cats cons"'
- if `"`.wtypes'"' != "" {
= if `""' != "" {
local wgt "[`.wtypes']"
}
- syntax [anything(equalok)] [if] [in] `wgt' [, `OPTLIST' `NOCONS' *]
= syntax [anything(equalok)] [if] [in] [, NOConstant EQ(passthru) *]
- local HOLDIF `"`if'"'
= local HOLDIF `""'
- local HOLDIN `"`in'"'
= local HOLDIN `""'
- if "`wgt'" != "" & "`weight'" != "" {
= if "" != "" & "" != "" {
local HOLDWGT `"[`weight'`exp']"'
}
- gettoken NAME REST : anything, parse(":")
- if trim("`NAME'") == ":" {
= if trim("distress_cats cons") == ":" {
di as err "nothing found where equation name expected"
exit 198
}
- if `:list sizeof REST' {
= if 0 {
._confirm_eqname `NAME'
local NAME : list retok NAME
gettoken COLON anything : REST, parse(":")
}
- else {
- local NAME
- }
- gettoken DEPVARS REST : anything, parse("=") bind
- if "`DEPVARS'" == "=" {
= if "distress_cats cons" == "=" {
local REST : copy local anything
local DEPVARS
}
- if (`:length local DEPVARS' == 0 & `.n_depvars') {
= if (18 == 0 & 1) {
di as err "nothing found where depvar expected"
exit 198
}
- if `"`REST'"' == "" {
= if `""' == "" {
- if 0`.needequal' {
= if 00 {
if `.needvarlist' | (`:length local DEPVARS' != 0 & `.n_depvars') {
di as err "equal sign required to separate depvars from indepvars"
exit 198
}
}
- local DEPVARS
- local n_deps : list sizeof anything
- if `n_deps' != 0 | `.needvarlist' {
= if 2 != 0 | 0 {
- if `n_deps' < `.n_depvars' {
= if 2 < 1 {
error 102
}
- forval j = 1/`.n_depvars' {
= forval j = 1/1 {
- gettoken YY anything : anything
- local DEPVARS `DEPVARS' `YY'
= local DEPVARS distress_cats
- }
- local INDEPVARS : list retok anything
- }
- loca hasequal 0
- }
- else {
gettoken EQ INDEPVARS : REST, parse("=") bind
local hasequal 1
}
- if `:list sizeof DEPVARS' {
= if 1 {
- _fv_check_depvar `DEPVARS'
= _fv_check_depvar distress_cats
- tsunab DEPVARS : `DEPVARS'
= tsunab DEPVARS : distress_cats
Fit model using PQL2
. runmlwin distress_cats cons , ///
> level2(group: cons) ///
> level1(idcode:) ///
> discrete(distribution(binomial) link(logit) denominator(denominator) pql2)
> ///
> rigls maxiterations(100) ///
> nopause
---------------------------------------------------------- begin runmlwin ---
- if c(stata_version) >= 15 local user user
- if _caller() >= 12 version 12.0, `user'
= if _caller() >= 12 version 12.0, user
- if _caller() <= 9 version 9.0, `user'
= if _caller() <= 9 version 9.0, user
- display " "
- if replay() {
if ("`e(cmd)'" ~= "runmlwin") error 301
syntax [, Level(cilevel) CFORMAT(string) PFORMAT(string) SFORMAT(string) no
> HEADer noGRoup noCONTrast noFETable noRETable SD CORrelations OR IRr RRr MOde
> MEdian Zratio *]
runmlwin_display, level(`level') cformat(`cformat') pformat(`pformat') sfor
> mat(`sformat') `header' `group' `contrast' `fetable' `retable' `sd' `correlat
> ions' `or' `irr' `rrr' `mode' `median' `zratio'
makecns, displaycns
}
- else {
- syntax anything [if] [in], [Level(cilevel) CFORMAT(string) PFORMAT(string)
> SFORMAT(string) noHEADer noGRoup noCONTrast noFETable noRETable SD CORrelatio
> ns OR IRr RRr MOde MEdian Zratio *]
- timer clear 99
- timer on 99
- Estimates `0'
= Estimates distress_cats cons , level2(group: cons) level1(idcode:) di
> screte(distribution(binomial) link(logit) denominator(denominator) pql2) ri
> gls maxiterations(100) nopause
---------------------------------------------- begin runmlwin.Estimates ---
- if _caller() >= 12 version 12.0
- if _caller() <= 9 version 9.0
- local runmlwin_cmdline `0'
= local runmlwin_cmdline distress_cats cons , level2(group: cons) level
> 1(idcode:) discrete(distribution(binomial) link(logit) denominator(denomina
> tor) pql2) rigls maxiterations(100) nopause
- local maxlevels 1
- gettoken comma tmpstr : 0, parse(",") bind
- while strpos("`tmpstr'", "level") != 0 {
= while strpos(", level2(group: cons) level1(idcode:) discrete(distri
> bution(binomial) link(logit) denominator(denominator) pql2) rigls maxiterat
> ions(100) nopause", "level") != 0 {
- local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
= local tmpstr = substr(", level2(group: cons) level1(idcode:) discre
> te(distribution(binomial) link(logit) denominator(denominator) pql2) rigls
> maxiterations(100) nopause", strpos(", level2(group: cons) level1(idcod
> e:) discrete(distribution(binomial) link(logit) denominator(denominator) pq
> l2) rigls maxiterations(100) nopause", "level") + 5, .)
- local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
= local lev = substr("2(group: cons) level1(idcode:) discrete(distribut
> ion(binomial) link(logit) denominator(denominator) pql2) rigls maxiteration
> s(100) nopause", 1, strpos("2(group: cons) level1(idcode:) discrete(dis
> tribution(binomial) link(logit) denominator(denominator) pql2) rigls maxite
> rations(100) nopause", "(") - 1)
- if `=real("`lev'")' != . {
= if 2 != . {
- if `lev' > `maxlevels' {
= if 2 > 1 {
- local maxlevels `lev'
= local maxlevels 2
- }
- }
- }
- while strpos("`tmpstr'", "level") != 0 {
= while strpos("2(group: cons) level1(idcode:) discrete(distribution(bi
> nomial) link(logit) denominator(denominator) pql2) rigls maxiterations(100)
> nopause", "level") != 0 {
- local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
= local tmpstr = substr("2(group: cons) level1(idcode:) discrete(distri
> bution(binomial) link(logit) denominator(denominator) pql2) rigls maxiterat
> ions(100) nopause", strpos("2(group: cons) level1(idcode:) discrete(dis
> tribution(binomial) link(logit) denominator(denominator) pql2) rigls maxite
> rations(100) nopause", "level") + 5, .)
- local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
= local lev = substr("1(idcode:) discrete(distribution(binomial) link(log
> it) denominator(denominator) pql2) rigls maxiterations(100) nopause", 1,
> strpos("1(idcode:) discrete(distribution(binomial) link(logit) denominator(
> denominator) pql2) rigls maxiterations(100) nopause", "(") - 1)
- if `=real("`lev'")' != . {
= if 1 != . {
- if `lev' > `maxlevels' {
= if 1 > 2 {
local maxlevels `lev'
}
- }
- }
- while strpos("`tmpstr'", "level") != 0 {
= while strpos("1(idcode:) discrete(distribution(binomial) link(logit) de
> nominator(denominator) pql2) rigls maxiterations(100) nopause", "level")
> != 0 {
local tmpstr = substr("`tmpstr'", strpos("`tmpstr'", "level") + 5, .)
local lev = substr("`tmpstr'", 1, strpos("`tmpstr'", "(") - 1)
if `=real("`lev'")' != . {
if `lev' > `maxlevels' {
local maxlevels `lev'
}
}
}
- if ("`verbose'"~="") display as text "Highest level: `maxlevels'"
= if (""~="") display as text "Highest level: 2"
- local levargs
- forvalues l = 2/`maxlevels' {
= forvalues l = 2/2 {
- local levargs LEVEL`l'(string) `levargs'
= local levargs LEVEL2(string)
- }
- syntax anything(name=eqlist id="equations" equalok) [if] [in], [ `levargs
> ' ] LEVEL1(string) [ Weights(string) Constraints(numlist >0 integer) IGLS RIG
> LS TOLerance(numlist >0 integer min=1 max=1) MAXIterations(numlist >0 integer
> min=1 max=1) FPSandwich RPSandwich INITSPrevious INITSB(namelist min=1 max=1
> ) INITSV(namelist min=1 max=1) INITSModel(namelist min=1 max=1) DISCRETE(stri
> ng) MCMC(string) SEED(numlist integer min=1 max=1) SIMulate(namelist min=1 ma
> x=1) MLWINPATH(string) MLWINSCRIPTPATH(string) VIEWMacro SAVEMacro(string) SA
> VEWorksheet(string) SAVEStata(string) USEWorksheet(string) Level(cilevel) CFO
> RMAT(string) PFORMAT(string) SFORMAT(string) OR IRr RRr SD CORrelations MOde
> MEdian Zratio noHEADer noGRoup noCONTrast noFETable noRETable noDrop FORCESor
> t FORCERecast noMLWIN noPause noVERSIONCHECK BATCh noSORT PLUGIN Verbose VIEW
> FULLMacro SAVEFULLMacro(string) SAVEEQuation(string) MLWINSETTINGS(string) ]
= syntax anything(name=eqlist id="equations" equalok) [if] [in], [ LEVEL2(s
> tring) ] LEVEL1(string) [ Weights(string) Constraints(numlist >0 integer) IGL
> S RIGLS TOLerance(numlist >0 integer min=1 max=1) MAXIterations(numlist >0 in
> teger min=1 max=1) FPSandwich RPSandwich INITSPrevious INITSB(namelist min=1
> max=1) INITSV(namelist min=1 max=1) INITSModel(namelist min=1 max=1) DISCRETE
> (string) MCMC(string) SEED(numlist integer min=1 max=1) SIMulate(namelist min
> =1 max=1) MLWINPATH(string) MLWINSCRIPTPATH(string) VIEWMacro SAVEMacro(strin
> g) SAVEWorksheet(string) SAVEStata(string) USEWorksheet(string) Level(cilevel
> ) CFORMAT(string) PFORMAT(string) SFORMAT(string) OR IRr RRr SD CORrelations
> MOde MEdian Zratio noHEADer noGRoup noCONTrast noFETable noRETable noDrop FOR
> CESort FORCERecast noMLWIN noPause noVERSIONCHECK BATCh noSORT PLUGIN Verbose
> VIEWFULLMacro SAVEFULLMacro(string) SAVEEQuation(string) MLWINSETTINGS(strin
> g) ]
- local doublevar 1
- if c(mode) == "batch" local batch = c(mode)
- if "`mlwinpath'" == "" & "`mlwinscriptpath'" ~= "" & "`batch'" ~= "" loca
> l mlwinpath `mlwinscriptpath'
= if "" == "" & "" ~= "" & "batch" ~= "" local mlwinpath
- if "`mlwinpath'" == "" & "$MLwiNScript_path" ~= "" & "`batch'" ~= "" loca
> l mlwinpath $MLwiNScript_path
= if "" == "" & "/udd/nkabe/ado/personal/mlnscript" ~= "" & "batch" ~= "" l
> ocal mlwinpath /udd/nkabe/ado/personal/mlnscript
- if "`mlwinpath'" == "" & "$MLwiN_path" ~= "" local mlwinpath $MLwiN_path
= if "/udd/nkabe/ado/personal/mlnscript" == "" & "/udd/nkabe/ado/personal/m
> lnscript" ~= "" local mlwinpath /udd/nkabe/ado/personal/mlnscript
- if "`mlwin'"~="nomlwin" & "`mlwinpath'" ~= "" {
= if ""~="nomlwin" & "/udd/nkabe/ado/personal/mlnscript" ~= "" {
- capture confirm file "`mlwinpath'"
= capture confirm file "/udd/nkabe/ado/personal/mlnscript"
- if _rc == 601 {
display as error "`mlwinpath' does not exist." _n
exit 198
}
- if "`versioncheck'" ~= "noversioncheck" {
= if "" ~= "noversioncheck" {
- quietly capture runmlwin_verinfo `mlwinpath'
= quietly capture runmlwin_verinfo /udd/nkabe/ado/personal/mlnscript
---------------------------------------------- begin runmlwin_verinfo ---
- version 9.0
- syntax [anything] [, *]
- tempname ver1
- tempname ver2
- tempname ver3
- tempname ver4
- scalar `ver1' = .
= scalar __000001 = .
- scalar `ver2' = .
= scalar __000002 = .
- scalar `ver3' = .
= scalar __000003 = .
- scalar `ver4' = .
= scalar __000004 = .
- capture plugin call runmlwin_getversion, `"`anything'"' "`ver1'" "`ver2
> '" "`ver3'" "`ver4'"
= capture plugin call runmlwin_getversion, `"/udd/nkabe/ado/personal/mlns
> cript"' "__000001" "__000002" "__000003" "__000004"
- if c(rc) == 199 {
- display as error "Warning: getversion plugin could not be loaded"
- }
- display as text "Version: " `ver1' as text "." `ver2' as text "." `ver3
> ' as text "." `ver4'
= display as text "Version: " __000001 as text "." __000002 as text "." _
> _000003 as text "." __000004
- return clear
- return scalar ver1 = `ver1'
= return scalar ver1 = __000001
- return scalar ver2 = `ver2'
= return scalar ver2 = __000002
- return scalar ver3 = `ver3'
= return scalar ver3 = __000003
- return scalar ver4 = `ver4'
= return scalar ver4 = __000004
------------------------------------------------ end runmlwin_verinfo ---
- if _rc == 198 {
display as error "`mlwinpath' is not a valid version of MLwiN"
exit 198
}
- local majorver `r(ver1)'
= local majorver .
- local minorver `r(ver2)'
= local minorver .
- local versionok = 1
- local versionold = 0
- if (`majorver' < 2) | (`majorver' == 2 & `minorver' < 36) local versionok
> = 0
= if (. < 2) | (. == 2 & . < 36) local versionok = 0
- if (`majorver' < 3) | (`majorver' == 3 & `minorver' < 03) local versionol
> d = 1
= if (. < 3) | (. == 3 & . < 03) local versionold = 1
- if `versionok' == 0 {
= if 1 == 0 {
display as error "runmlwin assumes MLwiN version 2.36 or higher. You can
> download the latest version of MLwiN at:" _n "https://www.bristol.ac.uk/cmm/s
> oftware/mlwin/download/upgrades.html." _n "If you want to ignore this warning
> and attempt to continue anyway you can use the noversioncheck option"
exit 198
}
- if `versionold' == 1 display as error "WARNING: Your version of MLwiN is
> out of date. You can download the latest version of MLwiN at:" _n "https://ww
> w.bristol.ac.uk/cmm/software/mlwin/download/upgrades.html"
= if 0 == 1 display as error "WARNING: Your version of MLwiN is out of date
> . You can download the latest version of MLwiN at:" _n "https://www.bristol.a
> c.uk/cmm/software/mlwin/download/upgrades.html"
- }
- local mlwinversion `majorver'.`minorver'
= local mlwinversion ...
- if "`mlwinversion'" ~= "..." {
= if "..." ~= "..." {
if `mlwinversion' < 3 {
local doublevar 0
}
}
- }
- marksample touse, novarlist
- if ("`discrete'"~="") {
= if ("distribution(binomial) link(logit) denominator(denominator) pql2"~="
> ") {
- local 0 , `discrete'
= local 0 , distribution(binomial) link(logit) denominator(denominator) pql
> 2
- syntax , Distribution(string) [Link(namelist min=1 max=1) DEnominator(var
> list numeric) Extra Offset(varname numeric) Proportion(varname) Basecategory(
> numlist integer min=1 max=1) MQL1 MQL2 PQL1 PQL2]
- local validdistributions normal binomial poisson nbinomial multinomial
- local checkdistribution :list distribution & validdistributions
- if "`checkdistribution'"=="" {
= if "binomial"=="" {
display as error "Invalid distribution(). Valid distributions are: normal
> , binomial, poisson, nbinomial, multinomial"
exit 198
}
- if ("`mql2'"=="" & "`pql1'"=="" & "`pql2'"=="") local linearization MQL1
= if (""=="" & ""=="" & "pql2"=="") local linearization MQL1
- if ("`mql2'"~="") local linearization MQL2
= if (""~="") local linearization MQL2
- if ("`pql1'"~="") local linearization PQL1
= if (""~="") local linearization PQL1
- if ("`pql2'"~="") local linearization PQL2
= if ("pql2"~="") local linearization PQL2
- if "`link'"=="" {
= if "logit"=="" {
if ("`distribution'"=="binomial") {
di as error "You must specify the link() function. Valid link functions f
> or the binomial distribution are: logit, probit and cloglog."
exit 198
}
if ("`distribution'"=="multinomial") {
di as error "You must specify the link() function. Valid link functions f
> or the multinomial distribution are: mlogit, ologit, oprobit, ocloglog."
exit 198
}
if ("`distribution'"=="poisson" | "`distribution'"=="nbinomial") local li
> nk log
}
- if "`link'" ~= "" {
= if "logit" ~= "" {
- local 0 , `link'
= local 0 , logit
- syntax , [Identity Logit Probit Cloglog Mlogit OLogit OProbit OCloglog LO
> G]
- if ("`distribution'"=="binomial") {
= if ("binomial"=="binomial") {
- if ~inlist("`link'","logit","probit","cloglog") {
= if ~inlist("logit","logit","probit","cloglog") {
display as error "Invalid link() function. Valid link functions for the b
> inomial distribution are: logit, probit and cloglog." _n
exit 198
}
- }
- if ("`distribution'"=="multinomial") {
= if ("binomial"=="multinomial") {
if ~inlist("`link'","mlogit","ologit","oprobit","ocloglog") {
display as error "Invalid link() function. Valid link functions for the m
> ultinomial distribution are: mlogit, ologit, oprobit, ocloglog." _n
exit 198
}
}
- if ("`distribution'"=="poisson") {
= if ("binomial"=="poisson") {
if ~inlist("`link'","log") {
display as error "Invalid link() function. Valid link functions for the p
> oisson distribution are: log." _n
exit 198
}
}
- if "`identity'" ~= "" local link identity
= if "" ~= "" local link identity
- if "`logit'" ~= "" local link logit
= if "logit" ~= "" local link logit
- if "`probit'" ~= "" local link probit
= if "" ~= "" local link probit
- if "`cloglog'" ~= "" local link cloglog
= if "" ~= "" local link cloglog
- if "`mlogit'" ~= "" local link mlogit
= if "" ~= "" local link mlogit
- if "`ologit'" ~= "" local link ologit
= if "" ~= "" local link ologit
- if "`oprobit'" ~= "" local link oprobit
= if "" ~= "" local link oprobit
- if "`ocloglog'" ~= "" local link ocloglog
= if "" ~= "" local link ocloglog
- if "`log'" ~= "" local link log
= if "" ~= "" local link log
- }
- }
- else {
local link identity
}
- tempname o
- .`o' = ._eqlist.new, eqopts(NOConstant) eqargopts(EQ) numdepvars(1) nonee
> dvarlist
= .__000002 = ._eqlist.new, eqopts(NOConstant) eqargopts(EQ) numdepvars(1)
> noneedvarlist
-class {
-instance:
- array n_depvars
- string needequal
- string noneedvarlist
- string wtypes
- string collinear
- string nocons
- string nocons_ignore
- double n_eq
- string gl_if
- string gl_in
- string gl_wgt
- string gl_options
- _optlist eq_opts_allowed
-class {
-instance:
- array options = {}
- array names = {}
-}
- array eq_list
- _optlist mark_opts
- array mark_list
- array mark_name
- _optlist rmcoll_opts
- array rmcoll_list
- array rmcoll_name
- _optlist rmdcoll_opts
- array rmdcoll_list
- array rmdcoll_name
-}
--------------------------------------------------- begin _eqlist.new ---
- version 9.2
- ._init
----------------------------------------------- begin _eqlist._init ---
- version 9.2
- .n_eq = 0
- .gl_if = ""
- .gl_in = ""
- .gl_wgt = ""
- .gl_options = ""
- .eq_list = {}
------------------------------------------------- end _eqlist._init ---
- ._setup `0'
= ._setup , eqopts(NOConstant) eqargopts(EQ) numdepvars(1) noneedvarlist
---------------------------------------------- begin _eqlist._setup ---
- version 9.2
- .mark_list = {}
- .mark_name = {}
- .mark_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- .rmcoll_list = {}
- .rmcoll_name = {}
- .rmcoll_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- .rmdcoll_list = {}
- .rmdcoll_name = {}
- .rmdcoll_opts.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- syntax [, EQopts(namelist) EQARGopts(namelist) noNEEDVARLIST COMMONop
> ts(string asis) MARKopts(namelist) RMCOLLopts(namelist) RMDCOLLopts(namelist)
> NUMDEPvars(numlist integer >=0) NEEDEQUAL WTYPES(string) IGNORENOCONS ]
- .eq_opts_allowed.reset
-------------------------------------------- begin _optlist.reset ---
- version 9
- .options = {}
- .names = {}
---------------------------------------------- end _optlist.reset ---
- foreach opt of local eqopts {
- .eq_opts_allowed.addopt `opt'
= .eq_opts_allowed.addopt NOConstant
------------------------------------------- begin _optlist.addopt ---
- version 9
- syntax name(name=optspec) [, PASSthru]
- local mname = lower("`optspec'")
= local mname = lower("NOConstant")
- if "`passthru'" != "" {
= if "" != "" {
local optspec `optspec'(passthru)
}
- .options.Arrpush "`optspec'"
= .options.Arrpush "NOConstant"
- .names.Arrpush "`mname'"
= .names.Arrpush "noconstant"
--------------------------------------------- end _optlist.addopt ---
- }
- foreach opt of local eqargopts {
- .eq_opts_allowed.addopt `opt', passthru
= .eq_opts_allowed.addopt EQ, passthru
------------------------------------------- begin _optlist.addopt ---
- version 9
- syntax name(name=optspec) [, PASSthru]
- local mname = lower("`optspec'")
= local mname = lower("EQ")
- if "`passthru'" != "" {
= if "passthru" != "" {
- local optspec `optspec'(passthru)
= local optspec EQ(passthru)
- }
- .options.Arrpush "`optspec'"
= .options.Arrpush "EQ(passthru)"
- .names.Arrpush "`mname'"
= .names.Arrpush "eq"
--------------------------------------------- end _optlist.addopt ---
- }
- local i 0
- foreach opt of local markopts {
.mark_opts.addopt `opt', passthru
}
- local i 0
- foreach opt of local rmcollopts {
.rmcoll_opts.addopt `opt', passthru
}
- local i 0
- foreach opt of local rmdcollopts {
.rmdcoll_opts.addopt `opt', passthru
}
- .n_depvars.Arrdropall
- if "`numdepvars'" != "" {
= if "1" != "" {
- foreach ndep of local numdepvars {
- .n_depvars.Arrpush `ndep'
= .n_depvars.Arrpush 1
- }
- }
- else .n_depvars.Arrpush 1
- .needequal = "`needequal'"
= .needequal = ""
- .wtypes = "`wtypes'"
= .wtypes = ""
- .noneedvarlist = "`needvarlist'"
= .noneedvarlist = "noneedvarlist"
- .nocons_ignore = "`ignorenocons'"
= .nocons_ignore = ""
------------------------------------------------ end _eqlist._setup ---
----------------------------------------------------- end _eqlist.new ---
- .`o'.parse `eqlist'
= .__000002.parse distress_cats cons
------------------------------------------------- begin _eqlist.parse ---
- version 9.2
- ._init
----------------------------------------------- begin _eqlist._init ---
- version 9.2
- .n_eq = 0
- .gl_if = ""
- .gl_in = ""
- .gl_wgt = ""
- .gl_options = ""
- .eq_list = {}
------------------------------------------------- end _eqlist._init ---
- local MARKOPTLIST `"`.mark_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local MARKOPTLIST `""'
- local RMCOLLOPTLIST `"`.rmcoll_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local RMCOLLOPTLIST `""'
- local RMDCOLLOPTLIST `"`.rmdcoll_opts.dumpoptions'"'
---------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/0 {
local optlist `optlist' `.options[`i']'
}
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `""'
- class exit `"`optlist'"'
= class exit `""'
------------------------------------------ end _optlist.dumpoptions ---
= local RMDCOLLOPTLIST `""'
- _parse expand EQ GL : 0, gweight common( `MARKOPTLIST' `RMCOLLOPTLIST'
> `RMDCOLLOPTLIST' COLlinear )
= _parse expand EQ GL : 0, gweight common( COLlinear )
- if `EQ_n' == 0 & "`.noneedvarlist'" == "" {
= if 1 == 0 & "noneedvarlist" == "" {
syntax varlist
}
- local rebind = `EQ_n' == 1
= local rebind = 1 == 1
- if `rebind' {
= if 1 {
- tokenize `"`0'"', parse(",()[]")
= tokenize `"distress_cats cons"', parse(",()[]")
- local rebind = `"`1'"' != "(" & `"`2'"' == "("
= local rebind = `"distress_cats cons"' != "(" & `""' == "("
- }
- if `rebind' {
= if 0 {
while `:length local 0' {
gettoken tok 0 : 0, parse(" ,") bind match(par)
if "`par'" == "(" {
local ZERO `"(`ZERO') (`tok') `0'"'
local 0
}
else if inlist("`tok'", "if", "in", ",") {
local ZERO `"(`ZERO') `tok' `0'"'
local 0
}
else {
local ZERO `"`ZERO' `tok'"'
}
}
_parse expand EQ GL : ZERO, gweight common( `MARKOPTLIST' `RMCOLLOPTLIS
> T' `RMDCOLLOPTLIST' COLlinear )
}
- forval i = 1/`EQ_n' {
= forval i = 1/1 {
- if `i' <= `.n_depvars.arrnels' {
= if 1 <= 1 {
- local ndep = `.n_depvars[`i']'
= local ndep = 1
- }
- .eq_list[`i'] = ._eqspec.new, numdepvars(`ndep') `.needequal' `.noneedv
> arlist' wtypes(`.wtypes') `.nocons_ignore'
= .eq_list[1] = ._eqspec.new, numdepvars(1) noneedvarlist wtypes()
-class {
-instance:
- double n_depvars
- double needequal
- double needvarlist
- string wtypes
- string name
- string depvars
- double hasequal
- string indepvars
- string other_markvars
- double nocons
- double nocons_ignore
- string offset
- double exposure
- double freeparm
- string if
- string in
- string wgt
- string options
-}
------------------------------------------------- begin _eqspec.new ---
- version 9.2
- syntax [, NUMDEPvars(numlist integer >=0 max=1) NEEDEQUAL noNEEDVARLI
> ST WTYPES(string) IGNORENOCONS ]
- .n_depvars = 1
- if `:list sizeof numdepvars' {
= if 1 {
- .n_depvars = `numdepvars'
= .n_depvars = 1
- }
- .needequal = ("`needequal'" != "")
= .needequal = ("" != "")
- .needvarlist = ("`needvarlist'" == "")
= .needvarlist = ("noneedvarlist" == "")
- .nocons_ignore = ("`ignorenocons'" != "")
= .nocons_ignore = ("" != "")
- .wtypes = "`wtypes'"
= .wtypes = ""
--------------------------------------------------- end _eqspec.new ---
- .eq_list[`i'].parse `.eq_opts_allowed.objkey':`EQ_`i''
= .eq_list[1].parse __key(4603c80):distress_cats cons
----------------------------------------------- begin _eqspec.parse ---
- version 9.2
- _on_colon_parse `0'
= _on_colon_parse __key(4603c80):distress_cats cons
------------------------------------------- begin _on_colon_parse ---
- version 8.2
- sreturn local before ""
- sreturn local after ""
- gettoken before after : 0, parse(":") bind match(par) quotes
- if "`par'" != "" {
= if "" != "" {
local before `"(`before')"'
}
- if `"`before'"' == ":" {
= if `"__key(4603c80)"' == ":" {
sreturn local after `"`after'"'
exit
}
- while `"`COLON'"' != ":" & `"`after'"' != "" {
= while `""' != ":" & `":distress_cats cons"' != "" {
- gettoken COLON after : after, parse(":") bind match(par) quotes
- if "`par'" != "" {
= if "" != "" {
local before `before' (`COLON')
local COLON
}
- else if `"`COLON'"' != ":" {
= else if `":"' != ":" {
local before `"`before' `COLON'"'
local COLON
}
- }
- while `"`COLON'"' != ":" & `"`after'"' != "" {
= while `":"' != ":" & `"distress_cats cons"' != "" {
gettoken COLON after : after, parse(":") bind match(par) quotes
if "`par'" != "" {
local before `before' (`COLON')
local COLON
}
else if `"`COLON'"' != ":" {
local before `"`before' `COLON'"'
local COLON
}
}
- if `"`COLON'"' != ":" {
= if `":"' != ":" {
di as err "'' found where ':' expected"
exit 198
}
- sreturn local before `"`before'"'
= sreturn local before `"__key(4603c80)"'
- sreturn local after `"`after'"'
= sreturn local after `"distress_cats cons"'
--------------------------------------------- end _on_colon_parse ---
- local ol `s(before)'
= local ol __key(4603c80)
- if `:list sizeof ol' {
= if 1 {
- local OPTLIST `"`.`ol'.dumpoptions'"'
-------------------------------------- begin _optlist.dumpoptions ---
- version 9
- forval i = 1/`.options.arrnels' {
= forval i = 1/2 {
- local optlist `optlist' `.options[`i']'
= local optlist NOConstant
- }
- local optlist `optlist' `.options[`i']'
= local optlist NOConstant EQ(passthru)
- }
- local optlist : list uniq optlist
- sreturn local optlist `"`optlist'"'
= sreturn local optlist `"NOConstant EQ(passthru)"'
- class exit `"`optlist'"'
= class exit `"NOConstant EQ(passthru)"'
---------------------------------------- end _optlist.dumpoptions ---
= local OPTLIST `"NOConstant EQ(passthru)"'
- local OPTNAMES `"`.`ol'.dumpnames'"'
---------------------------------------- begin _optlist.dumpnames ---
- version 9
- forval i = 1/`.names.arrnels' {
= forval i = 1/2 {
- local namelist `namelist' `.names[`i']'
= local namelist noconstant
- }
- local namelist `namelist' `.names[`i']'
= local namelist noconstant eq
- }
- local namelist : list uniq namelist
- sreturn local namelist `"`namelist'"'
= sreturn local namelist `"noconstant eq"'
- class exit `"`namelist'"'
= class exit `"noconstant eq"'
------------------------------------------ end _optlist.dumpnames ---
= local OPTNAMES `"noconstant eq"'
- local NOCONS constant noconstant
- if `"`:list NOCONS & OPTNAMES'"' == "" {
= if `"noconstant"' == "" {
local NOCONS noCONStant
}
- else local NOCONS
- }
- local 0 `"`s(after)'"'
= local 0 `"distress_cats cons"'
- if `"`.wtypes'"' != "" {
= if `""' != "" {
local wgt "[`.wtypes']"
}
- syntax [anything(equalok)] [if] [in] `wgt' [, `OPTLIST' `NOCONS' *]
= syntax [anything(equalok)] [if] [in] [, NOConstant EQ(passthru) *]
- local HOLDIF `"`if'"'
= local HOLDIF `""'
- local HOLDIN `"`in'"'
= local HOLDIN `""'
- if "`wgt'" != "" & "`weight'" != "" {
= if "" != "" & "" != "" {
local HOLDWGT `"[`weight'`exp']"'
}
- gettoken NAME REST : anything, parse(":")
- if trim("`NAME'") == ":" {
= if trim("distress_cats cons") == ":" {
di as err "nothing found where equation name expected"
exit 198
}
- if `:list sizeof REST' {
= if 0 {
._confirm_eqname `NAME'
local NAME : list retok NAME
gettoken COLON anything : REST, parse(":")
}
- else {
- local NAME
- }
- gettoken DEPVARS REST : anything, parse("=") bind
- if "`DEPVARS'" == "=" {
= if "distress_cats cons" == "=" {
local REST : copy local anything
local DEPVARS
}
- if (`:length local DEPVARS' == 0 & `.n_depvars') {
= if (18 == 0 & 1) {
di as err "nothing found where depvar expected"
exit 198
}
- if `"`REST'"' == "" {
= if `""' == "" {
- if 0`.needequal' {
= if 00 {
if `.needvarlist' | (`:length local DEPVARS' != 0 & `.n_depvars') {
di as err "equal sign required to separate depvars from indepvars"
exit 198
}
}
- local DEPVARS
- local n_deps : list sizeof anything
- if `n_deps' != 0 | `.needvarlist' {
= if 2 != 0 | 0 {
- if `n_deps' < `.n_depvars' {
= if 2 < 1 {
error 102
}
- forval j = 1/`.n_depvars' {
= forval j = 1/1 {
- gettoken YY anything : anything
- local DEPVARS `DEPVARS' `YY'
= local DEPVARS distress_cats
- }
- local INDEPVARS : list retok anything
- }
- loca hasequal 0
- }
- else {
gettoken EQ INDEPVARS : REST, parse("=") bind
local hasequal 1
}
- if `:list sizeof DEPVARS' {
= if 1 {
- _fv_check_depvar `DEPVARS'
= _fv_check_depvar distress_cats
- tsunab DEPVARS : `DEPVARS'
= tsunab DEPVARS : distress_cats