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

📄 svar.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:
*! version 1.2.2  01apr2005
program define svar, eclass byable(recall) sort
	version 8.0

	if replay() {
		if "`e(cmd)'" != "svar" {
			error 301
		}

		if _by() {
			error 190 
		}

		syntax [ , Level(cilevel) Full]
		
		Dheadernew
		if "`e(small)'" != "" {
			local dfr = e(df_r)
			ETable2, level(`level') dfr(`dfr')
		}
		else {
			ETable2, level(`level')
		}	
		exit
	} 



	 syntax varlist(ts) [if] [in] , 		/*
	 	*/ [ACONstraints(numlist)		/* svar
		*/ AEq(string)				/* svar
		*/ ACns(string)				/* svar 
	 	*/ BCONstraints(numlist)		/* svar
		*/ BEq(string)				/* svar
		*/ BCns(string)				/* svar
		*/ LRCONstraints(numlist)		/* svar
		*/ LREq(string)				/* svar
		*/ LRCns(string)			/* svar
		*/ noIDENcheck				/* svar
		*/ Full					/* undocumented
		*/ var 					/* svar
		*/ from(string) 			/* svar
		*/ noLOg				/* svar
	 	*/ LAgs(numlist integer >0 sort ) 	/* var
		*/ EXog(varlist ts)			/* var
		*/ VARConstraints(string)		/* var
		*/ noCONStant DFK			/* var 
		*/ LUTstats noBIGf			/* var
		*/ SMall				/* var
		*/ Level(cilevel) 			/* var
		*/ noISLOG				/* var
		*/ noISure				/* var
		*/ ISITerate(numlist max =1 integer >0 )/* var
		*/ ISTOLerance(numlist max =1 >0 <1 )	/* var
		*/ CONSTraints(numlist) 		/* undocumented
		*/ * ]					/* mlopts */
							
/* constraints() option appears for error checking only.  constraints()
 * are not allowed but it must be explicitly parsed or mlopts will
 * parse it.
 */


	mlopts mlopts, `options'


	if "`islog'" != "" {
		local islog nolog
	}	

	if "`isiterate'" != "" {
		local isiterate "iterate(`isiterate')"
	}	

	if "`istolerance'" != "" {
		local istolerance "tolerance(`istolerance')"
	}	
	



	if "`isure'" != "" & "`varconstraints'" == "" {
		di as err "{cmd:isure} cannot be specified without "	/*
			*/ "{cmd:varconstraints}"
		exit 198
	}	

	if "`islog'" != "" & "`varconstraints'" == "" {
		di as err "{cmd:noislog} cannot be specified without "	/*
			*/ "{cmd:constraints}"
		exit 198
	}	
	if "`istolerance'" != "" & "`varconstraints'" == "" {
		di as err "{cmd:istolerance()} cannot be specified without "/*
			*/ "{cmd:varconstraints}"
		exit 198
	}	

	if "`isiterate'" != "" & "`varconstraints'" == "" {
		di as err "{cmd:isiterate()} cannot be specified without "/*
			*/ "{cmd:varconstraints}"
		exit 198
	}	


	if "`isure'" != "" {
		if "`isiterate'" != "" {
			di as err "{cmd:isiterate} cannot be specified "/*
				*/ "with {cmd:noisure}"
			exit 198	
		}	

		if "`istolerance'" != "" {
			di as err "{cmd:istolerance} cannot be specified "/*
				*/ "with {cmd:noisure}"
			exit 198	
		}	

		if "`islog'" != "" {
			di as err "{cmd:noislog} cannot be specified "/*
				*/ "with {cmd:noisure}"
			exit 198	
		}	
	}


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

	if "`aconstraints'`bconstraints'`acns'`bcns'`aeq'`beq'" == "" /*
		*/ & "`lreq'`lrconstraints'`lrcns'" == "" { 
		di as err "no constraints specified"
		exit 198
	}

	if "`aconstraints'`bconstraints'`acns'`bcns'`aeq'`beq'" != "" /*
		*/ & "`lreq'`lrconstraints'`lrcns'" != "" { 
		di as err "short-run and long-run constraints may not "/*
			*/ "both be specified"
		exit 198
	}

	
	marksample touse

	qui tsset

	local tvar `r(timevar)'
	local pvar `r(panelvar)'

	if "`tvar'" == "" {
di as err "{help tsset##|_new: tsset} your data before using "	/*
*/ "{help svar##|_new:svar}"
		exit 498
	}

	qui sort `pvar' `tvar'

	if "`exog'" != "" {
		markout `touse' `exog'
	}	


	/* drop collinear variables */

	_rmcoll `varlist' if `touse', `constant'
	local varlist `r(varlist)'

	if "`lags'" == "" {
		local lags 1 2
	}	

	
	if "`constant'" == "" {
		local ncons 1
	}
	else {
		local ncons 0
	}
	

	if "`varconstraints'" != "" {
		local cnslist_var `varconstraints'
		local varconstraints "constraints(`varconstraints')"
	}	

	markout `touse' L(`lags').(`varlist')

	local nlags : word count `lags'
	local mlag  : word `nlags' of `lags'

	qui count if `touse'
	local N = r(N)

	if `mlag' > r(N)-1 {
		di as err "you cannot fit a model with `nlags' and `N'"/*
			*/ " observations"
	}		


	if "`exog'" != "" {
		_rmcoll `exog' if `touse', `constant'
		local exog `r(varlist)'

		tsunab flist : L(0 `lags').(`varlist') `exog'

		_rmcoll `flist' if `touse', `constant'
		local flist2 `r(varlist)'

		local same : list flist == flist2
		if `same' != 1 {
			di as err "{p 0 4}the exogenous variables may "	/*
				*/ "not be collinear with the "		/*
				*/ "dependent variables, or their "	/*
				*/ "lags{p_end}"
			exit 198
		}	
	}

	if "`exog'" != "" {
		local exogm "exog(`exog')"
	}	
	
	local nexog : word count `exog'


/* parse acns() and bcns() into acnsmat and bcnsmat, if specified */

	local neqs: word count `varlist'

	if  "`lreq'`lrconstraints'`lrcns'" == "" { 


		if "`aconstraints'`acns'`aeq'" == "" {
			tempname aeqi
			mat `aeqi' = I(`neqs')
			local aeq  `aeqi'
		}

		if "`bconstraints'`bcns'`beq'" == "" {
			tempname beqi
			mat `beqi' = I(`neqs')
			local beq  `beqi'
		}
	
		if "`acns'" != "" {
			tempname acnsmat
			_svar_mkmatcns, mat(`acns') name(a) neqs(`neqs') /*
				*/ tname(`acnsmat') type(acns())
			local imp_cnsa `r(svar_cnslist)'	
		}
		if "`bcns'" != "" {
			tempname bcnsmat
			_svar_mkmatcns, mat(`bcns') name(b) neqs(`neqs') /*
				*/ tname(`bcnsmat') type(bcns())
			local imp_cnsb  `r(svar_cnslist)'	
		}
	
		if "`aeq'" != "" {
			tempname aeqmat
			_svar_mkmatcns, mat(`aeq') name(a) neqs(`neqs') /*
				*/ tname(`aeqmat') eq type(aeq())
			local imp_cnsa `imp_cnsa' `r(svar_cnslist)'	
		}
	
		if "`beq'" != "" {
			tempname beqmat
			_svar_mkmatcns, mat(`beq') name(b) neqs(`neqs') /*
				*/ tname(`beqmat') eq type(beq())
			local imp_cnsb `imp_cnsb' `r(svar_cnslist)'	
		}
	}
	else {
		if "`lrcns'" != "" {
			tempname lrcnsmat
			_svar_mkmatcns, mat(`lrcns') name(c) neqs(`neqs') /*
				*/ tname(`lrcnsmat') type(lrcns())
			local imp_cnski `imp_cnski' `r(svar_cnslist)'	
		}

		if "`lreq'" != "" {
			tempname lreqmat
			_svar_mkmatcns, mat(`lreq') name(c) neqs(`neqs') /*
				*/ tname(`lreqmat') eq type(lreq())
			local imp_cnski `imp_cnski' `r(svar_cnslist)'	
		}
	}

	if "`var'" == "" {
		local dispvar nodisplay  
	}	
	else {
		local dispvar  
	}
	

	capture noi var `varlist'  if `touse', lags(`lags') 	/*
		*/ `exogm' `dfk' `constant' `lutstats' 		/*
		*/ `bigf' level(`level') `small'		/*
		*/ `varconstraints' `islog' `isure'		/*
		*/ `isiterate' `istolerance' `dispvar'
	
	if _rc > 0 {
		di as err "{cmd:var} returned error " _rc 
		di as err "check the specification of the "	/*
			*/ "underlying VAR"

		if "`imp_cnsa'`imp_cnsb'`imp_cnski'" != "" {
			constraint drop `imp_cnsa' `imp_cnsb' `imp_cnski'
		}
		exit _rc
	}	

/* make tempnames and tempvars */

	tempname starts sigma b_var v_var bf_var vf_var  G_var e_var 	/*	
		*/ b_svar v_svar ll_svar sbic_var hqic_var aic_var 	/*
		*/ fpe_var detsig_var detsig_ml_var ll_var		/*
		*/ a_est b_est Cns Cns_var ll_dfk_var klr_est

/* save off info from VAR */

	estimates store `e_var'

	
	mat `b_var'  = e(b)
	mat `v_var'  = e(V)
	mat `bf_var' = e(bf)
	mat `G_var'  = e(G)
	mat `Cns_var'  = e(Cns)


	mat `sigma'  = e(Sigma)

	local endog_var `varlist'
	local exog_var `e(exog)'
	local eqnames_var `e(eqnames)'
	local depvar_var   `varlist'
	local nocons_var `e(nocons)'
	local tsfmt "`e(tsfmt)'"
	local timevar "`e(timevar)'"

	
	local neqs  	  = e(neqs)
	local df_eq_var   = e(df_eq)
	local k_var 	  = e(k)
	local tparms_var  = e(tparms)
	
	scalar `sbic_var' = e(sbic)
	scalar `hqic_var' = e(hqic)
	scalar `aic_var'  = e(aic)
	scalar `fpe_var'  = e(fpe)

	local mlag_var    = e(mlag) 
	local tmax_var    = e(tmax)
	local tmin_var    = e(tmin)
	local N_gaps_var  = e(N_gaps)
	local T_var       = e(T)

	local lags_var    `e(lags)'
	scalar `detsig_var'    = e(detsig)
	scalar `detsig_ml_var' = e(detsig_ml)
	scalar `ll_var'        = e(ll)
	

	if "`dfk'" != "" {
		scalar `ll_dfk_var'        = e(ll_dfk)
	}	
	
	if "`small'" != "" {
		local df_r_var 			= e(df_r)
		forvalues i = 1/`neqs' {
			tempname rmse_`i'_var r2_`i'_var  ll_`i'_var /*
				*/ F_`i'_var
			local obs_`i'_var	= e(obs_`i')
			local k_`i'_var 	= e(k_`i')
			scalar `rmse_`i'_var'  	= e(rmse_`i')
			scalar `r2_`i'_var'    	= e(r2_`i')
			scalar `ll_`i'_var'	= e(ll_`i')
			local df_m`i'_var	= e(df_m`i')
			local df_r`i'_var	= e(df_r`i')
			scalar `F_`i'_var'	= e(F_`i')
		}
	}	
	else {
		forvalues i = 1/`neqs' {
			tempname rmse_`i'_var r2_`i'_var ll_`i'_var /*
				*/ chi2_`i'_var
			local obs_`i'_var	= e(obs_`i')
			local k_`i'_var 	= e(k_`i')
			scalar `rmse_`i'_var'  	= e(rmse_`i')
			scalar `r2_`i'_var'    	= e(r2_`i')
			scalar `ll_`i'_var'	= e(ll_`i')
			local df_m`i'_var	= e(df_m`i')
			scalar `chi2_`i'_var'	= e(chi2_`i')
		}
	}

	global T_sigma  `sigma'
	global T_neqs `neqs'
	global T_T = `N'

	if  "`lreq'`lrconstraints'`lrcns'" == "" { 
		_mkpmats, neqs(`neqs')
		local aparms "`r(aparms)'"
		local bparms "`r(bparms)'"

		local cns_a `aconstraints' `imp_cnsa'
		local cns_b `bconstraints' `imp_cnsb'

		foreach cnsitem of local cns_a {
			constraint get `cnsitem'
			if "`cns_a_list'" == "" {
				local cns_a_list "`r(contents)'"
			}
			else {
				local cns_a_list "`cns_a_list':`r(contents)'"
			}	
		}

		foreach cnsitem of local cns_b {
			constraint get `cnsitem'
			if "`cns_b_list'" == "" {
				local cns_b_list "`r(contents)'"
			}
			else {
				local cns_b_list "`cns_b_list':`r(contents)'"
			}	
		}

		local fullcns `aconstraints' `bconstraints' 
		local fullcns `fullcns' `imp_cnsa' `imp_cnsb'

		if "`imp_cnsa'`imp_cnsb" != "" {
			local impcns "impcns(`imp_cnsa' `imp_cnsb') "
		}	

		if "`from'" == "" {
			mat `starts' = J(1,2*`neqs'*`neqs',1)
			local base = 2*`neqs'*`neqs'
			forvalues i = 1/`base' {
				mat `starts'[1,`i'] = 1+`i'/100
			}
			local init  "init(`starts', copy)"
		}
		else {
			local init  "init(`from')"
			
			capture ml model d2 _svard2 `aparms' `bparms' 	/*
				*/ if `touse', /*
				*/ const(`fullcns') max `mlopts' search(off) /*
				*/ nopreserve svarconst `init' iter(0) nolog
				
			if _rc > 0 {
				di as err "initial values not feasible"
				
				if "`imp_cnsa'`imp_cnsb'" != "" {
					constraint drop `imp_cnsa' `imp_cnsb'
				}
				exit _rc
			}
			mat `starts' = e(b)	
		}
		
		if "`idencheck'" == "" {
			_svariden , b(`starts') cnsa(`cns_a')  	/*
				*/ cnsb(`cns_b') neqs(`neqs') 	/*
				*/ sigma(`sigma') bigt(`N') `impcns'
		}		


		di as txt "Estimating short-run parameters"
		capture noi ml model d2 _svard2  `aparms' `bparms'	/*
			*/ if `touse', /*
			*/ const(`fullcns') max `mlopts' search(off) /*
			*/ nopreserve svarconst `init' `log' 
		
			if _rc > 0 {
				if "`imp_cnsa'`imp_cnsb'" != "" {
					constraint drop `imp_cnsa' `imp_cnsb'
				}
				exit _rc
			}

		mat `b_svar' = e(b)

	}
	else {
		tempname abar abari
		_getAbar , nlags(`nlags') neqs(`neqs') abar(`abar') /*
			*/ nexog(`nexog') ncons(`ncons')

		global T_Abar `abar'
		capture mat `abari' = inv(`abar')
		if _rc > 0 {
			di as err "Matrix (I-A_1-A_2...-A_p) not invertible"
			exit 498
		}	

⌨️ 快捷键说明

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