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

📄 brr.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
	}

	if `"`reject'"' != "" {
		local reject `"reject(`reject')"'
	}

	// -Display- options
	local diopts	level(`level')	///
			`header'	///
			`legend'	///
			`verbose'	///
			`table'		///
			`efopt'		///
			// blank

	if `"`saving'"'=="" {
		tempfile saving
		local filetmp "yes"
	}
	else {
		_prefix_saving `saving'
		local saving	`"`s(filename)'"'
		if "`double'" == "" {
			local double	`"`s(double)'"'
		}
		local every	`"`s(every)'"'
		local replace	`"`s(replace)'"'
	}

	if `"`keepesample'"' != "" & `"`subpop'"' == "" {
		if "`cmdin'" == "" {
			local preserved preserved
			preserve
			quietly `keepesample'
		}
		else {
			quietly replace `touse' = 0 if ! e(sample)
			quietly replace `subuse' = 0 if ! e(sample)
		}
	}

	if "`:sortedby'" != "`sortvars'" {
		sort `sortvars' `order'
	}

	quietly replace `touse'  = 2 if `touse'  == 0
	quietly replace `subuse' = 2 if `subuse' == 0
	quietly count if `touse' == 1
	tempname nobs
	scalar `nobs' = r(N)

	if min(`creps',_N) <= 1 {
		di as err "insufficient observations to perform brr"
		exit 459
	}

	// restore subpop indicator to 0/1
	quietly replace `subuse' = (`subuse' == 1)

	// BRR temp pseudovalue variables
	forval i = 1/`K' {
		tempvar tv`i'
		local pseudo `pseudo' `tv`i''
	}

nobreak {
capture noisily break {

	if "`eexpress'" == "(_b)" {
		tempname esave
		estimates store `esave'
	}

	if "`sortvars'" != "" {
		sort `sortvars', stable
	}

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

	local cmd1 `"cmd1(`version' `cmdname' `cmdargs')"'
	local cmd2 `"cmd2(`cmdopts'`novar'`rest')"'

	if "`brrw'" == "" {
		_loop_brr `touse' `subuse'		///
			`strid' `psuid' `pseudo',	///
			command(`command')		///
			express(`express')		///
			`cmd1' `cmd2'			///
			wvar(`wvar')			///
			`pstropt'			///
			h(`hadamard')			///
			fay(`fay')			///
			postid(`postid')		///
			`dots'				///
			`noisily'			///
			`trace'				///
			`reject'			///
			// blank
	}
	else {
		_loop_rw `touse' `subuse' `pseudo',	///
			caller(BRR)			///
			command(`command')		///
			express(`express')		///
			`cmd1' `cmd2'			///
			rwvars(`brrw')			///
			owvar(`wvar')			///
			`pstropt'			///
			postid(`postid')		///
			`dots'				///
			`noisily'			///
			`trace'				///
			`reject'			///
			// blank
	}

} // 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/save file with brr results
	if "`preserved'" != "" {
		restore
	}
	preserve
	capture use `"`saving'"', clear
	if c(rc) {
		if inrange(c(rc),900,903) {
			di as err ///
"insufficient memory to load file with brr results"
		}
		error c(rc)
	}
	label data `"brr: `cmdname'"'
	char _dta[brr_command]	`"`command'"'
	char _dta[brr_cmdname]	`"`cmdname'"'
	char _dta[brr_names]  	`"`names'"'
	char _dta[brr_strata]	`"`strata'"'
	char _dta[brr_su1]	`"`psu'"'
	char _dta[brr_wtype]	`"`wtype'"'
	char _dta[brr_wexp]	`"`wexp'"'
	char _dta[brr_rweights]	`"`brrw'"'
	char _dta[brr_N_pop]	`"`=`npop''"'
	if "`nstrata'" != "" {
		char _dta[brr_N_strata]	`"`nstrata'"'
		char _dta[brr_N_psu]	`"`=2*`nstrata''"'
	}

	// 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', quote
	local coleq : list clean coleq
	if `"`: list uniq coleq'"' == "_" {
		local coleq
	}
	forvalues i = 1/`K' {
		local name : word `i' of `names'
		char `name'[observed] `= `b'[1,`i'] '
		local label = substr(`"`exp`i''"',1,80)
		label variable `name' `"`label'"'
		char `name'[expression] `"`exp`i''"'
		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
		}
	}
	char _dta[brr_N]	`=`nobs''
	char _dta[brr_version]	1

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

	// saved results
	tempname brr_v
	capture noisily _brr_sum, `mse'
	if c(rc) {
		ereturn clear
		exit c(rc)
	}
	mat `brr_v'    = r(V)
	restore

	if "`eexpress'" == "(_b)" {
		// make a copy of what is in -e()-, with some eXclusions
		local xmac cmd _estimates_name chi2type clustvar novariance
		local xsca F chi2 chi2_c p p_c ll ll_c ll0 ll_0 df_m ///
			r2_p r2_a rmse rss mss singleton
		local xmat b V
		if "`e(cmd)'" != "`cmdname'" {
			local ecmd `e(cmd)'
		}
		if "`cmdname'" == "heckman" {
			local xsca `xsca' selambda
		}
		if "`cmdname'" == "intreg" {
			local xsca `xsca' se_sigma
		}
		_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'
			}
		}
	}

	quietly replace `touse' = (`touse'==1)
	ereturn post `b' `brr_v' `Cns', esample(`touse') `depname'

	// restore the copied elements back to -e()-
	_r2e, xmat(b V)
	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 `"`subpop'"' != "" {
		local byopt by(`subuse') nby(1)
	}
	_svy `subuse' `wgt'	///
		if e(sample),	///
		`byopt'		///
		novariance	///
		// blank
	ereturn scalar N_pop	= `npop'
	ereturn local N_sub
	ereturn local N_subpop
	ereturn local subpop
	ereturn local srssubpop
	if `"`subpop'"' != "" {
		ereturn scalar N_sub	= r(N_sub)
		ereturn scalar N_subpop	= r(N_subpop)
		ereturn local subpop	`"`subpop'"'
		if "`vsrs'" != "" {
			ereturn local srssubpop	`srssub'
		}
	}
	if "`brrw'" != "" {
		ereturn local N_strata
		ereturn local N_psu
	}
	else if "`strata'`psu'" == "" {
		ereturn scalar N_strata	= r(N_strata)
		ereturn scalar N_psu	= r(N_psu)
	}
	else {
		capture _svy `subuse' if e(sample),	///
			strata(`strata')		///
			psu(`psu')			///
			novariance			///
			// blank
		if c(rc) {
			ereturn scalar singleton = 1
			ereturn local N_strata
			ereturn local N_psu
		}
		else {
			ereturn scalar singleton = 0
			ereturn scalar N_strata	= r(N_strata)
			ereturn scalar N_psu	= r(N_psu)
		}
	}
	ereturn local wtype	`wtype'
	ereturn local wexp	`"`wexp'"'
	if "`brrw'" == "" {
		ereturn local strata1	`strata'
	}
	else {
		ereturn local strata1
		ereturn local brrweight	`brrw'
	}
	ereturn local su1		`psu'
	if !missing(e(stages)) {
		forval i = 2/`e(stages)' {
			ereturn local strata`i'
			ereturn local su`i'
			ereturn local fpc`i'
		}
	}
	if "`posts'" != "" {
		ereturn local poststrata	`posts'
		ereturn local postweight	`postw'
		ereturn scalar N_poststrata	= `npost'
	}
	ereturn local adjust 		`adjust'
	ereturn local estat_cmd		svy_estat
	if "`vsrs'" != "" {
		ereturn matrix V_srs = `vsrs'
		// NOTE: V_srswr must be posted before the next line
		_svy_mkdeff
	}

	ereturn scalar N = `touseN'
	if `"`title'"' != "" {
		ereturn local title `"`title'"'
	}
	else {
		_prefix_title `cmdname' "BRR results"
		if "`e(prefix)'" == "svy" {
			ereturn local title `"`r(title)'"'
		}
		else	ereturn local title `"Survey: `r(title)'"'
	}
	forval i = 1/`K' {
		ereturn local exp`i' `"`exp`i''"'
	}
	ereturn local command	`"`:list retok command'"'
	// NOTE: this must be the last thing posted to -e()-
	ereturn local cmdname `cmdname'
	ereturn local prefix	svy
	if "`eexpress'`k_exp'" != "(_b)0" {
		ereturn local predict _no_predict
		ereturn local cmd brr
	}
	else {
		if !inlist("`e(predict)'", "", "_no_predict") {
			// compute e(F) and e(df_m)
			_prefix_model_test `cmdname', svy `adjust'
		}
		_svy_check_predict `cmdname'
		if "`ecmd'" == "" {
			ereturn local cmd `cmdname'
		}
		else	ereturn local cmd `ecmd'
	}
	if "`e(cmd)'`first'" == "ivregfirst" {
		_svy_ivreg_first, `diopts'
	}
	svy, `diopts'
end

program Check4Over, sclass
	syntax [, over(passthru) * ]
	if `"`over'"' != "" {
		sreturn local hasover hasover
	}
	else	sreturn local hasover
end

exit

⌨️ 快捷键说明

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