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

📄 _robust2.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.0.5  01apr2005
program _robust2, rclass sort
	version 9
	syntax varlist(numeric) [if] [in]	///
		[pw iw] [,			///
		SVY				///
		CLuster(varname)		///
		SUBpop(passthru)		///
		Variance(name)			///
		VSRS(name)			///
		minus(numlist max=1 int >=0)	///
		ZEROweight			///
	]

	if "`minus'" == "" {
		local minus 1
	}
	if "`svy'" == "" & "`weight'" != "" {
		di as err ///
"weights can only be supplied to {help svyset##|_new:svyset}"
		exit 198
	}
	if "`svy'" != "" | "`weight'" == "iweight" {
		local zeroweight zeroweight
	}
	marksample touse, `zeroweight'

	if "`variance'" != "" {
		confirm matrix `variance'
	}
	else {
		if "`e(V)'" != "matrix" {
			error 301
		}
		local vartmp yes
		tempname variance
		matrix `variance' = e(V)
	}
	local k_scores : word count `varlist'
	tempname eqdims
	// verify # vars in varlist == # equations is `variance'
	CheckMatrixLabels `k_scores' `variance' `eqdims'
	local xvarlist	`"`r(varlist)'"'
	local eqnames	`"`r(eqnames)'"'
	local xlist : subinstr local xvarlist "_cons" "`touse'", all word
	markout `touse' `xlist'

	// get the -svyset- information
	tempvar subuse
	_svy_setup `touse' `subuse', `svy' `subpop'
	return add
	return local settings
	return local brrweight
	return local jkrweight
	if "`svy'" != "" {
		local stages	= return(stages)
		if missing(`stages') {
			local stages 0
		}
		forval i = 1/`stages' {
			local strata	`strata' `return(strata`i')'
			if "`return(su`i')'" == "" {
				tempvar obsid
				quietly gen byte `obsid' = . in 2
				local su	`su' `obsid'
			}
			else	local su	`su' `return(su`i')'
			local fpc	`fpc' `return(fpc`i')'
		}
		local posts	`return(poststrata)'
		local postw	`return(postweight)'
		local wtype	`return(wtype)'
		local wexp	`"`return(wexp)'"'
		if "`wexp'" != "" {
			tempvar wvar
			quietly gen double `wvar' `wexp'
		}
	}
	else {
		local su	`cluster'
		local wtype	`weight'
		local wvar : word 2 of `exp'
		gettoken equal wvar : wexp, parse(" =")
		local wvar : list retok wvar
	}
	if "`vartmp'" == "yes" {
		return matrix V `variance'
	}

	// poststratification
	if "`posts'" != "" {
		tempvar postid
		sort `touse' `posts', stable
		local by `touse' `posts'
		quietly by `by': gen `postid' = _n==1 if `touse'
		quietly replace `postid' = sum(`postid')

		// do not return vsrs() or vmsp() for poststratification
		local vsrs
		local vmsp
	}

	capture noisily quietly	///
	mata: _robust2(		///
		"`varlist'",	///
		"`xlist'",	///
		"`eqdims'",	///
		"`variance'",	///
		"`vsrs'",	///
		"`touse'",	///
		"`subuse'",	///
		"`wvar'",	///
		"`fpc'",	///
		"`strata'",	///
		"`su'",		///
		"`postid'",	///
		"`postw'",	///
		`minus'		///
	)

	if c(rc) error c(rc)

	// saved results
	local Vlist `variance'
	if "`vsrs'" != "" {
		local Vlist `Vlist' `vsrs' `vsrs'sub
		if "`vsrs'" != "" & "`fpc'" != "" {
			local Vlist `Vlist' `vsrs'wr `vsrs'subwr
		}
	}
	return scalar census = r(census)
	foreach mat of local Vlist {
		matrix colna `mat' = `xvarlist'
		matrix rowna `mat' = `xvarlist'
		matrix coleq `mat' = `eqnames'
		matrix roweq `mat' = `eqnames'
	}
	local sclist : r(scalars)
	foreach sc of local sclist {
		return scalar `sc' = r(`sc')
	}
	local matlist : r(matrices)
	tempname m
	foreach mat of local matlist {
		matrix `m' = r(`mat')
		return matrix `mat' `m'
	}
	if "`svy'" != "" {
		return scalar df_r = r(N_clust) - r(N_strata)
		if `"`subpop'"' == "" {
			return local N_sub
			return local N_subpop
		}
	}
	else {
		return local N_sub
		return local N_subpop
		if inlist("`wtype'", "fweight", "iweight") {
			return scalar N = r(N_pop)
			return scalar df_r = r(N_pop) - 1
		}
		else	return scalar df_r = r(N) - 1
		if "`wtype'" != "" {
			return local wtype `wtype'
			return local wexp  `"`wexp'"'
		}
		return local N_pop
		return local N_strata
		return local N_psu
	}
end

program CheckMatrixLabels, rclass
	args k v eqdims
	local cons _cons
	local eqnames	: coleq `v', quote
	local ueq	: list uniq eqnames
	local names	: colna `v'

	local k_eq : word count `ueq'
	if `k' < `k_eq' {
		error 102
	}
	else if `k' > `k_eq' {
		error 103
	}
	local vlist : subinstr local names "_cons" "", all word
	if "`:list uniq vlist'" != "" {
		confirm var `vlist'
	}

	matrix `eqdims' = J(1,`k',0)
	forval i = 1/`k' {
		local eq : word `i' of `ueq'
		local ignored : subinstr local eqnames `""`eq'""' "", ///
			all word count(local cnt)
		matrix `eqdims'[1,`i'] = `cnt'
	}
	return local varlist	`"`names'"'
	return local eqnames	`"`eqnames'"'
end

exit

⌨️ 快捷键说明

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