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

📄 zts_5.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 3 页
字号:
			di in red /* 
*/ "use " _quote "egen ... = group(`strata')" _quote /*
*/ " to make a single variable"
			exit 198
		}
	}
	if  "`enter'"!="" & "`atrisk'"!="" {
		di in red /*
		*/ "atrisk and enter not possible at the same time"
		exit 198
	}
	if "`adjustf'"!="" {
		if "`gwood'"!="" {
			di in red "gwood not possible with adjustfor()"
			exit 198
		}
		if "`lost'"!="" | "`enter'"!="" | "`atrisk'"!="" {
			di in red /*
			*/ "atrisk, lost and enter not possible with adjustfor()"
			exit 198
		}
	}

	zt_sho_5 `show'

	tempvar touse  mark n d cens ent  s lb ub
	zt_smp_5 `touse' "`if'" "`in'" "`sb'" "`adjustf'"
	preserve
	quietly {
		keep if `touse'
		if "`adjustf'"=="" {
			zt_ct_5 "`by'" -> `t' `n' `d' `cens' `ent'
			if "`enter'"=="" & "`atrisk'"=="" {
				replace `cens' = `cens' - `ent' if `t'
				drop if `d'==0 & `cens'==0
				replace `ent' = 0 
			}
			if "`atrisk'"!="" {
				replace `ent' = `n'[_n+1] if `d'
				if "`lost'"=="" { replace `cens'=0 }
			}
			AddSurv "`by'" `t' `n' `d' `level' -> /* 
				*/ "" `s' "" "" `lb' `ub'
		}
		else { 
			DoAdjust "`by'" "`strata'" "`adjustf'" "" "" -> "" `s'
			KeepDead "`sb'"
		}
		if "`failure'" != "" {
			replace `s'=1-`s'
			if "`adjustf'" == "" {
				replace `lb'=1-`lb'
				replace `ub'=1-`ub'
				local hold "`lb'"
				local lb "`ub'"
				local ub "`hold'"
			}
		}
	}

	if `tmin' != -1 {
		qui drop if `t'<`tmin'
	}
	if `tmax' != -1 { 
		qui drop if `t'>`tmax'
	}
	qui count 
	if _result(1)<1 { 
		di in red "no observations"
		exit 2000
	}

	quietly {
		if "`lost'"=="" & "`atrisk'"=="" {
			if "`adjustf'"=="" {
/*
				drop if `d'==0
*/
				drop `d' 
			}
		}
		else {
			summ `s'
			local eps = max( (_result(6)-_result(5))/50, 0)
			local nps = max( (_result(6)-_result(5))/25,  0)
			tempvar dj tnext s2 s3 newt
			sort `sb' `t' `d'
			if "`sb'"!="" {
				local byst "by `sb':"
			}

			`byst' replace `d'=1 if `d'==0 & (_n==1 | _n==_N)
			`byst' gen long `dj' = _n if `d' 
/* above is new */
			`byst' replace `dj'=`dj'[_n-1] if `dj'>=.
			sort `sb' `dj' `d'
			by `sb' `dj': replace `cens'=sum(`cens')
			by `sb' `dj': replace `ent' =sum(`ent')
			by `sb' `dj': keep if _n==_N
			drop `dj'
			sort `sb' `t'
			`byst' gen `tnext'=`t'[_n+1]
`byst' replace `tnext'=`t' if _n==_N
			expand 3 
			sort `sb' `t'
			by `sb' `t': gen `newt' = cond(_n==1, `t', /*
					*/ (`t'+`tnext')/2)
			drop `tnext'
			by `sb' `t': gen `s2' = `s'+`eps' if _n==2
			by `sb' `t': gen `s3' = `s'-`nps' if _n==3
			by `sb' `t': replace `s'=. if _n>1
			by `sb' `t': replace `cens' = 0 /*
				*/ if _n==1 | _n==3
			by `sb' `t': replace `ent' = 0 /*
				*/ if _n==1 | _n==2
			by `sb' `t': keep if _n==1 | /*
				*/ (_n==2 & `cens') | (_n==3 & `ent')
			label var `s2' " " 
			label var `s3' " "
			local mvars "`s2' `s3'"
			local msym "[`cens'][`ent']"
			local mcon ".."
			local mpen "11"
			local lbl : var label `t'
			drop `t' 
			rename `newt' `t'
			label var `t' "`lbl'"
			local lbl
			sort `sb' `t'
		}
	}

	if "`sb'"=="" | "`gwood'"!="" {
		local separat "separate"
	}

	if "`separat'"=="separate" {
		local svars "`s'"
		local ssym "i"
		local scon "J"
		local spen "2"
		if "`sb'"!="" {
			local byopt "by(`sb')"
		}
		if "`gwood'" != "" {
			local svars "`svars' `lb' `ub'"
			local ssym "`ssym'ii"
			local scon "`scon'JJ"
			local spen "`spen'11"
		}
	}
	else {
		quietly { 
			tempvar grp
			by `sb': gen int `grp' = 1 if _n==1
			replace `grp' = sum(`grp')
			local ng = `grp'[_N]
			local i 1 
			local pen 1
			while `i' <= `ng' {
				tempvar x
				gen float `x'=`s' if `grp'==`i'
				local svars "`svars' `x'"
				local ssym "`ssym'i"
				local scon "`scon'J"
				local pen=cond(`pen'<=8,`pen'+1,2)
				local spen "`spen'`pen'"
				local i = `i' + 1
			}
		}
		if "`label'"=="" {
			tempvar smark sttl
			qui MarkPt `t' "`sb'" `s' -> `sttl' `smark'
			local pen 1
			local i 1
			while `i' <= `ng' { 
				tempvar x 
				qui gen float `x'=`smark' if `grp'==`i'
				local pen=cond(`pen'<=8,`pen'+1,2)
				local svars "`svars' `x'"
				local ssym "`ssym'[`sttl']"
				local scon "`scon'."
				local spen "`spen'`pen'"
				local i = `i' + 1
			}
			drop `smark'
		}
	}

	if "`ylabel'"=="" {
		if "`yasis'"=="" {
                       if "`ylog'"!="" {
                                local ylabel "ylabel(.01,.05,.10,.25,.50,.75,1)"
                        }
                        else {
                                local ylabel "ylabel(0,.25,.50,.75,1)"
                        }
			local fvar : word 1 of `svars'
			format `fvar' %9.2f
		}
		else {
			qui summ `s'
                        if "`ylog'"!="" {
                                local min = cond(_result(5)==0,.001,_result(5))
                        }
                        else {
                                local min=_result(5)
                        }
			local max=cond("`origin'"=="",1,_result(6))
			local ylabel "ylabel(`min',`max')"
		}
	}
	else 	local ylabel "ylabel(`ylabel')"

	if "`xlabel'"=="" {
		if "`xasis'"=="" {
			local xlabel "xlabel"
		}
	}
	else	local xlabel "xlabel(`xlabel')"

	if "`border'"=="" { local border "border" }
	else local border

	if "`t1title'"=="" {
		if "`fail'"=="" {
			if "`adjustf'"!="" {
				local t1title "Survivor function"
			}
			else	local t1title "Kaplan-Meier survival estimate"
		}
		else {
			if "`adjustf'"!="" {
				local t1title "Failure function"
			}
			else 	local t1title "Kaplan-Meier failure estimate"
		}
		if "`sb'"!="" {
			local t1title "`t1title's, by `sb'"
		}
		local t1title "t1(`t1title')"
	}
	else {
		if "`t1title'"=="." { 
			local t1title
		}
		else local t1title "t1(`t1title')"
	}

	if "`t2title'"=="" {
		if "`adjustf'"!="" {
			if length("`adjustf'")>50 {
				local adjustf = substr("`adjustf'",1,47)
				local adjustf "`adjustf'..."
			}
			local t2title "t2(adjusted for `adjustf')"
		}
		else if "`gwood'"!="" {
			local t2title "t2(`level'%, pointwise confidence band shown)"
		}
	}
	else {
		if "`t2title'"=="." { 
			local t2title
		}
		else local t2title "t2(`t2title')"
	}
        if "`ylog'" != "" {
                local varcnt: word count  `svars'
                local i 1
                while `i' <= `varcnt' {
                        local varn: word `i' of `svars'
                        qui replace `varn'=.001 if `varn'==0
                        local i=`i'+1
                }
        }
	/*** new by mac *****/
	if "`origin'"=="" {
        	tempvar last flg
        	local N = _N
		if "`by'"=="" & "`strata'"=="" {
			qui gen `last'=2 if _n==_N
			qui expand `last'
			qui gen `flg'=1 if _n>`N'
			qui replace `t'=0 if `flg'==1
			if "`failure'" == "" {
				qui replace `s'=1 if `flg'==1
			}
			else qui replace `s'=0 if `flg'==1
		}
		else {
			sort `by' `strata'
			qui by `by' `strata':  gen `last'=2 if _n==_N
			qui expand `last'
			qui gen `flg'=1 if _n>`N'
			qui replace `t'=0 if `flg'==1
        		local varcnt: word count  `svars'
			local i 1
			while `i' <= `varcnt' {
				local varn: word `i' of `svars' 
				if "`failure'" == "" {
					qui replace `varn'=1 if `t'==0 
				}
				else qui replace `varn'=0 if `t'==0
                		if substr("`ssym'",-1,1)!="i" &  /* 
					*/ `i'> (`varcnt'/2 ) {
					qui replace `varn'=. if `t'==0
				}
				local i=`i'+1
			}
		}
		if "`gwood'"!="" {
			replace  `lb'=. if `flg'==1
			replace  `ub'=. if `flg'==1
		}
		if "`byopt'"!="" {
			 sort `sb'
		 }
		if "`lost'" !="" | "`enter'" !=""  {
			qui replace `cens'=. if `flg'==1	
		}
	}
	gr7 `svars' `mvars' `t', c(`scon'`mcon') s(`ssym'`msym') /*
	*/ pen(`spen'`mpen') `byopt' `ylabel' `xlabel' `border' /*
	*/ `t1title' `t2title' trim(`trim') `ylog' `options' sort
end


program define DoAdjust /* by strata adjustf if in -> haz s */
	local by     "`1'"		/* optional 	*/
	local strata "`2'"		/* optional 	*/
	local adjustf "`3'"		/* required	*/
	local if      "`4'"		/* optional	*/
	local in      "`5'"		/* optional	*/

/* */
	local haz "`7'"			/* optional 	*/
	local s   "`8'"			/* optional 	*/

	if "`strata'"!="" {
		local stopt "strata(`strata')"
	}

	if "`by'"=="" {
		if "`s'" != "" {
			local sopt "bases(`s')"
		}
		if "`haz'" != "" {
			local hopt "baseh(`haz')"
		}
		stcox `adjustf' `if' `in', /*
			*/ `stopt' `sopt' `hopt' estimate norobust
		exit
	}
	if "`haz'" != "" {
		tempvar hi
		local hopt "baseh(`hi')"
		gen double `haz' = . 
	}
	if "`s'" != "" {
		tempvar si
		local sopt "bases(`si')"
		gen double `s' = .
	}
	if !("`if'"=="" & "`in'"=="") {
		tempvar touse 
		mark `touse' `if' `in'
		local cond "if `touse'"
		local andcond "& `touse'"
	}
	tempvar grp
	sort `touse' `by'
	by `touse' `by': gen int `grp' = 1 if _n==1 `andcond'
	replace `grp'=sum(`grp') `cond'
	local ng = `grp'[_N]
	local i 1
	while `i' <= `ng' { 
		capture stcox `adjustf' if `grp'==`i', /*
			*/ `stopt' `sopt' `hopt' estimate norobust
		if _rc==0 {
			if "`hopt'"!="" {
				replace `haz' = `hi' if `grp'==`i' 
				drop `hi'
			}
			if "`sopt'"!="" {
				replace `s' = `si' if `grp'==`i'
				drop `si'
			}
		}
		local i = `i' + 1
	}
end


program define KeepDead /* strata */
	local strata "`1'"

	local t : char _dta[st_t]
	local d : char _dta[st_d]
	if "`d'"!="" {
		/* keep if `d' */
		drop `d'
	}
	sort `strata' `t'
	by `strata' `t': keep if _n==1
end
	


program define MarkPt /* t strata s -> ttl s2 */
	local t "`1'"
	local strata "`2'"
	local s "`3'"
	local ttl "`5'"
	local s2 "`6'"

	tempvar tval mark marksum ls

	summarize `t'
	gen float `tval' = _result(5) + (_result(6)-_result(5))*2/3

	gen byte `mark' = cond(`t'<`tval', 1, 0)
	by `strata': replace `mark'=0 if `mark'[_n+1]==1
	by `strata': gen byte `marksum' = sum(`mark')
	by `strata': replace `mark'=1 if _n==_N & `marksum'==0
	drop `tval' `marksum'

	summarize `s'
	local eps = max( (_result(6)-_result(5))/20,0)
	gen float `ls' = `s'
	by `strata': replace `ls' = `ls'[_n-1] if `ls'>=.
	gen float `s2' = `ls'+`eps' if `mark'
	replace `s2' = `ls'[_n-1]+`eps' if `mark' & `strata'==`strata'[_n-1]

	summarize `s2' 
	replace `s2' = max(`s2'-8*`eps',0) if `s2'==_result(5)
	replace `s2' = `s2'+`eps' if `s2'==_result(6)

	capture confirm string variable `strata'
	if _rc {
		gen str20 `ttl' = "`strata' " + trim(string(`strata')) if `mark'
		local lab : value label `strata'
		if "`lab'" != "" {
			tempvar delab
			decode `strata', gen(`delab')
			replace `ttl' = `delab' if `mark'
		}
	}
	else	gen str20 `ttl' = trim(`strata') if `mark'
	compress `ttl'
end


program define ByStAdj /* by strata adjustf */
	local by      "`1'"
	local strata  "`2'"
	local adjustf "`3'"

	if "`by'" != "" {
		unabbrev `by'
		local by "$S_1"
	}

	if "`strata'"!="" {
		if "`adjustf'"=="" {
			di in red /*
		*/ "strata() requires adjustfor(); perhaps you mean by()"
			exit 198 
		}
		unabbrev `strata'
		local strata "$S_1"
	}

	if "`adjustf'" != "" {
		unabbrev `adjustf'
		local adjustf "$S_1"
	}

	if !("`by'"=="" & "`strata'"=="") {
		if "`by'"!="" & "`strata'"!="" { local sb "`by' `strata'" }
		else if "`by'"!="" { local sb "`by'" }
		else local sb "`strata'"
	}

	global S_1 "`by'"
	global S_2 "`strata'"
	global S_3 "`adjustf'"
	global S_4 "`sb'"
end
exit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -