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

📄 qreg.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 3.2.2  05jan2005
program qreg, eclass byable(recall) sort prop(sw)
	version 6, missing
	local options "Level(cilevel)"
	if !replay() {
		syntax varlist [aw fw] [if] [in] [, `options' /*
			*/ noConstant Quantile(real 0.5) /*
			*/ WLSiter(integer 1) noLOg * ]
		if "`constan'"!="" {
			di in red "nocons invalid"
			exit 198
		}
		if `quantil' >= 1 {
			local quant = `quantil'/100
		}
		else	local quant "`quantil'"
		if `quant' <= 0 | `quant' >= 1 {
			di in red "quantiles(`quantil') out of range"
			exit 198
		}
		if `wlsiter'<1 { error 198 }
		if "`log'"=="" { local log "noisily" }
		else 	local log
		marksample touse
		qui count if `touse'
		if r(N)<2 { error cond(_n,2001,2000) }
		_rmcoll `varlist' [`weight'`exp'] if `touse'
		local varlist `r(varlist)'
		quietly {
			tempvar r s2 p wt 
			gen long `s2' = _n
			reg `varlist' [`weight'`exp'] if `touse'
			local i 0
			while (`i'<`wlsiter') {
				capture drop `r'
				capture drop `wt'
				_predict `r' if `touse', resid
				gen `wt' = cond(`r'>=0,`quant',1-`quant') 
				if ("`exp'"!="") {
					gen float `p'`exp'
					replace `wt'=`wt'*`p'
					drop `p'
				}
				reg `varlist' if `touse' [aw=`wt']
				drop `r'
				_predict `r' if `touse', resid
				replace `r'=cond(`r'>=0,`quant',`quant'-1)*`r'
				summ `r', meanonly
				local i = `i'+1
				`log' di in gr /*
		*/ "Iteration  `i':  WLS sum of weighted deviations = " /*
				*/ in ye %10.0g 2*r(sum)
			}
			sort `r' `s2'
			drop `r'

			`log' _qreg `varlist' if `touse' [`weight'`exp'], /*
				*/ quant(`quant') `options'
			if (r(convcode)!=1) { 
				di in re "Convergence not achieved." 
				local frc 430
			}
			else	local frc 0
			local rd = r(f_r)
			local nobs = r(N)
			local rq = r(q_v)
			local rsd = r(sum_rdev)
			local msd = r(sum_adev)
			sort `s2'
			drop `s2'
			_predict `r' if `touse', resid
			gen `s2' = abs(`r')
			summ `s2', meanonly
			replace `r' = 0 if abs(`r')<10e-10*r(mean)
			drop `s2'
			_predict `p' if `touse'
			replace `r' = `quant' if `r'>0 & `r'<.
			replace `r' = (`quant' - 1) if `r'<0
			replace `r' = `r' / `rd'
			gen byte `s2' = 1 if `touse'
			tokenize `varlist'
			local dv "`1'"
			mac shift
			reg `p' `*' if `touse' [`weight'`exp'], dep(`dv')
			local df_m = e(df_m)
			local df_r = e(df_r)
			capture assert `touse'
			if _rc { 
				preserve
				qui keep if `touse'
			}
			_huber `r' `s2' [`weight'`exp']

			/* Double saves */
			est scalar df_m = `df_m'
			est scalar df_r = `df_r'
			est scalar f_r = `rd'
			est scalar N = `nobs'
			est scalar q_v = `rq'
			est scalar q = `quant'
			est scalar sum_rdev = `rsd'
			est scalar sum_adev = `msd'
			est scalar convcode = `frc'

			global S_E_mdf `df_m'
			global S_E_tdf `df_r'
			global S_E_rd `rd'
			global S_E_nobs `nobs'
			global S_E_q `quant'
			global S_E_rq `rq'
			global S_E_rsd `rsd'
			global S_E_msd `msd'
			global S_E_vl "`varlist'"
			global S_E_frc `frc'

			est local properties "b V"

			global S_E_cmd "qreg"
			est local predict "qreg_p"
			est local cmd "qreg"
		}
	}
	else {
		if "`e(cmd)'"!="qreg" { error 301 }
		if _by() { error 190 }
		syntax [, `options']
	}

	di
	* di "  Residual density = `e(f_r)'"
	if (e(q)==0.5) { di in gr "Median regression"  /*
		*/ _col(54) "Number of obs =" in ye %10.0g e(N) }
	else { di in gr e(q) " Quantile regression" /*
		*/ _col(54) "Number of obs =" in ye %10.0g e(N) }
	di in gr "  Raw sum of deviations" in ye %9.0g e(sum_rdev) /*
		*/ in gr " (about " in ye e(q_v) in gr ")"
	di in gr "  Min sum of deviations" in ye %9.0g e(sum_adev) _col(54) /*
		*/ in gr "Pseudo R2     =" /*
		*/ in ye %10.4f 1 - (e(sum_adev)/e(sum_rdev))
	di
	_huber, level(`level')
	error e(convcode)
end

⌨️ 快捷键说明

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