[R-sig-ME] How to extract num. of observations and groups used in a mixed model using gee package

david oseguera montiel oseguera.david at gmail.com
Tue Apr 24 18:11:19 CEST 2012


Ben, Rob and David,
Thank you all, to resume, the option given by Ben worked when id 
variable is stored like in the sleeping data set.

library(lme4)
mod <- gee(Reaction ~ Days, id=Subject, data=sleepstudy, 
corstr="exchangeable")
length(unique(mod$id))
[1] 18

The option given by David worked when id variable is stored like in the 
warpbreaks data set.


summgee <- summary(gee(breaks ~ tension, id=wool, data=warpbreaks,
                     corstr="exchangeable"))

summgee$call$id
# wool
length(levels(warpbreaks[[as.character(summgee$call$id)]]))
#[1] 2


On 24/04/2012 10:01, Ben Bolker wrote:
> On 12-04-24 10:54 AM, Robert Kushler wrote:
>> The following lines from the gee help page ...
>>
>> Details
>>
>> Though input data need not be sorted by the variable named "id", the
>> program will interpret physically contiguous records possessing the same
>> value of id as members of the same cluster. Thus it is possible to use
>> the following vector as an id vector to discriminate 4 clusters of size
>> 4: c(0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1).
>>
>>
>>   ... indicate that the proposed strategy may not yield a correct
>> answer.  In fact, the above suggests
>> that you could get different results depending on whether or not your
>> data set is sorted.  I find
>> this quite disturbing, but haven't taken the time to test it.
>>
>> Regards,   Rob Kushler
>    Yow.  Good catch.
>
>   Maybe length(rle(geemodel$id)$length) would work?
>
>
>> (id<- rep(c(0,1,0),each=3))
> [1] 0 0 0 1 1 1 0 0 0
>> length(rle(id)$lengths)
> [1] 3
>> (id<- rep(c(0,1,0,1),each=3))
>   [1] 0 0 0 1 1 1 0 0 0 1 1 1
>> length(rle(id)$lengths)
> [1] 4
>
>>
>>
>>
>>
>> On 4/24/2012 10:25 AM, David Winsemius wrote:
>>> On Apr 24, 2012, at 9:46 AM, Ben Bolker wrote:
>>>
>>>> david oseguera montiel<oseguera.david at ...>  writes:
>>>>
>>>>> I meant the grouping factor in the model indicated by id. From gee
>>>>> documentation 'id = a vector which identifies the clusters..'. So in
>>>>> the
>>>>> warpbreaks data set, id = wool has 54 obs, in two clusters (groups).
>>>> [snip]
>>>>
>>>>>>> David,
>>>>>>> Thank you very much. Number of observations solved, but I am still
>>>>>>> missing how to find out the number of groups used. In the warpbreaks
>>>>>>> data set these are 2. Any ideas. Thank you.
>>>>>>>
>>>>>> I must be unclear what you mean by "number of groups".
>>>>
>>>> Didn't Chuck Cleland's answer work, i.e. length(unique(model$id)) ... ?
>>> It didn't work for me.
>>> length(unique(summgee$id))
>>> [1] 0
>>>   >  summgee$id
>>> NULL
>>>
>>> See my other reply for what did work. I suppose it could be that both
>>> the OP and I are behind on gee versions. Mine is
>>> 4.13-17 and I see that there is a more recent binary on CRAN. With a
>>> (slightly out-of-date) version loaded, I am loath
>>> to detach because getting things to all sync up is a bit of a hassle
>>> and error-prone without a fresh start and I have
>>> other work time-consuming running in this session.
>>>



More information about the R-sig-mixed-models mailing list