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

📄 _vecu.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 4 页
字号:
		matrix rownames `parms' = parameters
		matrix rownames `bic' = SBIC
		matrix rownames `hqic' = HQIC
		matrix rownames `aic' = AIC
		matrix rownames `ll' = LL
		
		matrix colnames `maxm' = `cnames0'
		matrix colnames `tracem' = `cnames0'
		matrix colnames `lam' = `cnames1'
		matrix colnames `parms' = `cnames2'
		matrix colnames `bic' = `cnames2'
		matrix colnames `hqic' = `cnames2'
		matrix colnames `aic' = `cnames2'
		matrix colnames `ll' = `cnames2'
	
		ereturn clear
	
	
// save off e() for vecrank 
	
		eret mat ll      `ll'
		eret mat aic     `aic'
		eret mat sbic    `bic'
		eret mat hqic    `hqic'
		eret mat k_rank  `parms'
		
		eret mat lambda `lam'

		eret mat trace `tracem'
		eret mat max `maxm'
	
		eret scalar N      = `T'
		eret scalar k_eq      = `K'
		eret scalar k_dv      = `K'
		eret scalar n_lags = `p'
		eret scalar tmin   = `tmin'
		eret scalar tmax   = `tmax'
	
		eret scalar k_ce95   = `r_95' - 1
		eret scalar k_ce99   = `r_99' - 1
		eret scalar k_cesbic  = `r_bic' - 1
		eret scalar k_cehqic = `r_hqic' - 1
		
		eret local trend  "`trend'"
		eret local tsfmt  "`tsfmt'"

		if "`seasonal'" != "" {
			eret local seasonal "`stype'"
		}	
		else if "`sindicators'" != "" {
			eret local sindicators "`sindicators'"
		}	

		if "`reduce'" != "" {
			eret local reduce_opt `reduce'
		}
		eret local reduce_lags "`reduced'"
		
		eret local cmd    "vecrank"

		exit 
	}

	if "`vest'" != "" {

		if "`afrom'" != "" {

			cap noi confirm matrix `afrom'
			if _rc  {
				di as err "afrom(`afrom') does not "	///
					"specify a matrix"
				exit 198
			}

			tempname alpha_st alpha_stp
			mat `alpha_st' = J(`K',`rank',0)
			local acols = `K'*`rank'
			mat `alpha_stp' = `afrom''

			capture va2a , vec_alphap(`alpha_stp') alpha(`alpha_st')
			if _rc > 0 {
				di as err "starting value vector for "	///
					"alpha does not have the "	///
					"correct dimension"
				di as err "starting value vector for "	///
					"alpha must be 1 by `acols'"
				exit 498	
			}		

		}

		if "`bfrom'" != "" {

			cap noi confirm matrix `bfrom'
			if _rc  {
				di as err "bfrom(`bfrom') does not "	///
					"specify a matrix"
				exit 198
			}

			tempname beta_st beta_stp
			mat `beta_st' = J(`nz1',`rank',0)
			local bcols = `nz1'*`rank'
			mat `beta_stp' = `bfrom''

			capture vb2b , vecbeta(`beta_stp') beta(`beta_st')
			if _rc {
				di as err "starting value vector for "	///
					"beta does not have the "	///
					"correct dimension"
				di as err "starting value vector for "	///
					"beta must be 1 by `bcols'"
				exit 498	
			}		
		}

		tempname beta2 temp tempb beta_v alpha2 betab

// section for with and without constraints

		tempname beta2m b betaJ alphaJ omegaJ


// betab contains r, unidentified cointegrating vectors 

		mat `betab' = `beta'[1...,1..`rank']
		mat `betab' = syminv(`betab''*`betab')

// identification check

		local r_cnt 0
		forvalues i = 1/`rank' {
			if `betab'[`i', `i'] > 1e-15 	{
				local ++r_cnt
			}	
		}


		if `r_cnt' < `rank' {
			di as err "the parameters of the "	///
				"cointegrating equations are "	///
				"not identified by the sample"
			di as err "check your sample and the "	///
				"number of lags specified"
			exit 498	
		}

// section without constraints

	
// beta2 is Johansen identified beta
// betaJ is Johansen identified beta

		mat `beta2' = `beta'[1...,1..`rank']*			///
			inv((I(`rank'),J(`rank',			///
			colsof(`beta')-`rank',0))* 			///
			`beta'[1...,1..`rank'])

		mat colnames `beta2' = `ce_lab'
		mat rownames `beta2' = `varlist' `z1exn'
		mat `betaJ' = `beta2'
	
// alpha2 is Johansen identified alpha
// alphaJ is Johansen identified alpha

		mat `alpha2' = `s01'*`beta2'*syminv(`beta2''*`s11'*`beta2')

		mat colnames `alpha2' = `ce_lab'
		mat rownames `alpha2' = `varlist'
		mat `alphaJ' = `alpha2'

		mat `omega' =( `s00' - `alpha2'*`beta2''*`s01'')


		mat colnames `omega' = `diffvarlist2'
		mat rownames `omega' = `diffvarlist2'

// omegaJ is Johansen identified omega
		mat `omegaJ' = `omega'


// section with constraints
// make constraints on alpha or beta 

		if "`aconstraints'`bconstraints'" != "" {

			local constraints constraints
			if "`aconstraints'" != "" {
				tempname gmat tmat jmat
		

				mkcns , rownames(`diffvarlist2')	///
					colnames(`Lce_lab') 		///
					cmat(`gmat') amat(`tmat')	///
					constraints(`aconstraints')	///
					transpose

				mat `jmat' = J(rowsof(`tmat'), 		///
					colsof(`tmat'), 0)
				if mreldif(`tmat', `jmat') > 1e-16 {
					di as err "restrictions on alpha " ///
						"are not homogeneous"
					exit 498
				}

				local nacns = r(k)
				local acnsmac "`r(cns1)'"
				forvalues j = 2/`nacns' {
					local acnsmac "`acnsmac':`r(cns`j')'"
				}
	
			}
			else {
				local gmat NONE
			}
	
			if "`bconstraints'" != "" {
				tempname hmat amat rmat
		
				mkcns , rownames(`endog_vars' `z1exn')	///
					colnames(`ce_lab') 		///
					cmat(`hmat') 			///
					constraints(`bconstraints')	///
					amat(`amat') rmat(`rmat')

				local nbcns = r(k)
				local bcnsmac "`r(cns1)'"
				forvalues j = 2/`nbcns' {
					local bcnsmac "`bcnsmac':`r(cns`j')'"
				}
			}
			else {
				local hmat NONE
				local amat NONE
			}

//  get starting values here 

			tempname part1 part2i rkpart2 part2 temp vecs vals 
			tempname betao0 vps2 oi iter_n converge


			if "`beta_st'" != "" {
				local bstarts *
				mat `beta2' = `beta_st'
			}


			mat `oi' = syminv(`omega')
			mat `vps2' = vec((`s01'*inv(`s11'))')

			if "`alpha_st'" != "" {
				local astarts *
				mat `alpha2' = `alpha_st'
			}
			else {
				if "`gmat'" != "NONE" {
					GetAlpha , 			///
						gmat(`gmat')		///
						omegai(`oi')		///
						beta(`beta2')		///
						s11(`s11')		///
						vecpils(`vps2')		///
						alpha(`alpha2')
				}
				else {
					mat `alpha2' =			///
					`s01'*`beta2'*			///
					syminv(`beta2''*`s11'*`beta2')
				}
			}


			GetOmega , 	s00(`s00')		///
					s01(`s01')		///
					s11(`s11')		///
					alpha(`alpha2')		///
					beta(`beta2')		///
					omega(`omega')		


			scalar `iter_n' = 0
			GetSWest , 	gmat(`gmat')			///
					hmat(`hmat')			///
					amat(`amat')			///
					omega(`omega')			///
					beta(`beta2')			///
					alpha(`alpha2')			///
					s11(`s11')			///
					s01(`s01')			///
					s00(`s00')			///
					tolerance(`tolerance')		///
					ltolerance(`ltolerance')	///
					t(`T')				///
					k(`K')				///
					iter_n(`iter_n')		///
					iterate(`iterate')		///
					converge(`converge')		///
					`log'				///
					`btrace'			///
					`toltrace'

				mat rownames `beta2' = `endog_vars' `z1exn'
				mat colnames `beta2' = `ce_lab'

				GetDF , gmat(`gmat') hmat(`hmat') 	///
					beta(`beta2') alpha(`alpha2')	///
					k(`K') nz1(`nz1') rmat(`rmat')	///
					rank(`rank')
	
				local beta_iden      = r(beta_iden)
				local beta_iden_cnt  = r(beta_iden_cnt)

				local df             = r(jacob_hat_rank)
				local jacob_rank     = r(jacob_hat_rank)
				local jacob_cols     = r(jacob_cols)
				local alphabeta_iden = 			///
					(`jacob_cols'<=`jacob_rank')
				local df_lr          = r(jacob_hat_lrdf)

				local parms1 = `K'*`nz2' + `df'
				local df = int(`parms1'/`K')
		}
		else {
			local parms1 =(`K'*`nz2'+(`K'+`nz1'-`rank')*`rank')
			local df = int(`parms1'/`K')

			local hmat NONE
			local amat NONE
			local gmat NONE

			local beta_iden = 1
			local beta_iden_cnt  = `rank'^2
			local df_lr = 0
		}


		tempname llvalue aic bic hqic detsig llvalueJ
		scalar `detsig' = det(`omega')

		LLval , alpha(`alpha2') beta(`beta2') omega(`omega') 	///
			t(`T') k(`K') val(`llvalue') 
	
		LLval , alpha(`alphaJ') beta(`betaJ') omega(`omegaJ') 	///
			t(`T') k(`K') val(`llvalueJ') 
	
		MKic `aic' `bic' `hqic' `llvalue' `parms1' `T' scalar


// now get Gamma_i and VCE's using alpha2, beta2 and omega obtained with or
// without constraints 

		tempname b V bvec 

// bvec holds vec(beta) beta2m holds beta in matrix form
		mat `beta2m' = `beta2'
		mat `bvec' = vec(`beta2')'

		mat `beta2' = vec(`beta2')'

// Make ceq`j' tempvars concatenate them into zbeta, ceq_vars, ceqs and zbetan

// use names _ce1, _ce2, ... not tempnames 

		local j 0
		foreach ceq of local ce_lab {
			local ++j

			local zbeta `zbeta' L._ce`j'

			local ceqs `ceqs' _ce`j'
	
			local ceq_vars `ceq_vars' L._ce`j'
	
			local zbetan `zbetan' L._ce`j'
		
		}	

		Mkceqj `ceqs', beta2(`beta2')


// make constraints on temporary variables that hold cointegrating equations

		tsunab xvars : `varlist'


// exclude constant 

		local zbeta `zbeta' `z2base' `sindicators'
		local zbetan `zbetan' `z2t_names'



		
// do regression 

		

		tempname bt mu0 p0 mmss mu1 

		tsunab Ldiffvarlist : L.(`diffvarlist')
		qui mat accum `mmss' = `ceq_vars' `Ldiffvarlist', nocons dev
		mat `mmss' = syminv(`mmss')

		Getb `diffvarlist' if `touse', 		///
			pm1(`pm1') 			///
			exog(`z3t')			///
			exfront(`ceq_vars')		///
			df(`df')			///
			bmat(`b')			///
			vmat(`V')			///
			dvlist2(`diffvarlist2')		///
			zbetan(`zbetan')		///
			const(`aconstraints')

		foreach evar of local diffvarlist2 {
			if "`trend'" == "constant" | 			///
			   "`trend'" == "rtrend"   |			///
			   "`trend'" == "trend"   {
				mat `mu0' = (nullmat(`mu0'), 		///
					`b'[1,"`evar':_cons"] )
			}
		}

		if "`trend'" == "trend"   {
			foreach evar of local diffvarlist2 {
				mat `mu1' = (nullmat(`mu1'), 		///
					`b'[1,"`evar':_trend"] )
			}
		}

		tempname beta_s

		if "`trend'" == "rconstant" | "`trend'" == "rtrend" {
			mat `beta_s' = `beta2m'[1..rowsof(`beta2m')-1,1...]
		}
		else {
			mat `beta_s' = `beta2m'
		}


		tempname betao alphao 

		_vecortho `beta_s' `betao'
		_vecortho `alpha2' `alphao'

		if "`trend'" == "constant" | "`trend'" == "rtrend"	///
			| "`trend'" == "trend" {
			mat `p0' = syminv(`alpha2''*`alpha2')*`alpha2''*`mu0''

			mat rownames `p0' = `ce_lab'
			mat colnames `p0' = _cons

			if "`trend'" == "trend" {
				tempname p1
				mat `p1' = syminv(`alpha2''*`alpha2')*	///
					`alpha2''*`mu1''
				mat rownames `p1' = `ce_lab'
				mat colnames `p1' = _trend

				tempname beta3
				mat `beta3' = vec((`beta2m' \ `p1'' \ `p0''))'
				drop `ceqs'
				Mkceqj `ceqs', beta2(`beta3') 

			}
			else {
				tempname beta3
				mat `beta3' = vec((`beta2m' \ `p0''))'
				drop `ceqs'
				Mkceqj `ceqs', beta2(`beta3') 
			}

			
			Getb `diffvarlist' if `touse', 		///
				pm1(`pm1') 			///
				exog(`z3t')			///
				exfront(`ceq_vars')		///
				df(`df')			///
				bmat(`b')			///
				vmat(`V')			///
				dvlist2(`diffvarlist2')		///
				zbetan(`zbetan')		///
				const(`aconstraints')		///
				quietly
		}

// save of equation level stats

		forvalues i = 1/`K' {
			tempname obs_`i' k_`i' rmse_`i' r2_`i'	///
				ll_`i' df_m`i' chi2_`i'
			
			scalar `k_`i''    = e(k_`i')
			scalar `rmse_`i'' = e(rmse_`i')
			scalar `r2_`i''   = e(r2_`i')
			scalar `df_m`i''  = e(df_m`i')
			scalar `chi2_`i''    = e(chi2_`i')
		}
		

		tempname omegai b1 b2 b3 b4 H Itheta Ithetai pi

		tempname rho base
		mat `omegai' = syminv(`omega')

		mat `rho' = `alpha2''*`omegai'*`alpha2'

		if "`constraints'" == "" {
			mat `H' = J(`rank',`nz1'-`rank', 0) \ I(`nz1'-`rank')
			mat `base' = `H''*`s11'*`H'
			mat `Ithetai' = (1/(`T'-`df'))*(syminv(`rho' # `base'))

			tempvar H2
			mat `H2' = I(`rank') # `H'
			mat `Ithetai' = `H2'*`Ithetai'*`H2''

		}
		else {
			if "`hmat'" == "NONE" {
mat `base' = `s11'
mat `Ithetai' = (1/(`T'-`df'))*(syminv(`rho' # `base'))
			}
			else {

mat `Ithetai' = syminv(`hmat''*(`rho' # `s11')*`hmat')
mat `Ithetai' = (1/(`T'-`df'))*`hmat'*`Ithetai'*`hmat''


			}

		}

		local bnames : colfullnames `beta2'
		mat colnames `Ithetai' = `bnames'
		mat rownames `Ithetai' = `bnames'


		if "`trend'" == "constant" | "`trend'" == "rtrend" {
			tempname  block
			mat `beta2' = `beta2m' \ `p0''
			mat `beta2' = vec(`beta2')'
			mat `block' = I(`rank') # (I(`nz1') \ J(1,`nz1',0))
			mat `Ithetai' = ( `block'*`Ithetai'*`block'')
			
			local bnames : colfullnames `beta2' 
			mat colnames `Ithetai' = `bnames'
			mat rownames `Ithetai' = `bnames'
		}	

		if "`trend'" == "trend" {
			tempname  block
			mat `beta2' = `beta2m' \ `p1'' \ `p0''
			mat `beta2' = vec(`beta2')'
			mat `block' = I(`rank') # (I(`K') \ J(2,`K',0))
			mat `Ithetai' = ( `block'*`Ithetai'*`block'')
			
			local bnames : colfullnames `beta2' 

⌨️ 快捷键说明

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