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

📄 robvar.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 7.0.3  28sep2004
program define robvar, rclass by(recall) sort
        version 6, missing
	syntax varname [if] [in] , by(varname)
	marksample touse
	qui {
		count if `touse'
		local N=r(N)
		tempvar xbar 
		egen double `xbar'=mean(`varlist') if `touse',by(`by')
		DoCal `varlist' `by' `xbar' `touse'
		drop `xbar'
		tempname num den ng num w0 w50 w10 p df1 df2
		scalar `num'=`s(num)'
		scalar `den'=`s(den)'
		scalar `ng'=`s(ng)'
		scalar `num'=`num'/(`N'-`ng' )
		scalar `w0'=`den'/`num' 
		scalar `p'=fprob((`ng' -1),(`N'-`ng' ),`w0')
		scalar `df1'=`ng'-1
		scalar `df2'=`N'-`ng'
		noi tab `by' if `touse',sum(`varlist')
		ret scalar df_2=`df2' 
		ret scalar df_1=`df1' 
		ret scalar p_w0=`p' 
		ret scalar w0=`w0' 
		
		egen double `xbar'=median(`varlist') if `touse',by(`by')
		DoCal `varlist' `by' `xbar' `touse'
		drop `xbar'
		scalar `num'=`s(num)'
		scalar `den'=`s(den)'
		scalar `ng'=`s(ng)'
		scalar `num'=`num'/(`N'-`ng' )
		scalar `w50'=`den'/`num' 
		scalar `p'=fprob((`ng' -1),(`N'-`ng' ),`w50')
		ret scalar p_w50=`p' 
		ret scalar w50=`w50' 
 	
		tempvar  p10 p90 m10 
		egen double `p10'=pctile(`varlist') if `touse',p(10) by(`by')
		egen double `p90'=pctile(`varlist') if `touse',p(90) by(`by')
		egen double `m10'=mean(`varlist') if `varlist'>=`p10' /*
		*/ & `varlist'<=`p90' & `touse',by(`by')
		egen double `xbar'=min(`m10') if `touse',by(`by')
		drop `m10' `p10' `p90' 
		DoCal `varlist' `by' `xbar' `touse'
		drop `xbar'
		scalar `num'=`s(num)'
		scalar `den'=`s(den)'
		scalar `ng'=`s(ng)'
		scalar `num'=`num'/(`N'-`ng' )
		scalar `w10'=`den'/`num' 
		scalar `p'=fprob((`ng' -1),(`N'-`ng' ),`w10')
		ret scalar p_w10=`p' 
		ret scalar w10=`w10' 
		ret scalar N=`N'
		noi di _n in gr "W0  = " in ye `w0' in gr "   df(" in ye /*
		*/ `df1' ", " `df2' in gr ") ""    Pr > F = " in ye return(p_w0)
		noi di _n in gr "W50 = " in ye `w50' in gr "   df(" in ye /*
		*/ `df1' ", " `df2' in gr ")     Pr > F = " in ye return(p_w50)
		noi di _n in gr "W10 = " in ye `w10' in gr "   df(" in ye /*
		*/ `df1' ", " `df2' in gr ")     Pr > F = " in ye return(p_w10)
	}
 end

prog def DoCal, sclass
	args x g xbar touse
		tempvar zij zbari ni den s num
		gen double `zij'=abs(`x'-`xbar') if `touse'
		egen double `zbari'=mean(`zij') if `touse',by(`g')
		sum `zij' if `touse', meanonly
		local zbarp=r(mean) 
		sort `touse' `g'
		by `touse' `g': gen double `ni'=_N
		gen double `den'=`ni'*((`zbari'-`zbarp')^2) if `touse'
		drop `ni'
		sort `touse' `g'
		by `touse' `g':gen double `s' =`den' if _n==1 & `touse'
		drop `den'
		sum `s' if `touse',meanonly
		local ng =r(N)
		local sd =r(sum)
		local den=`sd' /(`ng' -1) 
		gen double `num'=(`zij'-`zbari')^2 if `touse'
		sum `num' if `touse', meanonly
		drop `num' `zij' `zbari'
		local num=r(sum)
		sret local den= `den' 
		sret local num= `num' 
		sret local ng= `ng' 
end

⌨️ 快捷键说明

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