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

📄 bstat_8.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
*! version 2.3.10  17mar2005
program bstat_8
	version 8.0, missing
	local version : di "version " string(_caller()) ", missing:"

	// version control
	if _caller() < 8 {
		`version' bstat_7 `0'
		exit
	}
	// check syntax
	syntax [anything] [using/] [if] [in] [, 	///
		accel(string)				///
		bca					///
		Level(cilevel)				///
		noBC					///
		noNormal				///
		noPercentile				///
		notable					///
		SEParate				///
		Stat(string)				///
		TItle(string)				///
		n(integer -1)				///
		]

	if `"`using'"' != "" {
		preserve
		qui use `"`using'"', clear
	}

	GetValues `anything'	///
		`if' `in',	///
		`bca'		///
		accel(`accel')	///
		stat(`stat')	///
		n(`n')
	local nobs `r(Nobs)'
	local nrep `r(Nrep)'
	local nstr `r(Nstr)'
	local nclu `r(Nclu)'
	local bca  `r(bca)'
	local varlist `r(varlist)'

	// mark here since we now have varlist
	tempvar touse
	mark `touse' `if' `in'

	tempname eb
	matrix `eb' = r(b)
	if `"`bca'"' != "" {
		tempname va
		matrix `va' = r(a)
	}

	if (`"`bc'"' != "")		& ///
	   (`"`normal'"' != "")		& ///
	   (`"`percentile'"' != "")	& ///
	   (`"`bca'"' == "") {
		local tablestar "*"
	}
	else if `"`table'"' != "" {
		local bc nobc
		local normal nonormal
		local percentile nopercentile
		local bca
		local tablestar "*"
	}

	// the number of listed bootstrapped variables
	local nstat : word count `varlist'
	// null vector for return vectors
	tempname vzero 
	matrix `vzero' = J(1,`nstat',0)
	matrix colnames `vzero' = `varlist'

	// setup ereturn matrices
	if `"`bca'"' != "" {
		local rvecs accel
		local rmats ci_bca
	}
	local rvecs `rvecs' z0 se bias reps
	foreach vecname of local rvecs {
		tempname `vecname'
		matrix ``vecname'' = `vzero'
		matrix rownames ``vecname'' = `vecname'
	}
	local rmats `rmats' ci_bc ci_percentile ci_normal
	foreach vecname of local rmats {
		tempname `vecname'
		matrix ``vecname'' = `vzero' \ `vzero'
		matrix rownames ``vecname'' = ll ul
	}
	matrix drop `vzero'
	local rmats `rvecs' `rmats'
	local rvecs

	// Calculate and Display
	`tablestar' TableHead	///
		`"`title'"'	///
		"`level'"	///
		"`nobs'"	///
		"`nstr'"	///
		"`nclu'"	///
		"`nrep'"

	// ebi - observed value of the statistic for the current variable
	tempname ebi
	if `"`bca'"' != "" {
		// vai - estimated acceleration of ebi
		tempname vai
	}

	// Loop through varlist
	forvalues i = 1/`nstat' {
		local name : word `i' of `varlist'
		scalar `ebi' = `eb'[1,colnumb(`eb',"`name'")]
		if `"`bca'"' != "" {
			scalar `vai' = `va'[1,colnumb(`va',"`name'")]
		}
		if `i' > 1 {
			local sep `separate'
		}

		OneBstat		///
			`touse'		///
			`name'		///
			`ebi'		///
			"`vai'"		///
			`level'		///
			"`sep'"		///
			"`normal'"	///
			"`percentile'"	///
			"`bc'"		///
			"`bca'"

		// retrieve return vectors
		foreach vecname of local rmats {
			mat ``vecname''[1,`i'] = r(`vecname')
		}
	}
	`tablestar' TableFoot , `normal' `percentile' `bc' `bca'

	// return vectors
	local mats
	foreach vecname of local rmats {
		local mats `mats' `vecname' ``vecname''
	}
	local ns nobs nclu nrep nstr
	foreach n of local ns {
		if `"``n''"' != "" {
			local nopts `"`nopts' `n'(``n'')"'
		}
	}
	Estimate `varlist',	///
		b(`eb')		///
		accel(`va')	///
		`nopts'		///
		`mats'
end

// check options, then save results to be used for display
//
// Saved results:
//
// Scalars:
// 	r(Nobs)		n(), _dta[N] or '.'
// 	r(Nrep)		number of replications, _dta[N_reps]
// 	r(Nstr)		number of strata, _dta[N_strata]
// 	r(Nclu)		number of clusters, _dta[N_cluster]
//
// Macros:
// 	r(varlist)	varlist
// 	r(bca)		bca, or ""
//
// Matrices:
// 	r(b)		observed values of statistics
// 	r(a)		observed acceleration values

program GetValues, rclass
	syntax [varlist(numeric)]	///
		[if] [in] [,		///
		bca			///
		accel(string)		///
		stat(string)		///
		n(integer -1)		///
	]

	return local varlist `varlist'

	qui count `if' `in'
	if r(N)==0 {
		error 2000
	}
	return scalar Nrep = r(N)

	// retrieve bootstrap characteristics
	local version : char _dta[bs_version]

	if `"`version'"' == "2" {
		if `n' < 0 {
			local n : char _dta[N]
			cap confirm integer number `n'
			if !_rc {
				if `n' > 0 {
					return scalar Nobs = `n'
				}
			}
		}
		else	return scalar Nobs = `n'
	
		local nstr : char _dta[N_strata]
		cap confirm integer number `nstr'
		if !_rc {
			if `nstr' > 0 {
				return scalar Nstr = `nstr'
			}
		}
	
		local nclu  : char _dta[N_cluster]
		cap confirm integer number `nclu'
		if !_rc {
			if `nclu' > 0 {
				return scalar Nclu = `nclu'
			}
		}

		GetMat `varlist',	///
			char(observed)	///
			opt(stat)	///
			mat(`stat')
		tempname b
		mat `b' = r(mat)
		return matrix b `b'

		if `"`bca'`accel'"' != "" {
			GetMat `varlist',		///
				char(acceleration)	///
				opt(accel)		///
				mat(`accel')
			tempname a
			mat `a' = r(mat)
			return matrix a `a'
			return local bca bca
		}
		exit
	}

	// version 1 or some other dataset
	GetMat `varlist', 	///
		char(bstrap)	///
		opt(stat)	///
		mat(`stat')
	tempname b
	mat `b' = r(mat)
	return matrix b `b'

	if `"`bca'`accel'"' != "" {
		GetMat `varlist', opt(accel) mat(`accel')
		tempname a
		mat `a' = r(mat)
		return matrix a `a'
		return local bca bca
	}
	if `n' > 0 {
		return scalar Nobs = `n'
	}
end

program GetMat, rclass
	syntax varlist , opt(name) [ char(name) mat(string) ]

	local ncol : word count `varlist'
	tempname b
	if `"`mat'"' != "" {
		// user supplied matrix
		capture confirm matrix `mat'
		if _rc {
			capture matrix `b' = `mat'
			if _rc {
				di as err "option `opt'() invalid"
				exit 198
			}
		}
		else	matrix `b' = `mat'
		if rowsof(`b') != 1 {
			di as err "option `opt'() requires a row vector"
			exit 198
		}
		if `ncol' < colsof(`b') {
			di as err "too many values in `opt'()"
			exit 503
		}
		else if `ncol' > colsof(`b') {
			di as err "too few values in `opt'()"
			exit 503
		}
		local coln : colnames `b'
		if !`:list coln in varlist' {
			matrix colnames `b' = `varlist'
		}
	}
	else {
		if `"`char'"' == "" {
			NeedOpt `opt'
		}
		// get matrix elements from variable characteristics
		foreach var of local varlist {
			local ch : char `var'[`char']
			cap confirm number `ch'
			if !_rc {
				matrix `b' = nullmat(`b'), `ch'
			}
			else {
				NeedOpt `opt'
			}
		}
		matrix colnames `b' = `varlist'
	}
	return matrix mat `b'
end

program NeedOpt
	args opt

	di in smcl as err "{p 0 0 2}option `opt'() is required"	///
	" with datasets that are not generated"		///
	" by the bootstrap command{p_end}"

	exit 198
end

program OneBstat, rclass
	args touse x ebi vai level sep normal percentile bc bca
	tempname sd zalpha z0 zz

quietly {
	summarize `x' if `touse'
	local n = r(N)

	local bias = r(mean) - `ebi'
	scalar `sd' = r(sd)

	// Compute bias-corrected (and accelerated) percentiles
	local eps = (1e-7)*max(`sd',abs(`ebi'))
	count if `x'<=`ebi'+`eps' & `touse'
	if r(N) > 0 & r(N) < `n' {
		scalar `z0' = invnorm(r(N)/`n')
		scalar `zalpha' = invnorm((100 + `level')/200)

		// bias-corrected
		local p1 = 100*normprob(2*`z0' - `zalpha')
		local p2 = 100*normprob(2*`z0' + `zalpha')

⌨️ 快捷键说明

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