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

📄 eivreg.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.1.11  09feb2005
program define eivreg, eclass byable(recall)
	version 6, missing
	local options "Level(cilevel)"
	if !replay() {
		syntax varlist [if] [in] [aw fw] [, `options' Reliab(string)]
		tokenize `varlist'
		local dv `1'
		mac shift
		local ivars "`*'"

		marksample touse

		tempname xpx xx xy xxi b bp ev mm vv ym2 rr i origxx
		qui mat accum `xpx' = `dv' `ivars' if `touse' [`weight'`exp']
		local nobs = r(N)
		if `nobs'<=0 | `nobs'>=. { error 2001 }
		local dim = rowsof(`xpx')
		local NN = `xpx'[`dim',`dim']

		mat `xx' = `xpx'[2..`dim',2..`dim']
		mat `xxi' = syminv(`xx')
		if diag0cnt(`xxi') {
			di in red /*
			*/ "too few observations or collinear variables"
			exit 2001
		}
		mat drop `xxi'
		mat `origxx' = `xx'

		tokenize `"`reliab'"', parse(" ")
		while ("`*'"!="") {
			confirm variable `1'
			unabbrev `1'
			local 1 "`s(varlist)'"
			confirm number `2'
			local rlist "`rlist' `1' `2'"
			local rn = rownumb(`xx',"`1'")
			if `rn'>=. { 
				di in red "`1' not independent variable"
				exit 111
			}
			if `2'<=0 | `2'>1 {
				di in red "0 < r <= 1 required"
				exit 399
			}
			local vvxx = `xx'[`rn',`rn']
			local vm = `xpx'[`dim',`rn'+1]
			mat `xx'[`rn',`rn'] = /*
				*/ `vvxx' - (1-`2')*(`vvxx'-`vm'*`vm'/`NN')
			mac shift 2
		}
		local rlist "`rlist' * 1"
		mat `xy' = `xpx'[1,2..`dim']
		mat `xxi' = syminv(`xx')
		mat `b' = `xy' * `xxi'
		mat `ev' = (`b' * `xx') * `b''
		local Nmk = `NN' - `dim'+ 1
		scalar `ym2' = (`xpx'[1,`dim'])^2/`NN'
		scalar `rr' = (`xpx'[1,1] - `ev'[1,1]) /(`Nmk')
					/* could be improved: */
		local r2 = (`ev'[1,1]-`ym2')/(`xpx'[1,1]-`ym2') 
		mat `vv' = ((`xxi' * `rr') * `origxx') * `xxi'
		scalar `i'=1
		while `i' <= rowsof(`vv') {
			if `vv'[`i',`i']<=0 {
				di in red "reliability r() too small"
				exit 399
			}
			scalar `i' = `i' + 1
		}
		est post `b' `vv', depname(`dv') dof(`Nmk') esample(`touse')
		quietly test `ivars'

		/* double save in S_E_<stuff> and e() */
		est scalar rmse = sqrt(`rr')
		est scalar df_m = r(df)
		est scalar df_r = r(df_r)
		est scalar F = r(F)
		est scalar N = `NN'
		est scalar r2 = `r2'
		est local rellist "`rlist'"
		global S_E_rmse `e(rmse)'
		global S_E_mdf `e(df_m)'
		global S_E_tdf `e(df_r)'
		global S_E_f `e(F)'
		global S_E_nobs `NN'
		global S_E_r2 `r2'
		global S_E_rvn "`rlist'"
		if "`weight'`exp'" != "" {
			est local wtype `"`weight'"'
			est local wexp `"`exp'"'
		}
		est local depvar "`dv'"
		est local predict "tobit_p"
		est local cmd "eivreg"
		global S_E_cmd "eivreg"
	}
	else {
		if ("`e(cmd)'"!="eivreg") { error 301 }
		if _by() { error 190 }
		syntax [, `options']
	}

	di in gr _n _col(16) "assumed" /*
		*/ _col(49) "Errors-in-variables regression" _n /*
		*/ "variable" _col(14) "reliability"  
	di in smcl in gr "{hline 24}" /*
		*/ _col(56) "Number of obs =" in ye %8.0f e(N)

	tokenize "`e(rellist)'", parse(" ")
	local k 1
	while "`1'"!="" {
		di in gr %8s abbrev("`1'",8) _col(12) %10.4f `2' _col(56) _c
		mac shift 2
		if `k'==1 {
			di in gr "F(" %3.0f e(df_m) "," %6.0f e(df_r) ") =" /*
			*/ in ye %8.2f e(F)
		}
		else if `k'==2 {
			di in gr "Prob > F      =" /*
			*/ in ye %8.4f fprob(e(df_m),e(df_r),e(F))
		}
		else if `k'==3 {
			di in gr "R-squared     =" in ye %8.4f e(r2)
		}
		else if `k'==4 { 
			di in gr "Root MSE      =" in ye %8.0g e(rmse)
		}
		else	di
		local k=`k'+1
	}
	while `k'<=4 {
		di _col(56) _c
		if `k'==2 {
			di in gr "Prob > F      =" /*
			*/ in ye %8.4f fprob(e(df_m),e(df_r),e(F))
		}
		else if `k'==3 {
			di in gr "R-squared     =" in ye %8.4f e(r2)
		}
		else if `k'==4 { 
			di in gr "Root MSE      =" in ye %8.0g e(rmse)
		}
		local k=`k'+1
	}
	di
	est di, level(`level')
end

⌨️ 快捷键说明

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