📄 xtreg_be.ado
字号:
*! version 1.3.2 29apr2005
program define xtreg_be, eclass
* touched by jwh -- double saves
_vce_parserun xtreg, panel : `0'
if "`s(exit)'" != "" {
exit
}
version 6, missing
local options "Level(cilevel)"
if replay() {
if "`e(model)'"~="be" { error 301 }
syntax [, `options' depname(string)]
if "`depname'" != "" {
tempname myb myV
mat `myb'=e(b)
mat `myV' = e(V)
local depname "depname(`depname')"
est post `myb' `myV' , `depname' noclear
}
}
else {
syntax varlist [if] [, `options' I(varname) Wls /*
*/ depname(string) be ]
xt_iis `i'
local ivar "`s(ivar)'"
if "`depname'" != "" {
local depname "depname(`depname')"
}
tempvar touse w T nobs XB tn
tempname Tmax Tbar
mark `touse' `if'
markout `touse' `varlist' `ivar'
qui count if `touse'
if r(N)<3 {
error cond(r(N)==0,2000,2001)
/*NOTREACHED*/
}
sort `ivar' `touse'
preserve
quietly {
keep if `touse'
keep `varlist' `ivar'
scalar `nobs' = _N
tokenize `varlist'
local i 1
while "``i''"!="" {
by `ivar': gen double `tn' = sum(``i'')/_n
drop ``i''
rename `tn' ``i''
local i=`i'+1
}
by `ivar': gen int `T' = _N
by `ivar': keep if _n==_N
summ `T'
scalar `Tbar' = r(mean)
scalar `Tmax' = r(max)
local g1 = r(min)
local g2 = r(mean)
local g3 = r(max)
if `Tmax'==r(min) { local Tcons 1 }
else {
local Tcons 0
if "`wls'"!="" {
local wgt "[aweight=`T']"
}
}
regress `varlist' `wgt',
est local cmd
tempname myb myV
mat `myb'=e(b)
mat `myV' = e(V)
if "`depname'" == "" {
local depname "depname(`e(depvar)')"
}
est post `myb' `myV' , `depname' noclear
est local estat_cmd
est local ivar `ivar'
global S_E_ivar "`ivar'"
if "`wgt'"!="" {
* global S_E_typ "WLS "
est local typ "WLS "
}
est scalar N_g = e(N)
est scalar N = `nobs'
est scalar Tbar = `Tbar'
est scalar Tcon = `Tcons'
est scalar r2_b = e(r2)
* est scalar df_m = e(df_m)
* est scalar df_r = e(df_r)
* est scalar df_F = e(df_F)
* est scalar rmse = e(rmse)
scalar S_E_nobs = e(N)
scalar S_E_n = e(N_g)
scalar S_E_Tbar = e(Tbar)
global S_E_Tcon `e(Tcon)'
scalar S_E_r2b = e(r2_b)
global S_E_mdf = e(df_m)
global S_E_tdf = e(df_r)
scalar S_E_f = e(F)
scalar S_E_rmse = e(rmse)
restore
tempvar mysamp
gen byte `mysamp' = `touse'
est repost, esample(`mysamp')
_predict double `XB' if `touse', xb
corr `XB' `e(depvar)'
est scalar r2_o = r(rho)^2
scalar S_E_r2o = e(r2_o)
by `ivar' `touse': gen double `T'=/*
*/ sum(`XB')/_N if `touse'
by `ivar' `touse': replace `XB'=`XB'-`T'[_N] if `touse'
drop `T'
by `ivar' `touse': gen double `T'= /*
*/ sum(`e(depvar)')/_N if `touse'
by `ivar' `touse': replace `T' = /*
*/ `e(depvar)'-`T'[_N] if `touse'
corr `XB' `T'
est scalar r2_w = r(rho)^2
scalar S_E_r2w = e(r2_w)
est scalar g_min = `g1'
est scalar g_avg = `g2'
est scalar g_max = `g3'
est local ivar `ivar'
est local model be
est local predict xtrefe_p
est local cmd xtreg
global S_E_cmd2 "xtreg_be"
global S_E_cmd "xtreg"
}
}
#delimit ;
di _n in gr "Between regression (regression on group means)"
_col(49) in gr "Number of obs" _col(68) "="
_col(70) in ye %9.0f e(N) ;
di in gr "Group variable (i): " in ye abbrev("`e(ivar)'",12) in gr
_col(49) "Number of groups" _col(68) "="
_col(70) in ye %9.0g e(N_g) _n ;
di in gr "R-sq: within = " in ye %6.4f e(r2_w)
_col(49) in gr "Obs per group: min" _col(68) "="
_col(70) in ye %9.0g e(g_min) ;
di in gr " between = " in ye %6.4f e(r2_b)
_col(64) in gr "avg" _col(68) "="
_col(70) in ye %9.1f e(g_avg) ;
di in gr " overall = " in ye %6.4f e(r2_o)
_col(64) in gr "max" _col(68) "="
_col(70) in ye %9.0g e(g_max) _n ;
if !missing(e(chi2)) { ;
di in gr _col(49) "Wald chi(" in ye e(df_m)
in gr ")" _col(68) "=" _col(70) in ye %9.2f e(chi2) ;
di in gr "sd(u_i + avg(e_i.))" _col(16) "= " in ye %9.0g e(rmse)
in gr _col(49) "Prob > chi2" _col(68) "="
_col(73) in ye %6.4f chi2tail(e(df_m),e(chi2)) _n ;
} ;
else { ;
di in gr _col(49) "F(" in ye e(df_m) in gr "," in ye e(df_r)
in gr ")" _col(68) "=" _col(70) in ye %9.2f e(F) ;
di in gr "sd(u_i + avg(e_i.))" _col(16) "= " in ye %9.0g e(rmse)
in gr _col(49) "Prob > F" _col(68) "="
_col(73) in ye %6.4f fprob(e(df_m),e(df_r),e(F)) _n ;
} ;
#delimit cr
/*regress , noheader level(`level') */
est display, level(`level')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -