📄 ltable.ado
字号:
local lines `lines' ///
(connected `y' `x' ///
if `byid'==`i', ///
sort ///
yvarlabel(`"`yvl'"') ///
ytitle(`"`yttl'"') ///
`myopts' ///
)
local j = `j' + `bysize'[`j']
}
version 8: graph twoway ///
`lines' ///
|| , ///
`draw' ///
`twopts' ///
// blank
}
}
/*---------------------- TABLE PRESENTATION ----------------*/
if `"`surviva'"'!="" & `"`table'"'=="" {
#delimit ;
noisily di _n in smcl in gr
_col(18) "Beg."
_col(55) "Std."
_n
_col( 4) "Interval" _col(17) "Total"
_col(25) "Deaths" _col(34) "Lost"
_col(42) "Survival" _col(54) "Error"
_col(64) `"[`level'% Conf. Int.]"'
_n
"{hline 79}" ;
#delimit cr
local i 1
while `i'<=_N {
if `"`g'"'~=`"`Group'"' & `g'[`i']!=`g'[`i'-1] {
* noisily di in gr `"`g' "' `g'[`i']
noisily Ghdr "`g'" `i'
}
#delimit ;
noisily di in gr
%5.0f `I0'[`i']
%6.0f `I1'[`i']
in ye
%10.0f `start'[`i']
%9.0f `dead'[`i']
%7.0f `lost'[`i']-`dead'[`i']
%11.4f `S'[`i']
%10.4f `seF'[`i']
%11.4f `loS'[`i']
%10.4f `upS'[`i']
;
#delimit cr
local i=`i'+1
}
noi di in smcl in gr "{hline 79}"
}
if `"`failure'"'!="" & `"`table'"'=="" {
#delimit ;
noisily di _n in smcl in gr
_col(18) "Beg."
_col(44) "Cum." _col(55) "Std."
_n
_col( 4) "Interval" _col(17) "Total"
_col(25) "Deaths" _col(34) "Lost"
_col(42) "Failure" _col(54) "Error"
_col(64) `"[`level'% Conf. Int.]"'
_n
"{hline 79}" ;
#delimit cr
local i 1
while `i'<=_N {
if `"`g'"'~=`"`Group'"' & `g'[`i']!=`g'[`i'-1] {
noisily di in gr `"`g' "' `g'[`i']
}
#delimit ;
noisily di in gr
%5.0f `I0'[`i']
%6.0f `I1'[`i']
in ye
%10.0f `start'[`i']
%9.0f `dead'[`i']
%7.0f `lost'[`i']-`dead'[`i']
%11.4f `F'[`i']
%10.4f `seF'[`i']
%11.4f `loF'[`i']
%10.4f `upF'[`i']
;
#delimit cr
local i=`i'+1
}
noi di in smcl in gr "{hline 79}"
}
if `"`hazard'"'!="" & `"`table'"'=="" {
#delimit ;
noisily di _n in smcl in gr
_col(18) "Beg."
_col(27) "Cum." _col(36) "Std."
_col(56) "Std."
_n
_col( 4) "Interval" _col(17) "Total"
_col(25) "Failure" _col(35) "Error"
_col(44) "Hazard" _col(55) "Error"
_col(64) `"[`level'% Conf. Int.]"'
_n
"{hline 79}" ;
#delimit cr
local i 1
while `i'<=_N {
if `"`g'"'~=`"`Group'"' & `g'[`i']!=`g'[`i'-1] {
noisily di in gr `"`g' "' `g'[`i']
}
#delimit ;
noisily di in gr
%5.0f `I0'[`i']
%6.0f `I1'[`i']
%10.0f `start'[`i']
%10.4f `F'[`i']
%8.4f `seF'[`i']
in ye
%10.4f `H'[`i']
%10.4f `seH'[`i']
%10.4f `loH'[`i']
%10.4f `upH'[`i']
;
#delimit cr
local i=`i'+1
}
noi di in smcl in gr "{hline 79}"
}
if `"`saving'"' != "" {
SaveData "`by'" `I0' `I1' `start' `dead' `lost' ///
`S' `sellS' `loS' `upS' `F' `seF' ///
`loF' `upF' `H' `seH' `loH' `upH' ///
`level' `"`saving'"'
}
/*--------------FIRST SET OF CHI SQUARE STATISICS -------------------*/
if `"`g'"'~=`"`Group'"' & `"`test'"'!="" {
by `g': keep if _n==_N
gen `st'=sum(`td')*log(sum(`tt')/sum(`td'))
gen `ss'= sum(`td'*log(`tt'/`td'))
local chi2=2*(`st'[_N]-`ss'[_N])
#delimit ;
noisily di _n(2) in gr
"Likelihood-ratio test statistic of homogeneity "
`"(group=`g'):"' _n
"chi2( "
in ye _N-1 /* df */
in gr " ) = "
in ye `chi2'
in gr ", P = "
in ye chiprob(_N-1,`chi2') ;
#delimit cr
/*------------- SECOND SET OF CHI SQUARE STATISICS ------------------*/
restore
if `"`exp'"'!="" {
local wtopt= "[`weight'`exp']"
}
noisily di " "
noisily di in gr /*
*/ `"Logrank test of homogeneity (group=`g'):"'
noisily logrank `t' `d' `wtopt' if `touse', by(`g')
}
else restore
if `"`plot'`addplot'"' != "" {
version 8: graph addplot `plot' || `addplot' || , norescaling
}
} // quietly
end
program CheckSaving
version 8.2
capture syntax [anything(id="filename" equalok)] [, replace ]
if c(rc) {
di as err "invalid saving() option"
syntax [anything(id="filename" equalok)] [, replace ]
exit 198
}
if "`replace'" != "" & `"`anything'"' == "" {
di as err "invalid saving() option, filename is required"
exit 198
}
end
program SaveData
version 8.2
preserve
args by I0 I1 start dead lost ///
S sellS loS upS F seF ///
loF upF H seH loH upH level
macro shift 19
local saving `"`*'"'
local keep t0 t1 start deaths lost ///
survival sesurvival lsurvival usurvival ///
failure sefailure lfailure ufailure ///
hazard sehazard lhazard uhazard ///
// blank
foreach var of local keep {
capture {
unab x : `var'
if "`x'" == "`var'" {
drop `var'
}
}
}
// `by' already has a valid name, if it exists
rename `I0' t0
label var t0 "start of time interval"
rename `I1' t1
label var t1 "end of time interval"
rename `start' start
label var start "beginning total"
rename `dead' deaths
label var deaths "deaths during interval"
quietly gen lost = `lost'-deaths
label var lost "lost during interval"
// survival statistics
rename `S' survival
label var survival "survival estimates"
rename `sellS' sesurvival
label var sesurvival ///
"standard error of survival log likelihood estimates"
rename `loS' lsurvival
label var lsurvival "lower `level'% CI limit for survival"
rename `upS' usurvival
label var usurvival "upper `level'% CI limit for survival"
// cummulative failure statistics
rename `F' failure
label var failure "cumulative failure estimates"
rename `seF' sefailure
label var sefailure ///
"standard error of cumulative failure estimates"
rename `loF' lfailure
label var lfailure ///
"lower `level'% CI limit for cummulative failure"
rename `upF' ufailure
label var ufailure ///
"upper `level'% CI limit for cummulative failure"
// hazard statistics
rename `H' hazard
label var hazard "hazard estimates"
rename `seH' sehazard
label var sehazard "standard error of hazard estimates"
rename `loH' lhazard
label var lhazard "lower `level'% CI limit for hazard"
rename `upH' uhazard
label var uhazard "upper `level'% CI limit for hazard"
keep `by' `keep'
order `by' `keep'
save `saving'
end
program define _crcltab
version 3.0
local t "`1'"
local I0 "`2'"
local I1 "`3'"
local interva "`4'"
if "`interva'"=="w" {
_crcltab `t' `I0' `I1' "0 7 15 30 60 90 180 360 540 720"
exit
}
version 8: numlist "`interva'"
tokenize `r(numlist)'
quietly gen float `I0'=0
quietly gen float `I1'=.
if "`2'"=="" {
confirm number `1'
if `1'<=0 | `1'>=. {
di in red "interval() invalid"
exit 198
}
quietly replace `I0' = int(`t'/`1')*`1'
quietly replace `I1' = `I0'+`1'
exit
}
local last -1
while "`1'"!="" {
if "`1'"!="," {
confirm number `1'
if `1'<=`last' {
di in red "intervals must be ascending"
exit 198
}
if `last'!= -1 {
quietly replace `I0'=`last' /*
*/ if `t'>=`last' & `t'<`1'
quietly replace `I1'=`1' /*
*/ if `t'>=`last' & `t'<`1'
}
local last `1'
}
mac shift
}
if `last'==0 {
di in red "intervals invalid"
exit 198
}
quietly replace `I0'=`last' if `t'>=`last'
quietly replace `I1'=. if `t'>=`last'
end
program define Ghdr /* varname idx */
args varname i
local typ : type `varname'
if substr("`typ'",1,3)=="str" {
di in ye `varname'[`i']
exit
}
local val = `varname'[`i']
local new : label (`varname') `val'
if "`val'" != `"`new'"' {
di in ye `"`new'"'
exit
}
local fmt : format `varname'
local res : di `fmt' `val'
local res = trim(`"`res'"')
di in ye `"`varname' = `res'"'
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -