fcast_graph.ado
来自「是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到」· ADO 代码 · 共 140 行
ADO
140 行
*! version 1.0.6 02mar2005
program define fcast_graph, sort rclass
version 8.2
syntax varlist [if] [in] [, ///
Differences ///
noci ///
CIOPts(string asis) ///
CILines ///
Observed ///
OBOPts(string asis) ///
BYOPts(string asis) ///
* ///
]
if "`differences'" != "" {
local ci noci
}
if "`ci'" != "" & `"`cilines'`ciopts'"' != "" {
di as err ///
"option noci cannot be specified with options cilines or ciopts()"
exit 198
}
chk_byopts, `byopts'
local byopts `"`s(byopts)'"'
marksample touse
_get_gropts, graphopts(`options')
_check4gropts ciopts, opts(`ciopts')
_check4gropts obopts, opts(`obopts')
if `"`obopts'"' != "" {
local observed observed
}
local k_vars : word count `varlist'
quietly tsset
local t `r(timevar)'
preserve
// multiple variables
tempname tlab
tempvar stub group
if "`ci'" == "" {
if "`cilines'" == "" {
local citype rarea
}
else local citype rline
tempvar lstub ustub
local LEVEL : var label `: word 1 of `varlist''_LB
gettoken LEVEL : LEVEL, parse("%")
}
if "`observed'" != "" {
tempvar obstub
}
tempname glabel
forval i = 1/`k_vars' {
local var : word `i' of `varlist'
local endog : char `var'[observed]
if "`differences'" != "" {
local dvar : char `var'[difference]
if "`dvar'" == "" {
di as err "forecasted differences not found"
exit 498
}
}
if "`endog'" == "" {
di as err "`var' was not generated by fcast"
exit 322
}
else {
local labels `labels' `i' "Forecast for `endog'"
if "`observed'" != "" {
if "`differences'" != "" {
tsunab endog2 : `endog'
quietly gen `obstub'`i' = D.`endog2'
}
else {
quietly gen `obstub'`i' = `endog'
}
local yvars `yvars' `obstub'`i'
}
}
if "`differences'" != "" {
quietly gen `stub'`i' = `dvar'
}
else {
quietly gen `stub'`i' = `var'
}
drop `var'
local yvars `yvars' `stub'`i'
if "`ci'" == "" {
local level : var label `var'_LB
gettoken level : level, parse("%")
if "`level'" != "`LEVEL'" {
di as err ///
"confidence level cannot vary among the specified forecast variables"
exit 322
}
quietly gen `lstub'`i' = `var'_LB
drop `var'_LB
quietly gen `ustub'`i' = `var'_UB
drop `var'_UB
local yvars `yvars' `lstub'`i' `ustub'`i'
}
}
quietly keep `touse' `t' `yvars'
quietly keep if `touse'
quietly reshape long `obstub' `stub' `lstub' `ustub', i(`t') j(`group')
label define `glabel' `labels'
label values `group' `glabel'
label var `stub' "forecast"
if "`ci'" == "" {
label var `lstub' "`LEVEL'% CI"
label var `ustub' "`LEVEL'% CI"
local ciplot ///
(`citype' `lstub' `ustub' `t', sort pstyle(ci) `ciopts')
}
if "`observed'" != "" {
label var `obstub' "observed"
local obplot (line `obstub' `t', sort pstyle(p2line) `obopts')
}
local fplot ///
(line `stub' `t', sort pstyle(p1line) xtitle("") ytitle("") `options')
graph twoway `ciplot' `fplot' `obplot' || ///
if `touse', by(`group', note("") `byopts')
end
program chk_byopts, sclass
syntax [, noYRescale * ]
if "`yrescale'" == "" {
local yrescale yrescale
}
sreturn local byopts `"`yrescale' `options'"'
end
exit
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?