[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