| |
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
Re: st: Variable dropped from regression: how to capture event?
From |
"Michael S. Hanson" <[email protected]> |
To |
[email protected] |
Subject |
Re: st: Variable dropped from regression: how to capture event? |
Date |
Sat, 18 Nov 2006 10:20:42 -0500 |
On Nov 18, 2006, at 5:46 AM, Maarten buis wrote:
One way to see if one or more variables are dropped is by counting the
number of rows in the e(b) matrix and compare it with the number of
variables + constant if no variable is dropped like in the example
below:
I noticed two problems with Maarten's code below -- although in this
particular case the "correct" answer would be returned. First, to
count the number of variables in the varlist local macro, `varlist'
needs to be quoted in the -local : word count- extended macro command.
(Without the quotes, the answer will always be 1, so `allk' will always
be 2.) Second, the number of regressors will be the number of columns
of e(b), not rows. (In this case, e(b) is 1 x 4, so rowsof(b) = 1,
whereas colsof(b) = 4).
Additionally, the use of the line-continuation comments /// is
unnecessary here, and requires the code to be followed by a blank line.
(Which I think is useful for improving readability, but is not
strictly necessary.) In both cases, the standard // comment delimiter
will work in the middle of a line.
Finally, I believe e(df_m) returns the number of (non-constant)
regressors in the estimation. (Type -ereturn list- to see the
statistics produced by -logit-.) So if I understand correctly,
Maarten's example code could then be modified to be slightly more
compact. I have made those three sets of changes to the code below:
//------------- begin example -------------
sysuse auto, clear
gen rep1 = rep78 <= 2
gen rep2 = rep78 == 3
gen rep3 = rep78 == 4
gen rep4 = rep78 == 5
// getting list of variables
local varlist "rep1 rep2 rep3 rep4"
local allk : word count `varlist'
logit foreign `varlist'
// see if a variable was dropped
di `allk'-e(df_m) // if > 0 a variable is dropped
// Alternative check for dropped variable
local allk = `allk' + 1 // add the constant
matrix b = e(b)
local k = colsof(b)
di `allk'-`k' // if > 0 a variable is dropped
//------------- end example -----------------
Hope this helps.
-- Mike
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/