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

📄 areg.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.4.5  13jun2005
program areg, eclass byable(onecall) sort
	if _by() {
		local BY `"by `_byvars'`_byrc0':"'
	}
	`BY' _vce_parserun areg, noothervce jkopts(eclass) : `0'
	if "`s(exit)'" != "" {
		exit
	}

	version 6.0, missing
	if replay() {
		if `"`e(cmd)'"' != "areg" {
			error 301
		}
		if _by() { error 190 }
		syntax [, Level(cilevel) ]
		Di_areg  `level'  /* display results */
		exit
	}
	`BY' Estimate `0'
end

program Estimate, eclass byable(recall)
	syntax varlist(ts) [aw fw pw] [if] [in], Absorb(varname) /*
		*/ [Level(cilevel) Robust CLuster(varname) ]

	tokenize `varlist'
	local y `1'
	tsunab y : `y'
	macro shift

	tsrevar `y'
	local yuse `r(varlist)'
	tsrevar `*'
	local xuse `r(varlist)'
	
	if `"`absorb'"'==`""' {
		di in red `"absorb() required"'
		exit 100
	}
	if `"`cluster'"'!=`""' {
		local clopt  `"cluster(`cluster')"'
		local robust `"robust"'
	}
	local wt `"`weight'"'
	if `"`weight'"'==`"pweight"' {
		local weight `"aweight"'
		local robust `"robust"'
	}
	if `"`robust'"'!=`""' {
		local mse1 `"mse1"'
	}

	tempvar touse x c
	tempname vadj b V
	quietly {

	/* Do mark/markout. */

		mark `touse' [`weight'`exp'] `if' `in'
		markout `touse' `yuse' `xuse'
		markout `touse' `absorb' `cluster', strok
		count if `touse'
		if      r(N) == 0 { noisily error 2000 }
		else if r(N) == 1 { noisily error 2001 }

	/* Preserve and keep. */

		preserve
		keep if `touse'

		if `"`weight'"'!=`""' {
			local wexp `"`exp'"'
			tempvar w
			gen double `w' `exp'
			local exp `"=`w'"'
		}

		keep `yuse' `xuse' `absorb' `cluster' `w'

		if `"`weight'"'==`""' { local w 1 }

	/* Sort and count number of groups. */

		sort `absorb'
		count if `absorb'!=`absorb'[_n-1]
		local dfa = r(N) - 1

	/* If not robust, get R^2 from regression without fixed-effects.
	   This is used for test of fixed-effects.
	*/
		if `"`robust'"'==`""' {
			_regress `yuse' `xuse' [`weight'`exp']
			local r2c = e(r2)
			local dfe = e(df_r) - `dfa'
			if `dfe'<=0 | `dfe'>=. { noisily error 2001 }
				/* Note: This check is done later, too. */
		}

	/* Remove means from varlist. */

		summ `yuse' [`weight'`exp']
		local sst = (r(N)-1)*r(Var)

		by `absorb': gen double `x' = sum(`w'*`yuse')/sum(`w')
		by `absorb': replace `x' = `yuse'-`x'[_N]+r(mean)
		drop `yuse'
		rename `x' `yuse'

		if `"`xuse'"' != "" {
			foreach i of varlist `xuse' {
				summ `i' [`weight'`exp']
				by `absorb': gen double `x' = ///
 						sum(`w'*`i')/sum(`w')
				by `absorb': replace `x' = `i'-`x'[_N]+r(mean)
				drop `i'
				gen double `i' = `x'
				drop `x'
			}
		}

	/* Do regression. */

		_regress `yuse' `xuse' [`weight'`exp'], `mse1'

		local nobs = e(N)
		local nvar = e(df_m)	/* # ind. variables in model */
		local mdf  = e(df_m) + `dfa'	/* true model df */
		local sse  = e(rss)
		local ll = e(ll)
		local ll_0 = e(ll_0)

		local r2   = 1 - `sse'/`sst'
		local dfe  = `nobs' - 1 - `mdf'
		if `dfe'<=0 | `dfe'>=. { noisily error 2001 }
		local ar2 = 1 - (1-`r2')*(`nobs' - 1)/`dfe'

	/* Adjust covariance matrix for correct dfe and post. */

		matrix `b' = get(_b)
		matrix `V' = get(VCE)

		if `"`robust'"'==`""' {
			scalar `vadj' = e(df_r)/`dfe'
			matrix `V' = `vadj'*`V'
		}
		else { /* setup for robust variance */
			local k = `mdf' + 1
			tempvar res
			predict double `res', res
		}

		if `"`robust'"'~=`""' {
			_robust `res' [`weight'`exp'], minus(`k') /*
			*/	`clopt' variance(`V')
			local cn = r(N_clust)
			if "`cluster'"~="" {
				local dfe = r(N_clust) - 1
			}
		}
		
		matrix colnames `b' = `*' _cons
		matrix colnames `V' = `*' _cons
		matrix rownames `V' = `*' _cons
		est post `b' `V', dof(`dfe') obs(`nobs') depn(`y')

		if `"`*'"'!=`""' {
			test `*'

			est scalar df_m = r(df)
			if r(df)==`nvar' {
				est scalar F = r(F)
			}
			else {
				est scalar F = .
			}
		}
		else {
			est scalar df_m = 0
			est scalar F = .
		}
		global S_E_mdf = e(df_m)
		global S_E_f   = e(F)

		if `"`robust'"'==`""' {
			est scalar F_absorb = ((`r2'-`r2c')/`dfa')/((1-`r2')/`dfe')
			global S_E_f2 = e(F_absorb)
		}
		else {
			est local vcetype `"Robust"'
			global S_E_vce `"Robust"'
			if `"`cluster'"' != "" {
				est scalar N_clust = `cn'
				est local clustvar `"`cluster'"'

				global S_E_cn  `"`cn'"'
				global S_E_cvn `"`cluster'"'
			}
		}
		est scalar N = `nobs'
		est scalar rss = `sse'

		est scalar ll = `ll'
		est scalar ll_0 = `ll_0'

		est scalar tss = `sst'
		est scalar r2 = 1 - `sse'/`sst'
		est scalar ar2 = `ar2'
		est scalar df_r = `dfe'
		est local absvar `"`absorb'"'
		est scalar df_a = `dfa'
		est scalar rmse = `=sqrt(e(rss)/(e(N)-e(df_a)-e(df_m)-1))'
		est local wexp `"`wexp'"'
		est local wtype `"`wt'"'
		est local depvar `"`y'"'

		global S_E_nobs `"`nobs'"'
		global S_E_sse  `"`sse'"'
		global S_E_sst	`"`sst'"'
		global S_E_r2   `"`e(r2)'"'
		global S_E_tdf  `"`dfe'"'
		global S_E_abs	`"`absorb'"'
		global S_E_dfa  `"`dfa'"'
		global S_E_depv `"`y'"'

		est local predict areg_p
		est local title "Linear regression, absorbing indicators"
		est local cmd  "areg"
		global S_E_cmd "areg"

		restore
		est repost, esample(`touse')
	}

	/* Display results. */

	Di_areg  `level'
end

program Di_areg
	if "`e(prefix)'" != "" & "`e(vce)'" != "" {
		_coef_table_header
		di
		_coef_table, level(`1')
		FooterR
		exit
	}
	local level `"`1'"'

	local rmse = sqrt(e(rss)/(e(N)-e(df_a)-e(df_m)-1))
	if e(F)<. {
		local p   = fprob(e(df_m),e(df_r),e(F))
	}

	di _n in gr `"`e(title)'"' _col(56) /*
	*/	`"Number of obs ="' in ye %8.0f e(N)

	if e(F)<. {
		di in gr _col(56) `"F("' in ye %3.0f e(df_m) in gr `","' /*
		*/	in ye %6.0f e(df_r) in gr `") ="' in ye %8.2f e(F)
	}
	else {
		local h "help j_robustsingular:"
		local dfm = e(df_m)
		local dfr = e(df_r)
		di in smcl _col(56) `"{`h'F( `dfm', `dfr')}"' _col(70) /*
		*/	`"{`h'=       .}"'
	}
	di in gr _col(56) `"Prob > F      ="'  in ye %8.4f `p'
	di in gr _col(56) `"R-squared     ="'  in ye %8.4f e(r2)
	di in gr _col(56) `"Adj R-squared ="'  in ye %8.4f e(ar2)
	di in gr _col(56) `"Root MSE      = "' in ye %7.0g `rmse' _n

	est di, level(`level') plus

	if `"`e(vcetype)'"'=="Robust" { FooterR }
	else			  Footer
end

program Footer
	local dfa1  = e(df_a) + 1
	local skip2 = max(14-length(`"`dfa1'"')-2,0)
	local todisp `"F(`e(df_a)', `e(df_r)') = "'
	local skip3 = max(23-length(`"`todisp'"')-2,0)

	di in smcl in gr %12s  abbrev(`"`e(absvar)'"',12) " {c |}" /*
	*/ _skip(`skip3') `"`todisp'"' /*
	*/ in ye %10.3f e(F_absorb) %8.3f fprob(e(df_a),e(df_r),e(F_absorb)) /*
	*/ in gr _skip(`skip2') `"(`dfa1' categories)"'
end

program FooterR
	local skip  = 8 - length(`"`e(absvar)'"')
	local dfa1  = e(df_a) + 1
        local skip2 = max(44 - length(`"`dfa1'"')-4, 0)

        di in smcl in gr %12s abbrev(`"`e(absvar)'"',12) " {c |}   absorbed" /*
        */ _skip(`skip2') `"(`dfa1' categories)"'
end

⌨️ 快捷键说明

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