📄 _rmdcoll.ado
字号:
*! version 1.2.1 29sep2004
program define _rmdcoll, rclass
version 8, missing
syntax varlist(ts) [in] [if] [fw iw aw pw] [, noCOLlin noConstant ]
tempvar touse
mark `touse' [`weight'`exp'] `if' `in'
/* weights */
if "`weight'" ~= "" {
tempvar w
qui gen double `w' `exp' if `touse'
local wgt [`weight'=`w']
}
else local wgt
gettoken yvar xvars: varlist
if "`xvars'" == "" {
exit
}
tempname hldname c b
if "`e(cmd)'" != "" {
_est hold `hldname'
local unhold "_est unhold `hldname'"
}
/* nocollin option */
if "`collin'" =="" {
_rmcoll `xvars' `wgt' if `touse', `constant'
local xvars "`r(varlist)'"
local varlist "`yvar' `xvars'"
return local varlist "`xvars'"
if "`xvars'" == "" {
`unhold'
exit
}
}
/* y xs of full rank? */
qui _rmcoll `yvar' `xvars' `wgt' if `touse', `constant'
local result "`r(varlist)'"
local equal : list varlist === result
if `equal' {
`unhold'
exit
}
/* select the largest abs value */
qui reg `yvar' `xvars' `wgt' if `touse', `constant'
mat `b'= e(b)
local i 1
local cmax abs(`b'[1,1])
scalar `c'=colsof(`b')
while `++i' < = `c' {
if abs(`b'[1,`i']) > `cmax' {
local cmax abs(`b'[1,`i'])
}
}
/* get the varnames */
local names: colnames `b'
local i 0
foreach name of local names {
if abs(`b'[1,`++i']) > `cmax' * 1e-5 {
local cnames `cnames' `name'
}
}
`unhold'
/* display error message , exit */
di as err "{p 0 4}"
di as err "`yvar' collinear with"
di as err "`cnames'"
di as err "{p_end}"
exit 459
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -