[R] analysing mixed effects/poisson/correlated data
Manuel Morales
Manuel.A.Morales at williams.edu
Sat Mar 8 17:00:38 CET 2008
On Sat, 2008-03-08 at 08:07 -0600, Douglas Bates wrote:
> On Sat, Mar 8, 2008 at 2:57 AM, Alexandra Bremner
> <alexandra.bremner at uwa.edu.au> wrote:
> > I am attempting to model data with the following variables:
>
> > timepoint - n=48, monthly over 4 years
> > hospital - n=3
> > opsn1 - no of outcomes
> > total.patients
> > skillmixpc - skill mix percentage
> > nurse.hours.per.day
>
> > Aims
> > To determine if skillmix affects rate (i.e. no.of.outcomes/total.patients).
> > To determine if nurse.hours.per.day affects rate.
> > To determine if rates vary between hospitals.
>
> > There is first order autoregression in the data. I have attempted to use the lmer function (and lmer2) with correlation structure and weights:
>
> > test1 <-lmer(opsn1~timepoint+as.factor(hospital)+ skillmixpc + nursehrsperpatday +(timepoint|hospital) +offset(log(totalpats)),family=poisson, data=opsn.totals)
> > test2 <-lmer(opsn1~timepoint+as.factor(hospital)+ skillmixpc + nursehrsperpatday +(timepoint|hospital)+offset(log(totalpats)),family=poisson, data=opsn.totals, correlation=corAR1(form=~1|hospital))
> > test3 <-lmer(opsn1~timepoint+as.factor(hospital)+ skillmixpc + nursehrsperpatday +(timepoint|hospital)+offset(log(totalpats)),family=poisson, data=opsn.totals, correlation=corAR1(form=~1|hospital),weights=varIdent(form=~1|hospital))
>
> You are mixing arguments for lme or nlme into a call to lmer. Because
> the weigths argument doesn't have the form required by lmer you get an
> error message. The effect of the correlation argument is more subtle
> - because lmer has ... in the argument list your correlation
> specification is absorbed without an error message but it has no
> effect.
>
> The lmer documentation doesn't say that you can use the forms of the
> correlation and weights arguments from the lme function, although you
> are not the first person to decide that it should. :-)
The documentation for weights in lmer references lm. It looks to me like
the weights argument for lm requires a vector of weights a priori - does
that mean lmer cannot estimate heteroscedasticity like lme can?
> There are theoretical problems with trying to specify a separate
> correlation argument in a generalized linear mixed model. In a GLMM
> the conditional variance of the response (i.e. the variance of Y given
> a value of B, the random effects) depends on the conditional mean so
> it is more difficult to decide what would be the effect if a
> correlation structure or a non-constant weighting structure were
> overlaid on it.
>
> >
> >
> > Test1 & test2 give the same output (below). Does this mean that the correlation structure is not being used?
> >
> > Test3 produces the following error message (I notice there are others who have had problems with weights).
> >
> > Error in model.frame(formula, rownames, variables, varnames, extras, extranames, :
> >
> > variable lengths differ (found for '(weights)')
> >
> >
> >
> > > summary(test1)
> >
> > Generalized linear mixed model fit using Laplace
> >
> > Formula: opsn1 ~ timepoint + as.factor(hospital) + skillmixpc + nursehrsperpatday + (timepoint | hospital) + offset(log(totalpats))
> >
> > Data: opsn.totals
> >
> > Family: poisson(log link)
> >
> > AIC BIC logLik deviance
> >
> > 196.2 223.0 -89.12 178.2
> >
> > Random effects:
> >
> > Groups Name Variance Std.Dev. Corr
> >
> > hospital (Intercept) 3.9993e-03 6.3240e-02
> >
> > timepoint 5.0000e-10 2.2361e-05 0.000
> >
> > number of obs: 144, groups: hospital, 3
> >
> >
> >
> > Estimated scale (compare to 1 ) 1.057574
> >
> >
> >
> > Fixed effects:
> >
> > Estimate Std. Error z value Pr(>|z|)
> >
> > (Intercept) -2.784857 1.437283 -1.9376 0.0527 .
> >
> > timepoint -0.002806 0.002709 -1.0358 0.3003
> >
> > as.factor(hospital)2 -0.030277 0.120896 -0.2504 0.8022
> >
> > as.factor(hospital)3 -0.349763 0.171950 -2.0341 0.0419 *
> >
> > skillmixpc -0.026856 0.015671 -1.7137 0.0866 .
> >
> > nursehrsperpatday -0.025376 0.043556 -0.5826 0.5602
> >
> > ---
> >
> > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> >
> >
> >
> > Correlation of Fixed Effects:
> >
> > (Intr) timpnt as.()2 as.()3 skllmx
> >
> > timepoint -0.606
> >
> > as.fctr(h)2 -0.382 0.132
> >
> > as.fctr(h)3 -0.734 0.453 0.526
> >
> > skillmixpc -0.996 0.596 0.335 0.715
> >
> > nrshrsprptd 0.001 -0.297 0.204 -0.130 -0.056
> >
> >
> >
> > Can anyone suggest another way that I can do this analysis please? Or a work around for this method?
> >
> > Any help will be gratefully received as I have to model 48 different opsn outcomes.
> >
> >
> >
> > Alex
> >
> >
> >
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
http://mutualism.williams.edu
More information about the R-help
mailing list