📄 _coef_table.ado
字号:
if `tsdvn' > 0 {
.`Tab'.titlefmt %-12s . . . . . .
forval i = 1/`tsdvn' {
.`Tab'.titles "`op_`i''" "" "" "" "" "" ""
}
.`Tab'.titlefmt %12s . . . . . .
}
.`Tab'.titles "`depvar'" /// 1
"`coef'" /// 2
"Std. Err." /// 3
"`stat'" /// 4
"P>|`stat'|" /// 5
`"[`=strsubdp("`level'")'% Conf. Interval]"' "" // 6 7
end
program MLineTSop
args c_op c_dv c_n COLON op vn
local n 1
// operator fits on a line by itself
if `:length local op' < 12 {
c_local `c_op'1 `"`op'."'
local vn = abbrev(`"`vn'"',12)
c_local `c_dv' `"`vn'"'
c_local `c_n' `n'
exit
}
c_local `c_op'`n' = substr(`"`op'"',1,12)
local op = substr(`"`op'"',13,.)
while `:length local op' >= 12 {
local ++n
c_local `c_op'`n' = substr(`"`op'"',1,12)
local op = substr(`"`op'"',13,.)
}
if `"`op'"' == "" {
local vn = abbrev(`"`vn'"', 12)
c_local `c_dv' `"`vn'"'
}
else {
local rest `"`op'.`vn'"'
if `:length local rest' <= 12 {
c_local `c_dv' `"`rest'"'
}
else {
local ++n
c_local `c_op'`n' `"`op'."'
local vn = abbrev(`"`vn'"', 12)
c_local `c_dv' `"`vn'"'
}
}
c_local `c_n' `n'
end
program DisplayEqns
_on_colon_parse `0'
local eqlist `"`s(before)'"'
if (`: word count `eqlist'' == 0) exit
local 0 `s(after)'
syntax name(name=Tab) [, ///
First ///
EForm(passthru) ///
ERRormat(name) ///
* ///
]
local coleq : coleq e(b), quote
local coleq : list clean coleq
local colna : colna e(b)
local neq : word count `coleq'
// index of first element
local ucoleq : list uniq coleq
local start : list posof "`:word 1 of `eqlist''" in coleq
// loop through the coefficients, displaying those that belong to the
// specified equations
local i `start'
local oldeq // start fresh
while `i' <= `neq' {
local eq : word `i' of `coleq'
local qeq `""`eq'""'
// exit if the current equation is not in the list
local break = (!`:list eq in eqlist' & !`:list qeq in eqlist')
if (`break') continue, break
local na : word `i' of `colna'
local nna : word `=`i'+1' of `colna'
if `"`eq'"' != `"`oldeq'"' {
if "`offset'" != "" {
// display offset of previous equation
Offset `Tab' `"`offset'"' `"`offtyp'"'
local offset
local offtyp
}
.`Tab'.sep
if "`first'" == "" & `"`eq'"' != "_" {
local abeq = abbrev(`"`eq'"',12)
// columns 1 2 3 4 5 6 7
.`Tab'.strcolor result . . . . . .
.`Tab'.strfmt %-12s . . . . . .
.`Tab'.row `"`abeq'"' "" "" "" "" "" ""
.`Tab'.strcolor text . . . . . .
.`Tab'.strfmt %12s . . . . . .
}
local oldeq `"`eq'"'
// get offset of current equation
local ieq : list posof `"`eq'"' in ucoleq
_get_offopt `e(offset)'`e(offset`ieq')'
local offset `s(offvar)'
if "`s(offopt)'" == "offset(`offset')" {
local offtyp "(offset)"
}
else if "`s(offopt)'" != "" {
local offtyp "(exposure)"
}
}
if `"`eform'"' == "" | "`na'" != "_cons" {
gettoken op vn : na, parse(".")
gettoken nop nvn : nna, parse(".")
if "`nvn'" == ".`na'" | ".`oldvn'" == ".`na'" {
local nulltsop nulltsop
local vn ".`na'"
}
else local nulltsop
if "`vn'" != "" & ".`oldvn'" != "`vn'" {
local vn = abbrev(substr("`vn'",2,.),12)
// columns 1 2 3 4 5 6 7
.`Tab'.row `"`vn'"' "" "" "" "" "" ""
local oldvn `vn'
}
else if "`vn'" == "" {
local oldvn
}
if "`errormat'" != "" {
local erropt error(`=`errormat'[1,`i']')
}
Row `Tab' `"`qeq'"' "`na'", ///
`options' `eform' `erropt' `nulltsop'
}
local ++i
}
if "`offset'" != "" {
// display offset of last displayed equation
Offset `Tab' `"`offset'"' `"`offtyp'"'
local offset
local offtyp
}
end
program Offset
args Tab offset offtyp
local offset = abbrev("`offset'", 12)
.`Tab'.strcolor . text . . . . .
.`Tab'.row `"`offset'"' `"`offtyp'"' "" "" "" "" ""
.`Tab'.strcolor . result . . . . .
end
program Row
syntax anything [, ///
Level(cilevel) ///
EForm(passthru) ///
ERRor(integer 0) ///
df(real 0) ///
z(name) ///
NULLTSOP ///
]
local 0 `anything'
args Tab eq na
local eq : list clean eq
tempname b se t p ll ul
if `"`eq'"' != "_" {
scalar `b' = [`eq']_b[`na']
scalar `se' = [`eq']_se[`na']
}
else {
scalar `b' = _b[`na']
scalar `se' = _se[`na']
}
if `se' == 0 & `"`e(census)'"' == "1" {
scalar `t' = .
scalar `p' = .
scalar `ll' = .
scalar `ul' = .
}
else {
if `se' == 0 {
scalar `se' = .
}
scalar `t' = `b'/`se'
if missing(`df') {
scalar `p' = 2*norm(-abs(`t'))
}
else scalar `p' = 2*ttail(`df',abs(`t'))
scalar `ll' = `b' - `se'*`z'
scalar `ul' = `b' + `se'*`z'
if "`eform'" != "" {
scalar `b' = exp(`b')
scalar `se' = `b'*`se'
scalar `ll' = exp(`ll')
scalar `ul' = exp(`ul')
}
}
if "`nulltsop'" != "" {
local na "--.`na'"
}
gettoken op vn : na, parse(".")
if "`vn'" != "" {
if `:length local op' == 1 {
local op `op'1
}
local na `"`op'."'
while `:length local na' > 12 {
.`Tab'.strfmt %11s . . . . . .
local n1 = substr("`na'",1,10)
.`Tab'.row "`n1'" "" "" "" "" "" ""
local na = substr("`na'",11,.)
}
.`Tab'.strfmt %12s . . . . . .
}
else local na = abbrev("`na'",12)
local error1 " (no observations)"
local error2 " (stratum with 1 PSU detected)"
local error3 " (sum of weights equals zero)"
local error4 " (denominator estimate equals zero)"
local error5 " (dropped)"
if `error' {
.`Tab'.row "`na'" "`error`error''" "" "" "" "" ""
}
else if `b'== 0 & `se' >= . {
.`Tab'.row "`na'" "`error5'" "" "" "" "" ""
}
else {
.`Tab'.row "`na'" `b' `se' `t' `p' `ll' `ul'
}
end
program GetEDiparm
args c_diparm
if `"`e(diparm)'`e(diparm1)'"' != "" {
if `"`e(diparm)'"' != "" {
local i 0
local ediparmi `"`e(diparm)'"'
}
else if `"`e(diparm1)'"' != "" {
local i 1
local ediparmi `"`e(diparm1)'"'
}
}
while `"`ediparmi'"' != "" {
local diparm `diparm' diparm(`ediparmi')
local ++i
local ediparmi `"`e(diparm`i')'"'
}
c_local `c_diparm' `diparm'
end
program Chk4Scalars
syntax namelist
local nonscalars `: r(macros)' `: r(matrices)'
local badmac : list nonscalars & namelist
if "`badmac'" != "" {
gettoken name : badmac
di as err "type mismatch: e(`name') is not a scalar"
exit 109
}
end
program Chk4PosInt
args ename
if `"`e(`ename')'"' != "" {
capture confirm integer number `e(`ename')'
if !c(rc) {
if `e(`ename')' > 0 {
c_local `ename' `e(`ename')'
}
}
}
end
program Chk4NNInt
args ename
if `"`e(`ename')'"' != "" {
capture confirm integer number `e(`ename')'
if !c(rc) {
if `e(`ename')' >= 0 {
c_local `ename' `e(`ename')'
}
}
}
end
program Chk4Int
args ename
if `"`e(`ename')'"' != "" {
capture confirm integer number `e(`ename')'
if !c(rc) {
c_local `ename' `e(`ename')'
}
}
end
exit
NOTES:
-_coef_table- looks at the following scalars to determine which equations are
put in the table of results, and how they are put there:
e(k_eq) -- total number of equations, missing value implies 1
e(k_aux) -- number of ancillary parameters (each an equation)
e(k_extra) -- extra equations
e(k_eform) -- the first `e(k_eform)' equations' coefficients will
be exponentiated when an 'eform' type option is
specified; default is 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -