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

📄 svyset.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
*! version 3.0.4  30mar2005
program svyset
	if _caller() < 9 {
		svyset_8 `0'
		exit
	}

	capture Display
	if !c(rc) {
		local oldset `"`r(settings)'"'
	}
	capture noisily SvySet `0'
	if c(rc) {
		local rc = c(rc)
		capture SvySet `oldset'
		exit `rc'
	}
end

program SvySet
	version 9
	// -eclass- is undocumented
	capture syntax [, ECLASS CLEAR ]
	if !c(rc) {
		if "`clear'" != "" {
			Clear
		}
		Display, `eclass'
		exit
	}
	if _N == 0 {
		di as err "no variables defined"
		exit 111
	}

	local commopts	VCE(passthru) MSE	///
			BRRweight(passthru)	///
			JKRweight(passthru)	///
			POSTstrata(passthru)	///
			POSTWeight(passthru)	///
			CLEAR1(passthru)	///
			CLEAR NOCLEAR
	_parse expand stage global : 0, common(`commopts')

	// [if] and [in] are not allowed
	if `"`global_if'`global_in'"' != "" {
		local 0 `"`global_if' `global_in'"'
		syntax [, NOOPTIONS ]
	}

	if `"`global_op'"' != "" {
		ParseGlobals `stage_n' , `global_op'
		if "`s(noclear)'" != "" & `stage_n' {
			local 0 `"`stage_1'"'
			capture syntax [pw iw/]
			if c(rc) {
				di as err ///
			"option noclear is not allowed with design options"
				exit 198
			}
			_svyset set `weight' `exp'
			local stage_n 0
		}
	}
	else {
		Clear
	}

	forval i = 1/`stage_n' {
		ParseStage `i' `stage_`i''
		_svyset get fpc `i'
		if "`r(fpc`i')'" == "" & `stage_n' > `i' {
			di as txt "{p 0 7 2}" ///
"Note: stage `i' is sampled with replacement," ///
" all further stages will be ignored"
			local stage_n `i'
			continue, break
		}
	}
	if `"`:char _dta[_svy_su1]'"' != "" {
		if `stage_n' == 0 {
			local stage_n 1
		}
		char _dta[_svy_stages] `stage_n'
	}
	if `stage_n' | `"`global_op'"' != "" {
		char _dta[_svy_version] 2
	}

	Display
end

program ParseGlobals, sclass
	gettoken stage_n 0 : 0, parse(" ,")
	if `stage_n' == 0 {
		// These are undocumented options that were allowed in a
		// single stage -svyset- in Stata 8.

		local oldopts PSU(passthru) STRata(passthru) FPC(passthru) SRS
	}
	syntax [,				///
		VCE(string)			///
		MSE				///
		BRRweight(varlist numeric)	///
		JKRweight(string asis)		///
		POSTstrata(varname)		///
		POSTWeight(varname numeric)	///
		NOCLEAR				///
		CLEAR				///
		CLEAR1(namelist)		///
		`oldopts'			///
	]

	// NOTE: the -clear- option is accepted here, but it is ignored since
	// it is the default unless -noclear- or -clear()- are specified

	// initialize s(noclear)
	sreturn local noclear
	if "`noclear'" == "" & "`clear1'" == "" {
		Clear
	}
	else {
		if "`clear'" != "" {
			if "`clear1'" != "" {
				opts_exclusive "clear clear()"
			}
			if "`noclear'" != "" {
				opts_exclusive "clear noclear"
			}
		}
		Clear, `clear1' noclear
		if `stage_n' > 1 | `"`psu'`strata'`fpc'`srs'"' != "" {
			di as err ///
			"option noclear is not allowed with design options"
			exit 198
		}
		local noclear noclear
	}

	if `"`vce'`mse'"' != "" {
		_svyset set vce `vce', `mse'
		local defpsu _n
	}
	if `"`brrweight'"' != "" {
		_svyset set brrweight `brrweight'
	}
	if `"`jkrweight'"' != "" {
		JKnifeVChars `jkrweight'
		_svyset set jkrweight `s(varlist)'
	}
	if `"`poststrata'`postweight'"' != "" {
		if "`postweight'" == "" {
			di as err ///
			"option poststrata() requires option postweight()"
			exit 198
		}
		if "`poststrata'" == "" {
			di as err ///
			"option postweight() requires option poststrata()"
			exit 198
		}
		_svyset set poststrata `poststrata'
		_svyset set postweight `postweight'
		local defpsu _n
	}
	if `stage_n' == 0 & "`noclear'" == "" {
		if "`srs'" != "" {
			if "`strata'" != "" {
				opts_exclusive "strata() srs"
			}
			if "`psu'" != "" {
				opts_exclusive "psu() srs"
			}
			local mypsu _n
		}
		else if "`psu'" == "" {
			local mypsu `defpsu'
		}
		if "`mypsu'`psu'`strata'`fpc'" != "" {
			ParseStage 1 `mypsu', `psu' `strata' `fpc'
		}
	}
	sreturn local noclear `noclear'
end

program ParseStage, rclass
	gettoken i 0 : 0
	if `i' == 1 {
		local uspec `"[anything(name=su id="psuid")]"'
		local oldopts PSU(varname)
	}
	else {
		local uspec `"anything(name=su id="ssuid")"'
	}
	syntax `uspec' [pweight iweight/] [,		///
		STRata(varname)				///
		FPC(varname numeric)			///
		`oldopts'				///
	]
	if "`psu'" != "" {
		if "`su'" != "" & "`su'" != "`psu'" {
			di as err "option psu() invalid"
			exit 198
		}
		else	local su `psu'
	}
	else if "`su'" == "" {
		if "`weight'`strata'`fpc'" == "" {
			di as err "psuid required"
			exit 198
		}
		local su _n
	}
	// else `su' was given
	local wtype	`weight'
	local wvar	`"`exp'"'
	if `"`wtype'"' != "" {
		_svyset get wvar
		if `"`r(wvar)'"' != "" {
			di as err "sampling weights may only be specified once"
			exit 198
		}
		_svyset set `wtype' `wvar'
	}
	_svyset set su `i' `su'
	if "`strata'" != "" {
		_svyset set strata `i' `strata'
	}
	else	_svyset clear strata `i'
	if "`fpc'" != "" {
		_svyset set fpc `i' `fpc'
	}
	else	_svyset clear fpc `i'
end

program Clear
	syntax [, noCLEAR	///
		PWeight		///
		IWeight		///
		Weight		///
		vce		///
		mse		///
		BRRweight	///
		JKRweight	///
		POSTstrata	///
		POSTweight	///
	]

	// clear the current settings
	if "`clear'" == "" {
		quietly svyset_8, clear
		_svyset clear wtype
		_svyset clear vce
		_svyset clear brrweight
		_svyset clear jkrweight
		_svyset clear poststrata
		_svyset clear stages 1
		char _dta[_svy_version]
		exit
	}
	if "`pweight'`iweight'`weight'" != "" {
		_svyset clear wtype
	}
	if "`vce'" != "" {
		_svyset clear vce
	}
	if "`mse'" != "" {
		_svyset clear mse
	}
	if "`brrweight'" != "" {
		_svyset clear brrweight
	}
	if "`jkrweight'" != "" {
		_svyset clear jkrweight
	}
	if "`poststrata'`postweight'" != "" {
		_svyset clear poststrata
	}
end

program Set
	if `"`0'"' == "" {
		di as error "svyset:  error in subroutine Set"
		exit 198
	}
	gettoken name value : 0
	char _dta[_svy_`name'] `value'
end

/*
	returns in r():
	Scalars:
		r(stages)	number of sampling stages	or missing
	Macros:
		r(wtype)	"pweight" or "iweight"		or ""
		r(wexp)		"= <varname>"			or ""
		r(vce)		vcetype				or ""
		r(mse)		"mse"				or ""
		r(brrweight)	varlist				or ""
		r(jkrweight)	varlist				or ""
		r(poststrata)	poststrata varname		or ""
		r(postweight)	postweight varname		or ""
		r(su#)		stage # ssu varname		or ""
		r(strata#)	stage # strata varname		or ""
		r(fpc#)		stage # fpc varname		or ""
		r(settings)	svyset args to reproduce current settings
*/
program Get, rclass
	syntax [, eclass]
	if "`eclass'" != "" {
		if "`e(prefix)'" != "svy" {
			di as err "svy estimation results not found"
			exit 301
		}
		GetEclass
		return add
		exit
	}
	local version : char _dta[_svy_version]
	capture confirm integer number `version'
	if c(rc) {
		GetOld
		return add
		exit
	}
	local is_set 0
	// get the global options
	_svyset get wvar
	if `"`r(wvar)'"' != "" {
		local wt `"[`r(wtype)'`r(wexp)']"'
		return add
		return local wvar
		local is_set 1
	}
	_svyset get brr
	if "`r(brrweight)'" != "" {
		local gsets `"`gsets' brrweight(`r(brrweight)')"'
		return add
		local is_set 1
	}
	_svyset get jkr
	if "`r(jkrweight)'" != "" {
		local gsets `"`gsets' jkrweight(`r(jkrweight)')"'
		return add
		local is_set 1
	}
	_svyset get posts
	if `"`r(poststrata)'`r(postweight)'"' != "" {
		local gsets `"`gsets' poststrata(`r(poststrata)')"'
		local gsets `"`gsets' postweight(`r(postweight)')"'
		return add
		local is_set 1
	}
	_svyset get vce
	if `"`r(vce)'"' != "" {
		local gsets `"`gsets' vce(`r(vce)')"'
		if "`r(mse)'" != "" {
			local gsets `"`gsets' mse"'
		}
		return add
		local is_set 1
	}
	else {
		local gsets `"`gsets' vce(linearized)"'
		return local vce linearized
	}

	// get the stage specific settings
	local stages : char _dta[_svy_stages]
	capture confirm integer number `stages'
	if c(rc) {
		local stages 0
	}
	else	local is_set 1
	local comma ","
	forval i = 1/`stages' {
		local comma ","
		_svyset get su `i'
		local su `r(su`i')'
		if `"`su'"' != "" {
			local sets "`sets'`oror'`su'"
			if `"`su'"' == "_n" {
				if `i' != `stages' {
					di as err "invalid use of _n; " ///
"observations can only be sampled in the final stage"

⌨️ 快捷键说明

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