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

📄 varirf_cgraph.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
📖 第 1 页 / 共 2 页
字号:

		local stats2
		foreach var of local stats {
			HayObs `var', irfname(`irfname') 		///
				impulse(`impulse') response(`response')
			if r(N) > 0 {
				local stats2 `stats2' `var'
			}
			else {
				MissErr `var', irfname(`irfname')
			}	
		}	
		local stats `stats2'

		if `"`subtitle'"' != "" {
			local tmac `"subtitle("`subtitle'")"'
			local tmacs `"`subtitle'"'
		}
		else {
local tmac `"subtitle("`irfname': `impulse' -> `response'""'
local tmac `"`tmac', size(scheme heading) box bexpand blstyle(none))"'
local tmacs "`irfname': `impulse' -> `response'"
		}	
		
		local adj_level = `level'/100 + (100-`level')/200
		
		local legon " legend(on) "

		local uniqs : list uniq stats
		local uniq : list uniqs == stats
		if `uniq' != 1 {
			di as err "duplicate elements found in `stats'"
			exit 198
		}	

		local nstats : word count `stats'
		if "`cim'" == "" {
			if `nstats' > 2 {
				di as err "only two statistics may " /*
					*/"be included with CI's in one graph"
				exit 198	
			}	
		}
		else {
			if `nstats' > 4 {
				di as err "only four statistics may " /*
					*/"be included in one graph"
				exit 198	
			}	
		}
		
		if `nstats' > 1 {
			local mys s
		}
		else {
			local mys 
		}	

		local nstatsp1 = `nstats' + 1
		forvalues nsp = `nstatsp1'/4 {
			if `"`plot`nsp'opts'"' != ""  {
di as txt "only `nstats' plot`mys' specified, plot`nsp'opts() option ignored"
			}
		}

		local i 1
		local slist


		local lopt "xlabel(#4) ylabel(#4 , grid angle(horizontal))"

		local nstatsp1 = `nstats' + 1

		if "`cim'" == "" {

			if `nstats' == 1 {
if "`ciopts2'`ci2opts'" != "" {
	di as txt "only one statistics specified, ci2opts() ignored"
}	

			
local var : word 1 of `stats'

tempvar `var'l `var'u
capture noi confirm variable std`var'

HayObs std`var', irfname(`irfname') impulse(`impulse') response(`response')

if r(N) > 0 {
	tempvar `var'l `var'u
	qui gen double ``var'l' = `var' - std`var'*invnorm(`adj_level')
	qui gen double ``var'u' = `var' + std`var'*invnorm(`adj_level')


	local cilab `"`=strsubdp("`level'")'% CI for `var'"'
	local ylab `"yvarlabel("`cilab'" "`cilab'")"'
	local plt1 `"( `ciplot' ``var'l' ``var'u' step, sort(step) "'
	local plt1 `"`plt1' pstyle(ci) `ylab' `lopt' `ciopts1m' `ci1optsm')"'

	local ylab `"yvarlabel("`var'")"'
	local plt2 `"(line `var' step, sort(step) pstyle(p1) `ylab' "'
	local plt2 `"`plt2' `lopt' `itw_opts' `plot1optsm' )"'

	local allplots `" `plt1' `plt2' "'
}
else {

	StdMissErr `var', irfname(`irfname') model(`ckvec')

		local ylab `"yvarlabel("`var'")"'
		local plt1 `"(line `var' step, sort(step) pstyle(p1) `ylab' "'
		local plt1 `"`plt1' `legon' `lopt' `itw_opts' `plot1optsm' )"'

		local allplots `" `plt1' "'
}
			}

			if `nstats' == 2 {
local var1 : word 1 of `stats'
local var2 : word 2 of `stats'

tempvar `var1'l `var1'u
capture noi confirm variable std`var1'

HayObs std`var1', irfname(`irfname') impulse(`impulse') response(`response')
if r(N) > 0 {
	
	tempvar `var1'l `var1'u
	qui gen double ``var1'l' = `var1' - std`var1'*invnorm(`adj_level')
	qui gen double ``var1'u' = `var1' + std`var1'*invnorm(`adj_level')

	local cilab `"`=strsubdp("`level'")'% CI for `var1'"'
	local ylab `"yvarlabel("`cilab'" "`cilab'")"'
	local plt1 `"( `ciplot' ``var1'l' ``var1'u' step, sort(step) "'
	local plt1 `"`plt1' pstyle(ci) `ylab' `lopt' `ciopts1m' `ci1optsm')"'

}
else {
	StdMissErr `var1', irfname(`irfname') model(`ckvec')
	local plt1 
}
	
tempvar `var2'l `var2'u
capture noi confirm variable std`var2'

HayObs std`var2', irfname(`irfname') impulse(`impulse') response(`response')
if r(N) > 0 {
	tempvar `var2'l `var2'u
	qui gen double ``var2'l' = `var2' - std`var2'*invnorm(`adj_level')
	qui gen double ``var2'u' = `var2' + std`var2'*invnorm(`adj_level')

	local cilab `"`=strsubdp("`level'")'% CI for `var2'"'
	local ylab `"yvarlabel("`cilab'" "`cilab'")"'
	local plt2 `"( `ciplot' ``var2'l' ``var2'u' step, sort(step) "'
	local plt2 `"`plt2' pstyle(ci2) `ylab' `lopt' `ciopts2m' `ci2optsm')"'

}
else {
	StdMissErr `var2', irfname(`irfname') model(`ckvec')
	local plt2 

}
	
	local ylab `"yvarlabel("`var1'")"'
	local plt3 `"(line `var1' step, sort(step) pstyle(p1line) `ylab' "'
	local plt3 `"`plt3' `lopt' `itw_opts' `plot1optsm' )"'

	local ylab `"yvarlabel("`var2'")"'
	local plt4 `"(line `var2' step, sort(step) pstyle(p2line) `ylab' "'
	local plt4 `"`plt4' `lopt' `itw_opts' `plot2optsm' )"'

	local allplots `" `plt1' `plt2' `plt3' `plt4' "'

			}

			if `nstats' > 2 {
				di as err "only two statistics may " /*
					*/"be included with CI's in one graph"
				exit 198	
			}

			if `nstats' < 1 {
				di as txt "all variables contain all "	///
					"missing values for irf "	///
					"results  `irfname'"
				di as txt `"{p 0 4 4}cannot make a "'	///
					`"graph for {cmd:(`0copy')}{p_end}"'
				local allplots 

			}
		}
		else {

			if `nstats' == 1 {
				local legon " legend(on) "
			}
			else {
				local legon 
			}

			local labvar 
			local allplots
			local nsp 0
			foreach var of local stats {
local ++nsp
local plt`nsp' `"(line `var' step ,  yvarlab("`var'") `lopt' "'
local plt`nsp' `"`plt`nsp'' `legon' `itw_opts' `plot`nsp'optsm')"'

local allplots `" `allplots' `plt`nsp'' "'
			}

			if `nsp' < 1 {
di as txt "all variables contain all missing values "	///
	"for irf results `irfname'"
di as txt `"{p 0 4 4}cannot make a graph for "'		///
	`"{cmd:(`0copy')}{p_end}"'
local allplots 
			}
		}


		if "`individual'" == "" {
			local nodraw nodraw	
		}	

		if `"`allplots'"' != "" {


			if "`individual'" == "" {
				if `"`name'"' == "" {
					tempname tname`j'
					local snames `"`snames' `tname`j'' "'
					local dropnames "`dropnames' `tname`j'' "
					local name "name(`tname`j'')"
				}	
				else {
					local snames `"`snames' `sn_name' "'
				}	
			}

		
			graph twoway `allplots' 		///
				if irfname == "`irfname'" 	///
				& impulse  == "`impulse'"  	///
				& response == "`response'"	///
				`ifstep' ,			///
				`nodraw'			///
				ytitle("")			///
				`name'				///
				`tmac' `s_save'			///
				`twg_opts' `scheme' `graphopts'
			 

			ret local stats`j' `stats'
			ret local irfname`j' `irfname'
			ret local impulse`j' `impulse'
			ret local response`j' `response'
			ret local title`j' `"`tmacs'"'
			ret local save`j' `"`s_saves'"'
			ret local name`j' `"`name_s'"'

			if "`cim'" == "" {
				ret local ci`j' `level'
			}
			else {
				ret local ci`j' `cim'
			}	

	
			if "`individual'" != "" & `"`gcmds'"' != "" {	
				more	
			}	

		}		
		
	}


	if "`individual'" == "" {
		local rows = ceil(sqrt(`j'))
		if `"`iscale'"' == "" {
			if `rows' == 1 {
				local iscale "*1"
			}
			if `rows' == 2 {
				local iscale "*.75"
			}
			if `rows' >2 {
				local iscale "*.6"
			}
		}
			
		if `"`imargin'"' == "" {
			if `rows' == 1 {
				local imargin small
			}
			if `rows' == 2 {
				local imargin vsmall
			}
			if `rows' >2 {
				local imargin tiny
			}
		}

		local tgraphs : word count `snames'
		
		if `tgraphs' > 0 {
			graph combine `snames', `c_save' `cn_save'	///
				`c_tmac' iscale(`iscale') 		///
				imargin(`imargin') `scheme' `comb_opts'
			ret local title `"`c_tmacs'"'
			ret local save `"`c_saves'"'
			ret local name `"`cn_saves'"'
		}	
	}
	else {
		ret local individual individual
	}	

	ret scalar k = `j'

	if "`dropnames'" != "" {
		capture graph drop `dropnames'
		if _rc > 0 {
			di as err "could not drop temporary "	/*
				*/ "graphs `dropnames'"
		}
	}

	restore

end


program define	SAVEPARSE, rclass
	syntax anything(id="filename" name=fname) [, replace]
	local fname `fname'
	ret local fname    `"`fname'"'
	ret local replace  `replace'
end

program define	NAMEPARSE, rclass
	syntax name(id="filename" name=name) [, replace]
	local name `name'
	ret local name    `"`name'"'
	ret local replace  `replace'
end

program define MissErr
	syntax varname, irfname(string)
	di as txt "{p 0 4}`varlist' contains all missing values "	///
		"for irf results `irfname'{p_end}"
	di as txt "statistic dropped from specification"
	di
end


program define StdMissErr
	syntax varname, irfname(string) model(string)

	if "`model'" != "vec" {
		di as txt "{p 0 4}standard errors not computed for "	///
			"`varlist' in irf results `irfname'{p_end}"
		di as txt "cannot compute confidence interval"
	}	
end	

program define HayObs, rclass
	syntax varname, irfname(string) impulse(string) response(string)
	
	qui count if `varlist' < . & irfname == "`irfname'"  	///
		& impulse  == "`impulse'"  	/// 
		& response == "`response'"


	ret scalar N = r(N)
end	
exit


⌨️ 快捷键说明

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