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

📄 jackknife.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 3 页
字号:
*! version 9.4.18  07apr2005
program jackknife, eclass sortpreserve
	version 9, missing
	local version : di "version " string(_caller()) ", missing:"

	// version control
	if _caller()<=6 {
		`version' jknife_6 `0'
		exit
	}

	capture _on_colon_parse `0'
	if c(rc) | `"`s(after)'"' == "" {
		gettoken old : 0 , qed(qed)
		if `qed' {
			// version control
			`version' jknife_8 `0'
			exit
		}
		if !c(rc) {
			local 0 `"`s(before)'"'
		}

		// replay output
		if replay() {
			if "`e(vce)'" != "jackknife" {
				error 301
			}
			Display `0'
			exit
		}
	}

	`version' JKnife `0'
end

program JKnife, eclass
	version 9
	local version : di "version " string(_caller()) ":"

	// <my_stuff> : <command>
	_on_colon_parse `0'
	local command `"`s(after)'"'
	local 0 `"`s(before)'"'

	// quick check for -svy- and -nodrop- options
	syntax [anything(name=exp_list equalok)]	///
		[fw iw pw aw] [if] [in] [,		///
			SVY				///
			COEF				/// for -logistic-
			noDROP				///
			Level(passthru)			///
			FORCE				///
			CLuster(passthru)		/// cluster options
			NOECLUSTER			///
			IDcluster(string)		///
			*				/// other options
		]
	if "`svy'" != "" {
		if "`cluster'" != "" {
			di as err "option cluster() is not allowed with svy"
			exit 198
		}
		_svy_newrule
	}
	_get_eformopts, soptions eformopts(`options') allowed(__all__)
	local options `"`s(options)'"'
	local efopt = cond(`"`s(opt)'"'=="",`"`s(eform)'"',`"`s(opt)'"')

	if "`weight'" != "" {
		local wgt [`weight'`exp']
	}

	// parse the command and check for conflicts
	`version' _prefix_command jackknife `wgt' `if' `in' , ///
		`svy' checkvce `coef' `efopt' `cluster' `level' ///
		checkcluster : `command'

	if `"`r(vce)'"' != "" {
		di as err "option vce() not allowed"
		exit 198
	}

	while inlist(`"`s(cmdname)'"', "svy", ///
		"jackknife", "jknife", "jacknife") {
		if `"`s(cmdname)'"' == "svy" {
			local svy svy
		}
		if `"`s(cmdname)'"' == "svy" & `"`s(cmdargs)'"' != "" {
			_svy_check_vce `vcetype'
			if `"`s(vce)'"' != "jackknife" {
				error 198
			}
		}
		if `"`wgt'"' == "" & `"`s(wgt)'"' != "" {
			local wgt `"[`s(wgt)']"'
		}
		local if	`"`s(if)'"'
		local in	`"`s(in)'"'
		local efopt	`"`s(efopt)'"'
		local options `"`options' `s(cmdopts)'"'
		if `"`s(rest)'"' == "" {
			`svy' `wgt' `if' `in, ///
				`efopt' `cluster' `level' `options'
			exit
		}
		`version' _prefix_command jackknife `wgt' `if' `in' , ///
			svy checkvce `efopt' `cluster' `level' ///
			checkcluster `s(rest)'
	}

	local version	`"`s(version)'"'
	local cmdname	`"`s(cmdname)'"'
	local cmdargs	`"`s(anything)'"'
	local wgt	`"`s(wgt)'"'
	local wtype	`"`s(wtype)'"'
	local wexp	`"`s(wexp)'"'
	local cmdif	`"`s(if)'"'
	local cmdin	`"`s(in)'"'
	local cmdopts	`"`s(options)'"'
	local cluster	`"`s(cluster)'"'
	local rest	`"`s(rest)'"'
	local efopt	`"`s(efopt)'"'
	local command	`"`s(command)'"'
	local level	`"`s(level)'"'

	if `"`efopt'"' != "" & !inlist(`"`:list retok exp_list'"', "", "_b") {
		local efopt
	}

	if "`svy'" != "" {
		// -_svy_check_cmdopts- resets -s()-
		_svy_check_cmdopts `cmdname', `cmdopts'
		local first	`"`s(first)'"'
		local cmdlog	`"`s(log)'"'
	}

	local exclude bs bstrap bootstrap brr statsby
	if `:list cmdname in exclude' ///
	 | ("`force'" == "" & substr("`cmdname'",1,3) == "svy") {
		di as err "`cmdname' is not supported by jackknife"
		exit 199
	}

	if "`s(replay)'" != "" {
		if "`e(cmdname)'" != "`cmdname'" {
			error 301
		}
		Display, `options' `cmdopts' `efopt' level(`level') `rest'
		exit
	}

	is_svysum `cmdname'
	local is_sum = r(is_svysum)

	if "`svy'" != "" {
		local svyopts SUBpop(passthru) noADJust TWOperstratum
	}

	// now check the rest of the options
	local 0 `", `options'"'
	syntax [,				///
		noDOTS				///
		NOCOUNT				/// not documented
		Eclass Eclass1			///
		N(string)			///
		Rclass				///
		KEEP				///
		SAving(string)			///
		DOUBle				/// not documented
		MSE MSE1 NOMSE			///
		NOIsily				/// "prefix" options
		TRace				///
		REJECT(string asis)		///
		noHeader			/// Display options
		noLegend			///
		notable				///
		Verbose				///
		TItle(string asis)		///
		`svyopts'			/// -svy- options
	]

	// NOTE: MSE1 exists just in case the `mse' option is specified twice
	// due to -svyset-

	// check expressions
	tempname N touseN nobs wnclust
	tempvar subuse touse clid ncl

	mark `touse' `cmdif' `cmdin'
	if `"`svy'"' != "" {
		if `is_sum' {
			Check4Over, `cmdopts'
			local hasover `"`s(hasover)'"'
		}
		tempvar wvar
		tempname npop nsub nsubpop nstrata npsu
		if `"`subpop'"' != "" {
			tempvar otouse
			quietly gen byte `otouse' = `touse'
		}
		else	local otouse `touse'
		_svy_setup `touse' `subuse',		///
			cmdname(`cmdname')		///
			svy				///
			jackknife			///
			`subpop'			///
			`hasover'			///
			// blank
		if "`r(wtype)'" != "" {
			local wtype	`"`r(wtype)'"'
			local wexp	`"`r(wexp)'"'
			quietly gen double `wvar' `wexp'
			local wgt	[`wtype'=`wvar']
		}
		else {
			quietly gen double `wvar' = `touse'
		}
		if "`mse'" == "" {
			local mse `r(mse)'
		}
		local posts	`"`r(poststrata)'"'
		local postw	`"`r(postweight)'"'
		local subpop	`"`r(subpop)'"'
		local srssub	`r(srssubpop)'
		local jkrw	`r(jkrweight)'
		if "`jkrw'" != "" {
			if "`keep'" != "" {
				di as err ///
"option keep is not allowed with replicate weights"
				exit 198
			}
			local omit 0
		}
		else {
			local omit	`r(N_strata_omit)'
			local fpc	`r(fpc1)'
			local strata	`r(strata1)'
			local cluster	`r(su1)'
			_svy_check_fpc `otouse' "`fpc'" "`strata'"
		}
		if "`r(wtype)'" != "" {
			sum `wvar' if `otouse', mean
			scalar `npop' = r(sum)
		}
		else {
			quietly count if `otouse'
			scalar `npop' = r(N)
		}
		capture _svy `touse' if `touse' `wgt',	///
			strata(`strata')		///
			psu(`cluster')			///
			novariance
		if c(rc) {
			ereturn scalar singleton = 1
			scalar `nstrata' = .
			scalar `npsu'	 = .
		}
		else {
			ereturn scalar singleton = 0
			scalar `nstrata' = r(N_strata)
			scalar `npsu'	 = r(N_psu)
		}
		if `"`posts'"' != "" {
			tempname postwvar
			svygen post double `postwvar' `wgt'	///
				if `touse' == 1, posts(`posts') postw(`postw')
			local npost = r(N_poststrata)
			local pstropt pstrwvar(`postwvar') ///
				posts(`posts') postw(`postw')
			if "`wtype'" == "" {
				local wgt [pw=`postwvar']
			}
			else {
				local wgt [`wtype'=`postwvar']
			}
		}
	}
	else {
		if "`wtype'" != "" {
			tempvar wvar
			quietly gen double `wvar' `wexp'
			local wgt [`wtype'=`wvar']
		}
		quietly gen byte `subuse' = `touse'
	}

	if "`trace'" != "" {
		local noisily	noisily
		local traceon	set trace on
		local traceoff	set trace off
	}
	if "`cmdlog'" != "" {
		local noisily noisily
	}
	if "`noisily'" != "" {
		local dots nodots
	}

	// this allows us to restore original sort order later for the
	// unweighted jackknife; we restore sort order only to accommodate time
	// series operators in commands like -regress-
	tempvar order
	quietly gen long `order' = _n
	local sortvars : sortedby		// restore sort order later

	// preliminary parse of <exp_list>
	_prefix_explist `exp_list', stub(_jk_)
	local eqlist	`"`s(eqlist)'"'
	local idlist	`"`s(idlist)'"'
	local explist	`"`s(explist)'"'
	local eexplist	`"`s(eexplist)'"'

	_prefix_note `cmdname', `dots'
	if "`noisily'" != "" {
		di "jackknife: First call to `cmdname' with data as is:" _n
		di as inp `". `command'"'
	}

	local usesvy 0
	if "`svy'" != "" {
		local props : properties `cmdname'
		local svyr svyr
		if `:list svyr in props' & `"`exp_list'"' == "" {
			local usesvy 1
		}
	}

	// run the command using the entire dataset
	_prefix_clear, e r
	if `usesvy' {
		`traceon'
		capture noisily quietly `noisily' `version'	///
			svy, subpop(if `subuse', `srssub')	///
			vce(linearized) : `cmdname' `cmdargs'	///
			if `touse', `cmdopts' `rest'
		`traceoff'
		if e(singleton) == 1 | e(census) == 1 {
			// -jackknife- can do nothing more, so just
			// report results and exit
			svy
			exit
		}
	}
	else {
		`traceon'
		capture noisily quietly `noisily' `version'	///
			`cmdname' `cmdargs'			///
			`wgt' if `subuse', `cmdopts' `rest'
		`traceoff'
	}
	local rc = c(rc)
	// error occurred while running on entire dataset
	if `rc' {
		_prefix_run_error `rc' jackknife `cmdname'
	}
	// check for rejection of results from entire dataset
	if `"`reject'"' != "" {
		_prefix_reject jackknife `cmdname' : `reject'
		local reject `"`s(reject)'"'
	}
	if `"`cmdname'"' == "mlogit" {
		_prefix_mlogit, `cmdopts'
		local cmdopts `"`s(options)'"'
	}
	if "`nocount'" == "" {
		if trim(`"`rclass'`eclass'`n'"') == "" {
			// get implied n() option based on e(N) or r(N)
			local Nimplied 1
			if !missing(e(N)) {
				local eclass eclass
			}
			else if !missing(r(N)) {
				local rclass rclass
			}
		}
	}
	if "`eclass'" != "" {
		quietly replace `touse' = 0 if `subuse' & e(sample) == 0
	}

	// check for time-series operators
	local junk : subinstr local cmdargs "." "_", count(local hasdot)
	if "`drop'" == "" & `hasdot' == 0 {
		// check e(sample)
		_prefix_check4esample jackknife `cmdname'
		local keepesample `"`s(keep)'"'
	}
	// ignore s(diwarn)

	// determine default <exp_list>, or generate an error message
	if `"`exp_list'"' == "" {
		_prefix_explist, stub(_jk_) edefault
		local eqlist	`"`s(eqlist)'"'
		local idlist	`"`s(idlist)'"'
		local explist	`"`s(explist)'"'
		local eexplist	`"`s(eexplist)'"'
	}
	// expand eexp's that may be in eexplist, and build a matrix of the
	// computed values from all expressions
	tempname b
	_prefix_expand `b' `explist',		///
		stub(_jk_)			///
		eexp(`eexplist')		///
		colna(`idlist')			///
		coleq(`eqlist')			///
		// blank
	local k_eq	`s(k_eq)'
	local k_exp	`s(k_exp)'
	local k_eexp	`s(k_eexp)'
	local K = `k_exp' + `k_eexp'
	local k_extra	`s(k_extra)'
	local names	`"`s(enames)' `s(names)'"'
	local express	`"`s(explist)'"'
	local eexpress	`"`s(eexplist)'"'
	forval i = 1/`K' {
		local exp`i' `"`s(exp`i')'"'
	}
	forval i = 1/`K' {
		if missing(`b'[1,`i']) {
			di as err ///
`"statistic `exp`i'' evaluated to missing in full sample"'
			exit 322
		}
	}
	if `is_sum' {
		if `k_exp' == 0 & "`eexpress'" == "(_b)" {
			// speed things up with the -novariance-
			_prefix_checkopt NOVARiance, `cmdopts'
			if `"`noisily'`s(novariance)'"' == "" {
				local novar " novar"
			}
		}
		if "`svy'" != "" {

⌨️ 快捷键说明

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