| 
    
 |   | 
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: Re: xtgee - identifying omitted groups
Thanks very much Scott.
That goes a long way to solving my problem.
As it happens, the data has a complex pattern
of missing values:
-> . xtdes , patterns(20)
   patid:  1, 2, ..., 2476                                   n =        192
   visit:  1, 2, ..., 4                                      T =          4
           Delta(visit) = 1; (4-1)+1 = 4
           (patid*visit does not uniquely identify observations)
Distribution of T_i:   min      5%     25%       50%       75%     95%     max
                         2       2       2         3         3       4       4
     Freq.  Percent    Cum. |  Pattern
 ---------------------------+---------
       56     29.17   29.17 |  1.11
       29     15.10   44.27 |  1.1.
       21     10.94   55.21 |  111.
       21     10.94   66.15 |  1111
       18      9.38   75.52 |  1..1
       17      8.85   84.38 |  11..
        8      4.17   88.54 |  11.1
        7      3.65   92.19 |  ..11
        4      2.08   94.27 |  .1.1
        4      2.08   96.35 |  .111
        2      1.04   97.40 |  .11.
        2      1.04   98.44 |  1.12
        1      0.52   98.96 |  ..12
        1      0.52   99.48 |  1.21
        1      0.52  100.00 |  112.
 ---------------------------+---------
      192    100.00         |  XXXX
Going back to my original data set, I can use:
use blood_meas5, clear
gen on_rx = visit  > 1 & vitamin == 1
drop if uric_acid == 0 | uric_acid == .
qui xi: xtgee uric_acid i.visit on_rx , robust corr(ar1)
gen sample = e(sample)
keep if sample
keepmode2 patid visit dropped_groups
drop if dropped_groups == 1
xi: xtgee uric_acid i.visit on_rx , robust corr(ar1)
xi: xtreg uric_acid i.visit on_rx  , re sa
pause
Date: Wed, 20 Dec 2006 08:25:59 -0600
From: [email protected]
Subject: Re: st: xtgee - identifying omitted groups
There might be a more direct way, but it looks like -xtgee- calls the
subroutine -KeepMode- to identify the groups with unequal spacing.
One can copy this subroutine (with a few modifications) as a separate
program to identify the groups:
program keepmode2
        version 9.2
        args ivar tvar omitted
        tempvar bb
        qui {
                by `ivar': gen float `bb' = `tvar'-`tvar'[_n-1]
                by `ivar': replace `bb' = `bb'[2] if _n==1
                qui summ `bb'
                cap assert `bb' == r(min) | `bb'>=.
                if _rc==0 {
                        exit
                }
                tempname mesh
                tempvar freq bad
                sort `bb'
                by `bb': gen `freq'=_N if _n==_N
                summ `freq'
                summ `bb' if `freq'==r(max)
                scalar `mesh' =  r(min)
                sort `ivar' `tvar'
                drop `freq'
                by `ivar': gen `bad' = cond(_n==1,0,`bb'!=`mesh')
                by `ivar': replace `bad' = cond(_n==_N,sum(`bad')!=0,0)
                summ `bad', mean
        }
           di in gr _n /*
        */ "note:  observations not equally spaced" _n /*
        */ _col(8) "modal spacing is delta `tvar' = " `mesh' _n /*
        */ _col(8) r(sum) " groups omitted from estimation"
        qui by `ivar': gen `omitted'  = `bad'[_N]
        if _N==0 {
                di in red "no observations"
                exit 2000
        }
end
. webuse grunfeld,clear
. set seed 111
. drop if uniform()<.05
(8 observations deleted)
. qui xi: xtgee invest i.year, robust corr(ar1)
. keepmode2 com time dropped_groups
note:  observations not equally spaced
       modal spacing is delta time = 1
       5 groups omitted from estimation
. tab com dropped
           |    dropped_groups
   company |         0          1 |     Total
- -----------+----------------------+----------
         1 |         0         18 |        18
         2 |         0         19 |        19
         3 |         0         18 |        18
         4 |        20          0 |        20
         5 |        20          0 |        20
         6 |        19          0 |        19
         7 |         0         19 |        19
         8 |        20          0 |        20
         9 |         0         19 |        19
        10 |        20          0 |        20
- -----------+----------------------+----------
     Total |        99         93 |       192
Scott
- ----- Original Message -----
From: Paul Seed <[email protected]>
Date: Wednesday, December 20, 2006 6:56 am
Subject: st: xtgee - identifying omitted groups
To: [email protected]
> This may be an old question, but I can't see anything in the FAQ
> or
> statalist archives.
>
> If I fit a model such as
>         xi: xtgee uric_acid i.visit on_rx if n_uric_acid > 1 &
> uric_acid
> ~= 0, robust corr(ar1)
> I get in the output:
>
> note:  observations not equally spaced
>        modal spacing is delta visit = 1
>        120 groups omitted from estimation
<snip>
> How do I identify the 120 omitted groups., so that I can compare
> the
> performance of the
> two models on the same data?  
*
*   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/