[R] Re: lme, two random effects, poisson distribution

Martina Pavlicova, PhD mp2370 at columbia.edu
Tue Nov 16 06:22:03 CET 2004


Hello all,

I think that with the help of Mark Irwin, we solved the problem:

We fit the model using glmmPQL and instead of using variable,
'state', we model the independent fixed-effect 'state' as
I(x>10); i.e. it's 0 for resting time slots and 1 for
excited times slots.

Here is the code:
=================
slugs.lmedata <- groupedData(y ~ I(x>10) | slugs/batch,
data=as.data.frame(data.slugs))

csnew <- corAR1(form = ~ x | slugs/batch)

res.glmm <- glmmPQL(pumps ~ I(x>10), random = ~1|slugs/batch, family
= poisson, data=slugs.lmedata, correlation=csnew)

The summary of the model looks like this:
=========================================
> summary(res.glmm)
Linear mixed-effects model fit by maximum likelihood
 Data: slugs.lmedata
       AIC      BIC    logLik
  1265.934 1288.157 -626.9672

Random effects:
 Formula: ~1 | slugs
        (Intercept)
StdDev:   0.6959097

 Formula: ~1 | batch %in% slugs
        (Intercept) Residual
StdDev:    1.138034 1.304958

Correlation Structure: AR(1)
 Formula: ~x | slugs/batch
 Parameter estimate(s):
       Phi
-0.2820534
Variance function:
 Structure: fixed weights
 Formula: ~invwt
Fixed effects: y ~ I(x > 10)
                   Value Std.Error  DF   t-value p-value
(Intercept)   -0.5004731 0.2006282 142 -2.494531  0.0138
I(x > 10)TRUE  1.2553644 0.2494294 142  5.032944  0.0000
 Correlation:
              (Intr)
I(x > 10)TRUE -0.32

Standardized Within-Group Residuals:
       Min         Q1        Med         Q3        Max
-2.0856605 -0.5439464 -0.3606277  0.1855235  5.7606962

Number of Observations: 300
Number of Groups:
           slugs batch %in% slugs
              25              157

*******************************************************

I think this is the right model. But I am interested very much in
your opinions. I do not use mixed-effect modelling very often.

Thank your for all your help.

Martina

Quoting "Martina Pavlicova, PhD" <mp2370 at columbia.edu>:

>
> Hello,
>
> I have a dataset concerning slugs. For each slug, the number of
> pumps per one time slot was counted. The number of pumps follows
> Bi(30, p) where p is very small, thus could be approximated by
> Poisson dist. (# of pumps is very often = 0)
>
> The slugs were observed during 12 time slots which are correlated
> in
> time as AR(1). The time slots are divided into two categories:
>       Resting time slots (the first 10)
>       Excited time slots (the last 2)
>
> I used model:
>
> ************pumps_ti = state_t + slugs_i + error_ti
>
> slugs and error are normaly distributed
>
>       pumps_ti - # of pumps for i-th animal and t-th time slot
>       x_t - order of the time slot (x_1 = 1, ..., x_12 = 12)
>       state_t - state_t = 0 for resting time slots (t=1,...,10)
>               state_t = 1 for excited time slots (t=11,12)
>       slugs_i - ith animal, where i = 1,...,25
>
> I would like to find out if the # of pumps depends on the
> variable
> state, assuming the correlation AR(1) between x_t and slugs being
> a
> random-effect on intercept.
>
> slugs.lmedata <- groupedData(pumps ~ state | slugs,
> data=as.data.frame(data.slugs))
> cs <- corAR1(form= ~ x|slugs)
> res1 <- lme(pumps ~ state, random = ~1 | slugs,
> data=slugs.lmedata,
> cor=cs)
>
> ---------------------------------
>
> Now, I would like to add a complication to the model: The slugs
> were
> observed in batches:
> Batch_1 = {slugs_1, slugs_2, slugs_3}
> Batch_2 = {slugs_5, slugs_6}
> Batch_3 = {slugs_7, slugs_8, slugs_9, slugs_10}
> Batch_4 = {slugs_11}
> .
> .
> .
> Batch_12 = {slugs_24, slugs_25}
> Notice that there are 12 batches, and the number of slugs in each
> batch differ, from 1 slug to 4 slugs.
>
> I consider batch to be another random-effect on intercept. Thus I
> fit model:
>
> ************pumps_tij = state_t + slugs_i + batch_ij + error_tij
>
> Slugs, batch and error are normally distributed, but slugs and
> batch
> are not nested factors.
>
> I had fit following (however I'm not sure if that is right):
>
> slugs.lmedataB <- groupedData(pumps ~ state | slugs/batch,
> data=as.data.frame(data.slugs))
> csB <- corAR1(form= ~ x|slugs/batch)
> res1B <- lme(pumps ~ state, random = ~1 | slugs/batch,
> data=slugs.lmedataB, cor=csB)
>
> ----------------------------------------
>
> QUESTIONS:
> 1) Are my models right? Do I model the res1B model properly?
>
> 2) Until now, I have assumed that the number of pumps follow the
> normal distribution. However I know that the variable pumps is
> distributed along Poisson distribution. How can I model that? I
> would like to use LOG or SQRT transformation, but I don't know
> how.
>
> *****************************************
>
> Thank you very much for all your help.
>
> Martina Pavlicova
>
> --
> Department of Biostatistics
> Columbia University
> 722 W. 168th Street, 6th floor
> New York, NY 10032
>
> Phone: (212) 305-9405
> Fax: (212) 305-9408
> Email: mp2370 at columbia.edu
>




More information about the R-help mailing list