📄 svyset.ado
字号:
*! 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 + -