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

📄 bootstrap.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
			// try to use the cmdnames's replay routine
			capture findfile `cmdname'.ado
			if !c(rc) & substr("`cmdname'",1,3) != "svy" {
				capture `cmdname'
				if !c(rc) {
					local replay `cmdname'
				}
			}
		}
		tempname esave
		estimates store `esave', nocopy
	}

	// temp variables for post
	local stats
	local xstats
	forvalues j = 1/`K' {
		tempname x`j'
		local stats `stats' (`b'[1,`j'])
		local xstats `xstats' (`x`j'')
	}
	// jackknife estimates of acceleration
	if `"`bca'"' != "" {
		// expand the expression list
		forvalues i = 1/`K' {
			local name : word `i' of `names'
			local exp_list `exp_list' `name'=(`exp`i'')
		}
		if "`cluster'" != "" {
			local clopt cluster(`cluster')
		}
		if "`nodots'`noisily'`trace'" == "" {
			local jkopts notable nolegend
		}
		else {
			local jkopts `nodots' `noisily' `trace'
			local qui quietly
		}
		`qui' `noisily' `version' JKAccel		///
			`exp_list' ,				///
			keep					///
			`clopt' `jkopts'			///
			reject(`reject')			///
			: `command'
		tempname accel
		matrix `accel' = r(accel)
	}

	// prepare post
	tempname postid
	postfile `postid' `names' using `"`saving'"', ///
		`double' `every' `replace'

	// bsample, compute and post
	if `"`idcluster'"' != "" {
		local clustopts `clustopts' idcluster(`idcluster')
	}

	local bsamopts `strataopt' `clustopts'

	if "`dots'" == "*" {
		local noiqui noisily quietly
	}

	if "`nodots'" == "" | "`noisily'" != "" {
		di
		_dots 0, title(Bootstrap replications) reps(`reps') `nodots'
	}
	local rejected 0
	forvalues i = 1/`reps' {
		restore, preserve
		bsample `size' , `bsamopts'
		if "`group'" != "" {
			tempvar newgroup
			sort `idcluster' `group', stable
			quietly by `strata' `idcluster' `group': ///
				gen `newgroup' = _n==1
			quietly replace `newgroup' = sum(`newgroup')
			drop `group'
			rename `newgroup' `group'
		}
		if `tsop' {
			// -tsset- will result in an error if the user
			// misspecified at least the -cluster()-,
			// -idcluster()-, and -group()- options

			capture noisily quietly tsset `panelvar' `timevar'
			if c(rc) {
				di as err "{p 0 0 2}" ///
"the most likely cause for this error is misspecifying the cluster(), " ///
"idcluster(), or group() option{p_end}"
				exit c(rc)
			}
		}
		// run command and post results
		`noi' di as inp `". `command'"'
		`traceon'
		capture `noiqui' `noisily' `version' `command'
		`traceoff'
		if (c(rc) == 1)	error 1
		local bad = c(rc) != 0
		if c(rc) {
			`noi' di as error ///
`"{p 0 0 2}an error occurred when bootstrap executed `cmdname', "' ///
`"posting missing values{p_end}"'
			post `postid' `mis'
		}
		else {
			if `"`reject'"' != "" {
				capture local rejected = `reject'
				if c(rc) {
					local rejected 1
				}
			}
			if `rejected' {
				local bad 1
				`noi' di as error ///
`"{p 0 0 2}rejected results from `cmdname', "' ///
`"posting missing values{p_end}"'
				post `postid' `mis'
			}
			else {
				forvalues j = 1/`K' {
					capture scalar `x`j'' = `exp`j''
					if (c(rc) == 1)	error 1
					if c(rc) {
						local bad 1
						`noi' di as error ///
`"{p 0 0 2}captured error in `exp`j'', posting missing value{p_end}"'
						scalar `x`j'' = .
					}
					else if missing(`x`j'') {
						local bad 1
					}
				}
				post `postid' `xstats'
			}
		}
		`dots' `i' `bad'
	}
	`dots' `reps'

} // capture noisily break

	local rc = c(rc)

	// cleanup post
	if "`postid'" != "" {
		postclose `postid'
	}

	if "`esave'" != "" {
		if `rc' {
			quietly estimates drop `esave'
		}
		else {
			quietly estimates restore `esave', drop
		}
	}

} // nobreak

	if (`rc') exit `rc'

	// load file with bootstrap results and display output
	capture use `"`saving'"', clear
	if c(rc) {
		if inrange(c(rc),900,903) {
			di as err ///
"insufficient memory to load file with bootstrap results"
		}
		error c(rc)
	}

	// fix the column stripes
	if "`eexpress'" == "(_b)" ///
	 & inlist("`cmdname'", "ologit", "oprobit") ///
	 & missing(e(version)) {
		_prefix_relabel_eqns `b'
		local k_eq = s(k_eq)
		local k_aux = `k_eq' - 1
		local colna : colna `b'
		local coleq : coleq `b'
	}

	// save bootstrap characteristics and labels to data set
	label data `"bootstrap: `cmdname'"'
	char _dta[command]	`"`command'"'
	char _dta[seed]		`"`seed'"'
	char _dta[N_cluster] 	`nclust'
	char _dta[cluster] 	`cluster'
	char _dta[strata]	`ustrata'
	char _dta[N_strata]	`nstrata'
	char _dta[N]		`obs'
	char _dta[bs_version]	3
	char _dta[k_eq]		`k_eq'
	char _dta[k_extra]	`k_extra'
	forvalues i = 1/`K' {
		local name : word `i' of `names'
		char `name'[observed] `= `b'[1,`i'] '
		if `"`bca'"' != "" {
			char `name'[acceleration] `= `accel'[1,`i'] '
		}
		local label = substr(`"`exp`i''"',1,80)
		label variable `name' `"`label'"'
		char `name'[expression] `"`exp`i''"'
		if `"`coleq'"' != "" {
			char `name'[colname]
			local na : word `i' of `colna'
			local eq : word `i' of `coleq'
			char `name'[coleq] `eq'
			char `name'[colname] `na'
			if `i' <= `k_eexp' {
				char `name'[is_eexp] 1
			}
		}
	}

	if `"`filetmp'"' == "" {
		quietly save `"`saving'"', replace
	}

	// compute results
	tempname bs_v
	capture noisily _bs_sum, level(`level') `mse'
	if c(rc) {
		ereturn clear
		exit c(rc)
	}
	matrix `bs_v' = r(V)
	restore

	if "`eexpress'" == "(_b)" {
		// make a copy of what is in -e()-, with some eXclusions
		local xmac cmd _estimates_name chi2type novariance
		if "`noecluster'" == "" {
			local xmac `xmac' clustvar
		}
		local xsca F chi2 df_r df_m
		local xmat b V
		if "`e(cmd)'" != "`cmdname'" {
			local ecmd `e(cmd)'
		}
		_e2r, xmac(`xmac') xsca(`xsca') xmat(`xmat') add
		if "`e(depvar)'" != "" {
			local depvar `e(depvar)'
			if `:word count `depvar'' == 1 {
				local depname	depname(`depvar')
			}
		}
	}
	if "`:word 1 of `eexpress''" == "(_b)" {
		tempname Cns
		capture mat `Cns' = get(Cns)
		if (c(rc)) local Cns
		else {
			// get constraints matrix for post
			local cols = colsof(`Cns')
			// note: if no other expressions were added, then the
			// constraint matrix has 1 more column than the
			// coefficient vector
			if `cols' <= colsof(`b') {
				// add columns of zeros for other statistics
				local colsm1 = `cols'-1
				local rows = rowsof(`Cns')
				local fill = colsof(`b')-`colsm1'
				tempname cns1 cns2
				mat `cns1' = `Cns'[1...,1..`colsm1']
				mat `cns2' = `Cns'[1...,`cols']
				mat `Cns' = `cns1',J(`rows',`fill',0),`cns2'
				matrix drop `cns1' `cns2'
			}
		}
	}

	if inlist("`cmdname'", "binreg", "glm") {
		if !missing(r(vf)) & r(vf) != 1 {
			matrix `bs_v' = r(vf)*`bs_v'
		}
	}

	// save results
	ereturn post `b' `bs_v' `Cns', obs(`obs') esample(`touse') `depname'
	// restore the copied elements back to -e()-
	_r2e, xmat(b V)
	ereturn local seed `seed'
	ereturn scalar k_eq	= `k_eq'
	ereturn scalar k_exp	= `k_exp'
	ereturn scalar k_eexp	= `k_eexp'
	ereturn scalar k_extra	= `k_extra'
	if "`k_aux'" != "" {
		ereturn scalar k_aux = `k_aux'
	}
	if `"`title'"' != "" {
		ereturn local title `"`title'"'
	}
	else {
		_prefix_title `cmdname' "Bootstrap results"
		ereturn local title `"`r(title)'"'
	}
	if inlist("`wtype'","fweight","iweight") {
		tempvar wvar
		quietly gen `wvar' `wexp'
		sum `wvar' if e(sample), mean
		ereturn scalar N = r(sum)
	}
	else {
		quietly count if e(sample)
		ereturn scalar N = r(N)
	}
	ereturn local prefix bootstrap
	ereturn local cmdname `cmdname'
	if "`size'" != "" {
		ereturn local size `"`size'"'
	}
	if "`noecluster'" != "" {
		ereturn local cluster
	}
	// NOTE: this must be the last thing posted to -e()-
	if "`eexpress'`k_exp'" != "(_b)0" {
		ereturn local predict _no_predict
		ereturn local cmd bootstrap
	}
	else {
		if !inlist("`e(predict)'", "", "_no_predict") {
			// compute e(chi2) and e(df_m)
			_prefix_model_test `cmdname'
		}
		if "`ecmd'" == "" {
			ereturn local cmd `cmdname'
		}
		else	ereturn local cmd `ecmd'
	}
	if "`leave'" != "" {
		ereturn local leave leave
	}

	// Display output
	if "`replay'" != "" & "`table'`header'`legend'`verbose'" == "" {
		`replay', level(`level') `efopt'
	}
	else	Display, `diopts'
end

program JKAccel, rclass

	di
	jackknife `0'
	tempname accel
	matrix `accel' = e(b)
	local names `e(pseudo)'
	local K = colsof(`accel')

	// The following depends heavily on the fact that jackknife's
	// pseudovalues s[j]=N*s-(N-1)*s(j) and the leave one out values s(j)
	// are equivalent when calculating acceleration, i.e. skew(s[j]) =
	// -skew(s(j)).

	forvalues i = 1/`K' {
		local name : word `i' of `names'
		quietly summ `name', detail
		if missing(r(skewness)) {
			matrix `accel'[1,`i'] = .
		}
		else	matrix `accel'[1,`i'] = r(skewness)/(6*sqrt(r(N)))
		capture drop `name'
	}
	matrix colnames `accel' = `names'
	return matrix accel `accel'
end

program Display
	local extra = `"`e(cmd)'"' != `"`e(cmdname)'"'
	if `"`e(cmd)'"' != "" {
		is_svysum `e(cmd)'
		local is_svysum = r(is_svysum)
		local svylist svyb svyj svyr
		local proplist : properties `e(cmd)'
		local svyable = `"`: list proplist & svylist'"' != ""
	}
	else {
		local is_svysum 0
		local svyable 0
	}
	if `extra' | `is_svysum' | `svyable' {
		_prefix_display `0'
		exit
	}
	syntax  [,			///
		notable			///
		TItle(passthru)		///
		noHeader		///
		noLegend		///
		Verbose			///
		*			///
	]
	if ("`table'" != "" & "`header'" != "") exit
	`e(cmd)', `options'
end

program GetPanelVar, rclass
	capture tsset
	if ! c(rc) {
		local panelvar `r(panelvar)'
		local timevar `r(timevar)'
	}
	if "`panelvar'" == "" {
		capture xt_iis
		if !c(rc) {
			local panelvar `s(ivar)'
		}
	}
	if "`panelvar'" == "" {
		syntax [, I(varname) * ]
		local panelvar `"`i'"'
	}
	else if "`panelvar'" != "" {
		return local setpanel yes
	}
	return local panelvar `panelvar'
	return local timevar `timevar'
end

exit

⌨️ 快捷键说明

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