⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stptime.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
					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 + -