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

📄 jackknife.ado

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

	// load/save file with jknife results
	preserve
	capture use `"`saving'"', clear
	if c(rc) {
		if inrange(c(rc),900,903) {
			di as err ///
"insufficient memory to load file with jackknife results"
		}
		error c(rc)
	}
	capture confirm var `clid'
	if !c(rc) {
		quietly drop `clid'
	}
	capture confirm var `jkstrvar'
	if c(rc) {
		local jkstrvar
	}
	else {
		char _dta[jk_strata] `"`jkstrvar'"'
	}
	if `"`jk_wtype'"' != "" {
		char _dta[jk_wtype] `jk_wtype'
		char _dta[jk_multiplier] `"`jkmultvar'"'
	}
	else {
		capture drop `jkmultvar'
		local jkmultvar
	}
	capture confirm var `jkfpcvar'
	if ! c(rc) {
		char _dta[jk_fpc] `"`jkfpcvar'"'
	}
	label data `"jackknife: `cmdname'"'
	char _dta[jk_command]		`"`command'"'
	char _dta[jk_cmdname]		`"`cmdname'"'
	char _dta[jk_names]  		`"`names'"'
	char _dta[jk_nfunction]		`"`nfunc'"'
	if "`svy'" != "" {
		char _dta[jk_svy]	`"`svy'"'
		char _dta[jk_su1]	`"`cluster'"'
		char _dta[jk_N_psu] 	`"`nclust'"'
		char _dta[jk_N_pop]	`"`=`npop''"'
		char _dta[jk_N_strata]	`"`=`nstrata''"'
		char _dta[jk_N_psu]	`"`=`npsu''"'
		if `"`subpop'"' != "" {
			char _dta[jk_N_sub]	`"`=`nsub''"'
			char _dta[jk_N_subpop]	`"`=`nsubpop''"'
			char _dta[jk_subpop]	`"`subpop'"'
		}
	}
	else if "`cluster'" != "" {
		char _dta[jk_cluster] 	`"`cluster'"'
		char _dta[jk_N_cluster] 	`"`nclust'"'
	}
	char _dta[jk_wtype]	`"`wtype'"'
	char _dta[jk_wexp]	`"`wexp'"'
	char _dta[jk_rweights]	`"`jkrw'"'
	char _dta[jk_N]		`=`nobs''

	// 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[jk_version]	1

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

	// saved results
	tempname jk_v
	capture noisily _jk_sum, `mse'
	if c(rc) {
		ereturn clear
		exit c(rc)
	}
	matrix `jk_v'  = r(V)
	local single = r(singleton)
	_copy_mat_stripes `jk_v' : `b'
	restore

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

	if inlist("`cmdname'", "binreg", "glm") {
		if !missing(r(vf)) & r(vf) != 1 {
			matrix `jk_v' = r(vf)*`jk_v'
		}
	}

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

	// restore the copied elements back to -e()-
	_r2e, xmat(b V)
	ereturn local wtype	`wtype'
	ereturn local wexp	`"`wexp'"'
	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 "`eexpress'`k_exp'" != "(_b)0" {
		ereturn local predict _no_predict
	}
	if "`svy'" != "" {
		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	= `nsub'
			ereturn scalar N_subpop	= `nsubpop'
			ereturn local subpop	`"`subpop'"'
			if "`vsrs'" != "" {
				ereturn local srssubpop	`srssub'
			}
		}
		ereturn scalar N_strata	= `nstrata'
		ereturn scalar N_strata_omit = `omit'
		if missing(`npsu') {
			ereturn local N_psu
		}
		else	ereturn scalar N_psu	= `npsu'
		if "`jkrw'" == "" {
			ereturn local strata1	`strata'
			ereturn local fpc1	`fpc'
		}
		else {
			ereturn local strata1
			ereturn local fpc1
			ereturn local jkrweight	`jkrw'
		}
		ereturn local su1		`cluster'
		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 `is_sum' & "`nsubp'" != "" {
			ereturn matrix _N_subp = `nsubp'
		}
		if "`vsrswr'" != "" {
			ereturn matrix V_srswr = `vsrswr'
		}
		if "`vsrs'" != "" {
			ereturn matrix V_srs = `vsrs'
			// NOTE: V_srswr must be posted before the next line
			_svy_mkdeff
		}
	}
	else if `"`cluster'"' != "" {
		ereturn scalar N_clust = `nclust'
		ereturn local cluster `cluster'
	}
	if "`subpop'" == "" {
		ereturn scalar N = `N'
	}
	else	ereturn scalar N = `touseN'
	if `"`title'"' != "" {
		ereturn local title `"`title'"'
	}
	else {
		_prefix_title `cmdname' "Jackknife results"
		ereturn local title `"`r(title)'"'
	}
	forval i = 1/`K' {
		ereturn local exp`i' `"`exp`i''"'
	}
	ereturn local command	`"`:list retok command'"'
	ereturn local nfunction	`"`nfunc'"'
	ereturn local keep `keep'
	if "`keep'" != "" {
		ereturn local pseudo `names'
	}
	// NOTE: this must be the last thing posted to -e()-
	ereturn local cmdname `cmdname'
	if "`svy'" != "" {
		ereturn local prefix svy
	}
	else	ereturn local prefix jackknife
	if "`eexpress'`k_exp'" != "(_b)0" {
		ereturn local predict _no_predict
		ereturn local cmd jackknife
	}
	else {
		if !inlist("`e(predict)'", "_no_predict") {
			// compute e(F) or e(chi2), and e(df_m)
			_prefix_model_test `cmdname', `svy' `adjust'
		}
		if "`svy'" != "" {
			_svy_check_predict `cmdname'
		}
		if "`ecmd'" == "" {
			ereturn local cmd `cmdname'
		}
		else	ereturn local cmd `ecmd'
	}
	// Display output
	if "`replay'" != "" & "`svy'`table'`header'`legend'`verbose'" == "" {
		`replay', level(`level') `efopt'
	}
	else {
		if "`e(cmd)'`first'" == "ivregfirst" {
			_svy_ivreg_first, `diopts'
		}
		Display, `diopts'
	}
end

program Display
	local extra = `"`e(cmd)'"' != `"`e(cmdname)'"'
	if `"`e(cmd)'"' != "" {
		is_svysum `e(cmd)'
		local is_svysum = r(is_svysum)
		local svylist svyb svyj svyr
		local proplist : properties `e(cmd)'
		local svyable = `"`: list proplist & svylist'"' != ""
	}
	else {
		local is_svysum 0
		local svyable 0
	}
	if `extra' | `is_svysum' | `svyable' {
		_prefix_display `0'
		exit
	}
	syntax  [,			///
		notable			///
		TItle(passthru)		///
		noHeader		///
		noLegend		///
		Verbose			///
		*			///
	]
	if ("`table'" != "" & "`header'" != "") exit
	`e(cmd)', `options'
end

program RWeights, sortpreserve sclass
	// NOTE: this routine assumes the number of replicate weight variables
	// is less or equal to the number of observations in the dataset.

	_on_colon_parse `0'
	// replicate weight variables
	local varlist `s(after)'
	local nvars : word count `varlist'

	// output variables
	tokenize `s(before)'
	args jkrm strata fpc		// typically tempvar names
	tempvar id

quietly {

	// default values for output variables
	gen double `jkrm' = (`nvars'-1)/`nvars'	in 1/`nvars'
	gen str `strata' = ""			in 1/`nvars'
	gen double `fpc' = 0			in 1/`nvars'
	gen long `id' = _n

	local calldefault noisily ///
		RW_defaults `jkrm' `strata' `fpc' `id' `nvars'

	forval i = 1/`nvars' {
		local var : word `i' of `varlist'
		// get stratum id
		replace `strata' = `"`: char `var'[jk_stratum]'"' in `i'
		// get FPC value
		local fpcval : char `var'[jk_fpc]
		if `"`fpcval'"' != "" {
			capture {
				confirm number `fpcval'
				assert `fpcval' >= 0
			}
			if c(rc) {
				`calldefault'
				exit
			}
			replace `fpc' = `fpcval' in `i'
		}
		// get multiplier
		local multiplier : char `var'[jk_multiplier]
		if `"`multiplier'"' != "" {
			capture {
				confirm number `multiplier'
				assert `multiplier' > 0
			}
			if c(rc) {
				`calldefault'
				exit
			}
			replace `jkrm' = `multiplier' in `i'
		}
	}
	local goodstrid 1
	sreturn clear
	capture assert `strata' == "" in 1/`nvars'
	if !c(rc) {
		replace `strata' = "one" in 1/`nvars'
		local goodstrid 0
	}
	else {
		capture assert `strata' != "" in 1/`nvars'
		if c(rc) {
			`calldefault'
			local goodstrid 0
		}
	}
	capture bysort `strata': assert `fpc' == `fpc'[1]
	if c(rc) {
		`calldefault'
		local goodstrid 0
	}
	capture by `strata': assert reldif(`jkrm', `jkrm'[1]) < 1e-7
	if c(rc) {
		`calldefault'
		local goodstrid 0
	}
	sreturn local goodstrid `goodstrid'

} // quietly

end

program RW_defaults
	args jkrm strata fpc id nvars
	di as txt "{p 0 0 2}" ///
"(note: some replicate weight variables have inconsistent " ///
"characteristics; ignoring these characteristics){p_end}"
	sort `id'
	replace `jkrm' = (`nvars'-1)/`nvars'	in 1/`nvars'
	replace `strata' = "one"		in 1/`nvars'
	replace `fpc' = 0			in 1/`nvars'
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 + -