📄 stptime.ado
字号:
local mdup 67
}
restore
local j=`j'+1
}
di as txt "{hline 11}{c +}{hline `mdup'}"
local i=`i'+1
}
if index(`"`options'"',"smr")==0 {
qui Mstptime `if', at(`at') `trim' /*
*/ `show' title(`"`title'"') titpos(`titpos') /*
*/ `options' `ddopt' level(`level') `jackknife'
di as txt " total" _col(12) "{c |}" _col(16) /*
*/ as res %10.`dec' r(ptime) /*
*/ _col(29) %8.0g r(failures) /*
*/ _col(39) %10.`dec' /*
*/ r(rate) _col(51) %9.`dec' r(lb) /*
*/ _col(63) %9.`dec' r(ub)
}
else {
qui Mstptime `if', at(`at') `trim' /*
*/ `show' title(`"`title'"') titpos(`titpos') /*
*/ `options' `ddopt' level(`level') `jackknife'
di as txt " total" _col(12) "{c |}" _col(16) /*
*/ as res %10.`dec' r(ptime) /*
*/ _col(29) %8.0g r(failures) /*
*/ _col(39) %8.`dec' /*
*/ r(expected) _col(48) /*
*/ %9.`dec' r(smr) /*
*/ _col(59) %9.`dec' r(lb) /*
*/ _col(71) %9.`dec' r(ub)
}
ret add
}
end
program define Mstptime, rclass
syntax [if], /*
*/ [ AT(numlist >=0 sort) noPREserve DD(integer -100) TRIM /*
*/ OUTput(string asis) SMR(string) Using(string) title(string) /*
*/ titpos(string) Level(cilevel) PER(real 1) noSHow Jackknife ]
if `dd'==-100 {
local dec="0g"
}
else {
local dec="`dd'f"
}
if "`per'"~="" {
local mper="* `per'"
}
tempvar touse
st_smpl `touse' `"`if'"' `"`in'"' `"`by'"' `""'
preserve
qui keep if `touse'
qui keep _* `_dta[st_id]' `_dta[st_wv]'
if `"`smr'"'~="" { /* smr(filename varname ) */
tokenize `"`smr'"'
if `"`2'"'=="" | `"`3'"'~="" {
di as err /*
*/"option smr() requires two variable:" /*
*/ "a grouping variable and a rate variable"
exit 198
}
local mergvar=`"`1'"'
local ratevar=`"`2'"'
if "`using'"=="" {
di as err /*
*/"option smr requires option using() containing" /*
*/ _n "the reference population filename"
exit 198
}
local file=trim(`"`using'"')
}
if "`using'" != "" & `"`smr'"' == "" {
di as err "smr() option required when specifying using() option"
exit 198
}
if "`at'"=="" {
if "`trim'"~="" {
noi di as err /*
*/ "at() option required when specifying trim option"
exit 198
}
qui sum _t
local at=r(max)
local atflg 1
}
qui stsplit _group if `touse' , at(`at') nopreserve `trim'
if "`trim'"~="" {
qui count if _st
if r(N)==0 {
di as err "invalid combination of at() and trim options"
di as err "no observations remaining"
exit 2000
}
}
local myat="0"
tokenize `at'
while "`1'"~="" {
local myat "`myat',`1'"
mac shift
}
local mgrp=max(`myat')
if `"`smr'"'~="" {
qui gen `mergvar'=_group
sort `mergvar'
qui merge `mergvar' using `"`file'"'
local smropt="smr(`ratevar')"
qui keep if _merge==3
qui count
if r(N)==0 {
noi di as err "no observations merged, at()" /*
*/ " option not specified or incorrectly specified "
exit 2000
}
drop _merge
}
st_show `show'
tempfile myfile1
local outopt=`"output(`myfile1')"'
qui `vv' strate _group, `outopt' level(`level') per(`per') `jackknife'
tempfile myfile2
local outopt=`"output(`myfile2')"'
qui `vv' strate, `outopt' level(`level') per(`per') `jackknife'
if "`smr'"=="" {
qui use `"`myfile1'"', clear
qui append using `"`myfile2'"'
if "`trim'"~="" {
qui replace _group=`mgrp' if _group==.
}
else {
qui replace _group=1.0x+3fe if _group==.
}
sort _group
qui save `"`myfile2'"', replace
MYdisp /*
*/ `level' "`trim'" `dec' "`atflg'" `titpos' "`title'" "`mper'"
if `"`output'"'~="" {
qui save `output'
}
ret scalar ub=_Upper[_N]
ret scalar lb=_Lower[_N]
ret scalar rate=_Rate[_N]
ret scalar failures=_D[_N]
ret scalar ptime=_Y[_N]
exit
}
else {
tempfile myfile3
local outopt=`"output(`myfile3')"'
qui `vv' strate _group, /*
*/ `outopt' level(`level') per(`per') `smropt' `jackknife'
tempfile myfile4
local outopt=`"output(`myfile4')"'
qui `vv' strate, `outopt' level(`level') /*
*/ per(`per') `smropt' `jackknife'
qui use `"`myfile1'"', clear
qui append using `"`myfile2'"'
qui replace _group=1.0x+3fe if _group==.
keep _Y _group
sort _group
qui save `"`myfile2'"', replace
qui use `"`myfile3'"', clear
qui append using `"`myfile4'"'
qui replace _group=1.0x+3fe if _group==.
sort _group
merge _group using `"`myfile2'"'
qui keep if _merge==3
if "`trim'"~="" {
qui replace _group=`mgrp' if _group>=1e+307
}
MYdisp2 /*
*/ `level' "`trim'" `dec' "`atflg'" `titpos' `title' "`mper'"
if `"`output'"'~="" {
qui save `output'
}
ret scalar ub=_Upper[_N]
ret scalar lb=_Lower[_N]
ret scalar smr=_SMR[_N]
ret scalar expected=_E[_N]
ret scalar failures=_D[_N]
ret scalar ptime=_Y[_N]
}
end
prog def MYdisp
args level trim dec atflg titpos title mper
qui replace _Y=_Y `mper'
local cil `=string(`level')'
local cil `=length("`cil'")'
if `cil' < 5 {
local space ""
local cilabel "Conf. Interval"
}
else {
local space " "
local cilabel "Conf.Interval"
}
noi di
di as txt "Cohort" _col(12) "{c |}" `titpos' `"`title'"' /*
*/ _col(29) "failures"/*
*/ _col(45) "rate" /*
*/ _col(`=54-`cil'') `"`space'[`=strsubdp("`level'")'% `cilabel']"' _n /*
*/ "{hline 11}{c +}{hline 59}"
local i 1
while `i'<_N-1 {
di as txt _col(1) "(" %-4.0g _group[`i'] "-" /*
*/ %4.0g _group[`i'+1] "]" /*
*/ _col(12) "{c |}" _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %10.`dec' _Rate[`i'] /*
*/ _col(51) %9.`dec' _Lower[`i'] /*
*/ _col(63) %9.`dec' _Upper[`i']
local i=`i'+1
}
local i=_N-1
if "`trim'"=="" & "`atflg'"=="" {
di as txt _col(6) ">" %4.0g _group[`i'] _col(12) "{c |}" /*
*/ _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %10.`dec' _Rate[`i'] /*
*/ _col(51) %9.`dec' _Lower[`i'] /*
*/ _col(63) %9.`dec' _Upper[`i'] /*
*/ as txt _n "{hline 11}{c +}{hline 59}"
}
else if "`atflg'"=="" {
di as txt _col(1) "(" %-4.0g _group[`i'] "-" /*
*/ %4.0g _group[`i'+1] "]" /*
*/ _col(12) "{c |}" _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %10.`dec' _Rate[`i'] /*
*/ _col(51) %9.`dec' _Lower[`i'] /*
*/ _col(63) %9.`dec' _Upper[`i'] /*
*/ as txt _n "{hline 11}{c +}{hline 59}"
}
local i=_N
di as txt " total" _col(12) "{c |}" _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %10.`dec' _Rate[`i'] /*
*/ _col(51) %9.`dec' _Lower[`i'] /*
*/ _col(63) %9.`dec' _Upper[`i']
end
prog def MYdisp2
args level trim dec atflg titpos title mper
qui replace _Y=_Y `mper'
local cil `=string(`level')'
local cil `=length("`cil'")'
if `cil' < 5 {
local space ""
local cilabel "Conf. Interval"
}
else {
local space " "
local cilabel "Conf.Interval"
}
noi di
di as txt _col(12) /*
*/ "{c |}" _col(29) "observed" _col(39) "expected"
di as txt "Cohort" _col(12) "{c |}" `titpos' `"`title'"' /*
*/ _col(29) "failures" _col(39) "failures" /*
*/ _col(54) "SMR" /*
*/ _col(`=62-`cil'') `"`space'[`=strsubdp("`level'")'% `cilabel']"' _n /*
*/ "{hline 11}{c +}{hline 67}"
local i 1
while `i'<_N-1 {
di as txt _col(1) "(" %-4.0g _group[`i'] "-" /*
*/ %4.0g _group[`i'+1] "]" /*
*/ _col(12) "{c |}" _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %8.0g _E[`i'] /*
*/ _col(50) %7.`dec' _SMR[`i'] _col(59) %9.`dec' _Lower[`i'] /*
*/ _col(71) %9.`dec' _Upper[`i']
local i=`i'+1
}
local i=_N-1
if "`trim'"=="" & "`atflg'"=="" {
di as txt _col(6) ">" %4.0g _group[`i'] _col(12) "{c |}" /*
*/ _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %8.0g _E[`i'] /*
*/ _col(50) %7.`dec' _SMR[`i'] _col(59) %9.`dec' _Lower[`i'] /*
*/ _col(71) %9.`dec' _Upper[`i'] /*
*/ as txt _n "{hline 11}{c +}{hline 67}"
}
else if "`atflg'"=="" {
di as txt _col(1) "(" %-4.0g _group[`i'] "-" %4.0g /*
*/ _group[`i'+1] "]" /*
*/ _col(12) "{c |}" _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %8.0g _E[`i'] /*
*/ _col(50) %7.`dec' _SMR[`i'] _col(59) %9.`dec' _Lower[`i'] /*
*/ _col(71) %9.`dec' _Upper[`i'] /*
*/ as txt _n "{hline 11}{c +}{hline 67}"
}
local i=_N
di as txt " total" _col(12) _col(12) "{c |}" /*
*/ _col(16) as res %10.`dec' _Y[`i'] /*
*/ _col(29) %8.0g _D[`i'] _col(39) %8.0g _E[`i'] /*
*/ _col(50) %7.`dec' _SMR[`i'] _col(59) %9.`dec' _Lower[`i'] /*
*/ _col(71) %9.`dec' _Upper[`i']
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -