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

📄 _tsma.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.2.2  10dec2002
program define _tsma, sortpreserve rclass 
	version 8.0

/* syntax is _tsma type new old,touse(byte varname) 
		[ a0(number) backward(numlist)  forward(numlist) ]
	
	default is a0()=1 and backward() and forward() are empty, this 
		would just reproduce the original series for the touse() 
		sample
*/
	
	gettoken vars left : 0 , parse(",") 
	tokenize `vars'
	local type "`1'"
	local newvar "`2'"
	local oldvar "`3'"

	if "`type'" == "" {
		di as err "type not specified"
		exit 198
	}
	if "`oldvar'" == "" {
		di as err "old variable not specified"
		exit 198
	}
	if "`newvar'" == "" {
		di as err "new variable not specified"
		exit 198
	}

	local 0 "`left'"
	syntax , touse(varlist) [ * ] 

	qui tsset
	qui count if `touse'==1
	local N = r(N)
	local insmp2 = int(.5*(`N'))

	local 0 "`left'"
	syntax , touse(varlist) [  a0(real 1) /*
		*/ backward(numlist) /*
		*/ forward(numlist) ]
	
	local terms : word count `backward'
	if `terms' > `insmp2' {
		di as err "too many lagged terms in smoother"
		exit 198
	}
	
	local terms : word count `forward'
	if `terms' > `insmp2' {
		di as err "too many forward terms in smoother"
		exit 198
	}

	local 0 "`type' `newvar', oldvar(`oldvar')" 
	syntax newvarname , oldvar(varname)  

	tempvar  ob ob1 obN
	
	
/* check that data is tsset */

	qui tsset 
	local tvar `r(timevar)'

	if "`r(panelvar)'" != "" {
		local pvar "`r(panelvar)'"
		local byp " by `pvar': "
		local panel "panel"
	}

	sort `pvar' `tvar'

	tempvar sum scale 

	qui gen double `sum' = cond(missing(`oldvar'),0, /*
		*/ `a0'*`oldvar') /* if `touse'  */

	qui gen double `scale' = cond(missing(`oldvar'),0,`a0') /*
		*/ /* if `touse' */

	local bc : word count `backward'
	local i 1
	foreach b of local backward {
		local li = `bc' - `i' + 1
		qui `byp' replace `sum' = `sum' + `b' * /*
			*/ cond(missing(l`li'.`oldvar'),0,/*
			*/ l`li'.`oldvar' ) /* if `touse'*/

		qui `byp' replace `scale' = `scale' + /* 
			*/ cond( missing(l`li'.`oldvar'), 0 , `b' )

		ret scalar wlag`li' = `b'	
		local i = `i' + 1	
	}	

	local i 1

	foreach f of local forward {
		qui `byp' replace `sum' = `sum' + `f' * /*
			*/ cond(missing(f`i'.`oldvar'),0,/*
			*/ f`i'.`oldvar' ) /* if `touse' */
	
		qui `byp' replace `scale' = `scale' + /* 
			*/ cond( missing(f`i'.`oldvar'), 0 , `f' )

		ret scalar wlead`i' = `f'	
		local i = `i' + 1	
	}	

	qui gen `typlist' `varlist' = `sum'/`scale'

	ret scalar w0 = `a0'

	ret scalar N = `N'
	ret local timevar `tvar'
	ret local panelvar `pvar'
end

⌨️ 快捷键说明

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