[R-sig-ME] Logistic regression with spatial autocorrelation structure

Douglas Bates bates at stat.wisc.edu
Tue Feb 1 19:08:52 CET 2011


On Tue, Feb 1, 2011 at 12:05 PM, Douglas Bates <bates at stat.wisc.edu> wrote:
> On Mon, Jan 31, 2011 at 11:45 AM, Dale Steele <dale.w.steele at gmail.com> wrote:
>> Dear mixed-modeling  experts,
>>
>> I'm interested in modeling the probability of appendicitis in patients
>> with abdominal pain.
>>
>> The R binary data file 'http://www.ped-em.org/appy.rda' contains
>> the following variables from a pilot study of 138 children with
>> abdominal pain.
>
> Thank you for providing the data.
>
>> 'dx'        eventual diagnosis:   0=no appendicitis, 1=appendicitis
>> 'gender'       Male/Female
>> 'wbc'       total white blood cell count
>> 'priorprob'    Clinical predicted probability of appendicitis
>> 'doc'       doctor who assigned 'priorprob'
>>
>> After taking a history and performing a physical examination, the ER doctor
>> was asked to make a vertical mark on a 100 mm horizontal line to represent
>> her estimate of the (percent) probability that the patient had appendicitis.
>>
>> My initial thought was to fit a multiple logistic regression model:
>>
>> m1 <- glm(dx ~ gender + priorprob + wbc + doc, family=binomial, data=appy)
>>
>> However, it seems likely that each doctor interpreted the probability scale
>> differently.  The 23 doctors evaluated from 1 to 17 patients each. I'm
>> not primarily interest in predictions by a specific clinician.  Thus,
>> it seems to make sense to fit a generalized linear mixed model.
>>
>> At this point I get muddled. Have I correctly specified a random
>> intercept model (m2) and a random intercept/random slope model (m3)?
>> Are there other sensible models?
>
> Yes, you have correctly specified them.  However, if you check the
> output from the fits
>> (m2 <- glmer(dx ~ priorprob + gender + wbc + (1 | doc), appy, binomial))
> Generalized linear mixed model fit by the Laplace approximation
> Formula: dx ~ priorprob + gender + wbc + (1 | doc)
>   Data: appy
>   AIC   BIC logLik deviance
>  108.1 122.7 -49.03    98.07
> Random effects:
>  Groups Name        Variance Std.Dev.
>  doc    (Intercept) 0.82922  0.91062
> Number of obs: 138, groups: doc, 23
>
> Fixed effects:
>            Estimate Std. Error z value Pr(>|z|)
> (Intercept) -8.28862    1.45666  -5.690 1.27e-08
> priorprob    0.05025    0.01291   3.892 9.96e-05
> genderMale   1.18705    0.56752   2.092   0.0365
> wbc          0.34130    0.07090   4.814 1.48e-06
>
> Correlation of Fixed Effects:
>           (Intr) prrprb gndrMl
> priorprob  -0.775
> genderMale -0.293  0.130
> wbc        -0.790  0.353  0.040
>> (m3 <- glmer(dx ~ priorprob + gender + wbc + (priorprob | doc), appy, binomial))
> Generalized linear mixed model fit by the Laplace approximation
> Formula: dx ~ priorprob + gender + wbc + (priorprob | doc)
>   Data: appy
>   AIC BIC logLik deviance
>  111.5 132 -48.76    97.52
> Random effects:
>  Groups Name        Variance   Std.Dev. Corr
>  doc    (Intercept) 0.02897010 0.170206
>        priorprob   0.00016799 0.012961 1.000
> Number of obs: 138, groups: doc, 23
>
> Fixed effects:
>            Estimate Std. Error z value Pr(>|z|)
> (Intercept) -8.23977    1.44408  -5.706 1.16e-08
> priorprob    0.04957    0.01328   3.733 0.000189
> genderMale   1.16593    0.57481   2.028 0.042521
> wbc          0.34485    0.07056   4.887 1.02e-06
>
> Correlation of Fixed Effects:
>           (Intr) prrprb gndrMl
> priorprob  -0.757
> genderMale -0.299  0.141
> wbc        -0.800  0.350  0.030
>> anova(m2, m3)
> Data: appy
> Models:
> m2: dx ~ priorprob + gender + wbc + (1 | doc)
> m3: dx ~ priorprob + gender + wbc + (priorprob | doc)
>   Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
> m2  5 108.07 122.70 -49.034
> m3  7 111.52 132.01 -48.759 0.5501      2     0.7595
>> (m4 <- update(m2, . ~ . - gender))  # check if gender is significant, using LRT
> Generalized linear mixed model fit by the Laplace approximation
> Formula: dx ~ priorprob + wbc + (1 | doc)
>   Data: appy
>   AIC   BIC logLik deviance
>  110.5 122.2 -51.24    102.5
> Random effects:
>  Groups Name        Variance Std.Dev.
>  doc    (Intercept) 0.63458  0.7966
> Number of obs: 138, groups: doc, 23
>
> Fixed effects:
>            Estimate Std. Error z value Pr(>|z|)
> (Intercept) -7.62797    1.33760  -5.703 1.18e-08
> priorprob    0.04834    0.01229   3.934 8.35e-05
> wbc          0.34395    0.06771   5.080 3.77e-07
>
> Correlation of Fixed Effects:
>          (Intr) prrprb
> priorprob -0.786
> wbc       -0.813  0.357
>> anova(m4, m3)
> Data: appy
> Models:
> m4: dx ~ priorprob + wbc + (1 | doc)
> m3: dx ~ priorprob + gender + wbc + (priorprob | doc)
>   Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
> m4  4 110.48 122.19 -51.240
> m3  7 111.52 132.01 -48.759 4.9639      3     0.1745

Sorry, that test should have been

> anova(m4, m2)
Data: appy
Models:
m4: dx ~ priorprob + wbc + (1 | doc)
m2: dx ~ priorprob + gender + wbc + (1 | doc)
   Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
m4  4 110.48 122.19 -51.240
m2  5 108.07 122.70 -49.034 4.4138      1    0.03565

> you will see that the random intercept/random slope model produces a
> degenerate fit (estimated correlation of the within-doctor random
> effects is -1.000), which is not significantly better than the random
> intercept fit.  I would therefore use m2. (Because the fixed-effect
> for gender had a z-value close to 2 I performed the more reliable
> likelihood-ratio test, just to check.)
>
>
>> library(lme4)
>> m2 <- glmer(dx ~ priorprob + gender + wbc + (1 | doc),
>>            family=binomial, data=appy)
>>
>> m3 <- glmer(dx ~ priorprob + gender  + wbc + (priorprob | doc),
>>            family=binomial, data=appy)
>>
>> My ultimate goal is to estimate the probability of appendicitis
>> (and a prediction interval), given a specific 'gender', 'wbc' and
>> 'priorprob' assigned by a doctor with similar diagnostic ability to
>> those who participated in our pilot study. I'm stuck on how to code this
>> prediction.
>
> The prediction will be based on the fixed-effects only.  Because it
> applies to a doctor not in this study, we assign the random effect for
> that doctor to be zero, which is the expected value in the absence of
> any information on that doctor.
>
> The fixef extractor returns the estimates of the fixed-effects
> parameters.  For a female patient with median prior probability (55%)
> and median white blood cell count (9.45) the estimated linear
> predictor (eta = -2.299) corresponds to a probability of 9.1%
>
>
>> fixef(m2)
> (Intercept)   priorprob  genderMale         wbc
>  -8.2886183   0.0502540   1.1870539   0.3412998
>> eta <- crossprod(c(1, 55, 0, 9.45), fixef(m2))
>> eta
>          [,1]
> [1,] -2.299365
>> binomial()$linkinv(eta)
>           [,1]
> [1,] 0.09117557
>




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