Professional Documents
Culture Documents
Part II
Binary Data
Binary Data
Binary Data
Binary Data
Binary data may occur in two forms
probit link g(
i
) =
1
(
i
) where denotes the cumulative
distribution function of N(0, 1)
(y
i
+ 0.5)/n
i
1 (y
i
+ 0.5)/n
i
= log
y
i
+ 0.5
n
i
+ 0.5 y
i
m
).
Under the null hypothesis, LR is approximately
2
d
where d = p q.
Binary Data
Model Selection
Analysis of Deviance
Binomial Responses and glm
Now we would like to t our candidate models. Binomial responses
can be specied to glm in three ways:
p
i
1 p
i
=
0
+
1
x
1i
If we increase x
1
by one unit
log
p
i
1 p
i
=
0
+
1
(x
1i
+ 1)
=
0
+
1
x
1i
+
1
p
i
1 p
i
= exp(
0
+
1
x
1i
) exp(
1
)
the odds are multiplied by exp(
1
).
Binary Data
Model Evaluation
Model Interpretation
Interpretation of Budworm Model
For the budworm data, the parallel lines model is
log
p
i
1 p
i
= 3.47 + 1.06ldose
i
+ 1.10(sex
i
== M)
Therefore
the odds of death for a male moth are exp(1.10) = 3.01 times
that for a female moth, given a xed dose of the pyrethroid.
j
.
For example a 95% condence interval would be given by
j
1.96 s.e.(
j
)
Such condence intervals can be obtained as follows:
confint.lm(parr)
Binary Data
Model Evaluation
Condence Intervals
Proling the Deviance
The Wald condence intervals used standard errors based on the
second-order Taylor expansion of the log-likelihood at
.
An alternative approach is to the prole the log-likelihood, or
equivalently the deviance, around each
j
and base condence
intervals on this.
We set
j
to
j
=
j
and re-t the model to maximise the
likelihood/minimise the deviance under this constraint. Repeating
this for a range of values around
j
gives a deviance prole for that
parameter.
Binary Data
Model Evaluation
Condence Intervals
Likelihood Ratio Test
To test the hypothesis
H
0
:
j
=
j
,
versus H
1
:
j
=
j
We can use the likelihood ratio statistic
2(l(
j
) l(
j
))
which is asymptotically distributed
2
1
. Thus
= sign(
j
)
(2(l(
j
) l(
j
)))
= sign(
j
)
((D(
j
) D(
j
))/)
is asymptotically N(0, 1) and is analogous to the Wald statistic.
Binary Data
Model Evaluation
Condence Intervals
Prole Plots
If the log-likelihood were quadratic about
j
, then a plot of vs.
j
would be a straight line.
We can obtain such a plot as follows
plot(profile(parr, "ldose"))
The approximation is not unreasonable, but there is slight
curvature.
Binary Data
Model Evaluation
Condence Intervals
Prole Condence Intervals
Rather than use the quadratic approximation, we can directly
estimate the values of
j
for which = 1.96 to obtain a 95%
conndence interval for
j
.
This is the method used by confint.glm:
confint(parr)
Notice the condence intervals are asymmetric.
Binary Data
Model Evaluation
Prediction
Prediction
The predict method for GLMs has a type argument, which may
be specied as
i=1
{ p
i
log[ p
i
/(1 p
i
)] + log(1 p
i
)}
which depends only on y
i
through p
i
therefore can tell us nothing
about agreement between y
i
and p
i
.
Instead we shall analyse the residuals and consider alternative
models.
Binary Data
Model Evaluation
Residual Analysis
Residual Plots for Binary Data
For binary data, or binomial data where n
i
is small for most
covariate patterns, there are few distinct values of the residuals
and the plots may be uninformative:
plot(model1)
Therefore we consider large residuals
Binary Data
Model Evaluation
Residual Analysis
Checking Outliers
We check residuals >2:
r <- residuals(model1)
r[abs(r) > 2]
Data[abs(r) > 2, ]
sum(bron[cigs == 0])
The model appears to t poorly for non-smokers
Binary Data
Model Evaluation
Residual Analysis
More Complex Models
Further investigation shows that
adding second and third order terms does improve the model,
but results in very complex model
We suspect that we are missing an important aspect of the data.
Binary Data
Model Evaluation
Residual Analysis
Grouping the Data
A useful technique in evaluating models t to binary data is to
group the data and treat as binomial instead.
We select category boundaries to give roughly equal numbers in
each category:
cutCigs <- cut(cigs, c(-1, 0, 1, 3, 5, 8, 50))
cutPoll <- cut(poll, c(-1, 55, 57.5, 60, 62.5, 65, 100))
xtabs( cutCigs)
xtabs( cutPoll)
Binary Data
Model Evaluation
Residual Analysis
Then we compute the proportions from the original data:
total <- xtabs( cutCigs + cutPoll)
presence <- xtabs(bron cutCigs + cutPoll)
absence <- c(total) - c(presence)
binData <- as.data.frame.table(presence,
responseName = "presence")
binData <- cbind(binData, absence)
Binary Data
Model Evaluation
Residual Analysis
Modelling Binomial Data
We go back to a model with rst order terms:
model4 <- glm(cbind(presence, absence) cutCigs + cutPoll,
family = binomial, data = binData)
summary(model4)
The deviance can now be used as a measure of goodness-of-t,
showing that the model ts well.
Binary Data
Model Evaluation
Residual Analysis
Checking for Linearity
Using anova, we see that cutPoll is close to signicance
anova(model4, test = "Chisq")
We should look more closely before dropping this variable.
The linear trend in the tted eects for cutPoll suggests this
factor could be treated as a continuous variable.
Binary Data
Model Evaluation
Residual Analysis
model5 <- glm(cbind(presence, absence) cutCigs + c(cutPoll),
family = binomial, data = binData)
anova(model5, test = "Chisq")
The dierence in deviance is not signicant and now both terms
are signicant in the model.
Looking at the tted eects for cutCigs suggests we can simplify
further.
Binary Data
Model Evaluation
Residual Analysis
Checking for Nonlinearity
levels(binData$cutCigs) <- c("0", "(0,3]", "(0,3]", "(3,8]",
"(3,8]", "8+")
model6 <- update(model5)
The dierence in deviance is minimal.
The large negative eect for cutCigs = (0,3] corresponds to
p 0. This occurs because there were no cases of
bronchitis observed for smokers of < 3
cigarettes/day.
There were cases of bronchitis amongst non-smokers
however, explaining why models based on the
continuous variable cigs required higher order terms.
Binary Data
Model Evaluation
Residual Analysis
Back to Binary Data
Now we can apply what we have found to the original data.
We create a cigs factor and use this instead of a continuous
variable:
cigs <- cut(cigs, c(-1, 0, 3, 8, 50))
model7 <- glm(bron cigs + poll, family = binomial)
Binary Data
Model Evaluation
Residual Analysis
There are now only three residuals with absolute value greater than
two, all corresponding to non-smokers with bronchitis.
r <- residuals(model1)
r[abs(r) > 2]
anova(model1, model7, test = "Chisq")
The model is a signicant improvement on model 1, whilst being
simple to interpret.
Binary Data
Model Evaluation
Residual Analysis
Bronchitis Model
Call: glm(formula = bron ~ cigs + poll, family = binomial)
Coefficients:
(Intercept) cigs(0,3] cigs(3,8] cigs(8,50]
-9.3667 -17.3944 1.5416 2.4657
poll
0.1241
Degrees of Freedom: 211 Total (i.e. Null); 207 Residual
Null Deviance: 221.8
Residual Deviance: 143.7 AIC: 153.7
Binary Data
Model Evaluation
Residual Analysis
Interpretation of the Model
Smokers of 3-8 and more than 8 cigarettes per day have their
odds on bronchitis multiplied by exp(1.54) = 4.67 and
exp(2.47) = 11.77 respectively, compared with non-smokers.
use cut to convert tempF to a factor with one level for each
5-degree interval of temperature, i.e. 50-55, 55-60, . . . 80-85
use segments to add the mean line in each interval to the plot
Binary Data
Exercises
3. The piecewise linear model gives an idea of the trend but a
logistic model will quantify the eect of temperature on the
expected odds of damage. Use glm to t this logistic model and
summarise the results. Is there a signicant relationship between
tempF and damage?
Since the data are binary, we cannot use the deviance to check
goodness-of-t. Look instead at the data corresponding to the
large residuals. What do you notice?
4. Use predict to add a tted line to data plot. Compare this to
the pattern in the residuals.
Binary Data
Exercises
5. Since there are six O-rings altogether, we have repeated
observations at each temperature. Therefore we can also analyse
the data as binomial observations:
use tapply to sum damage over the levels of the new factor
F. Assuming
the six O-rings fail independently, how many failures does the
model predict will fail at this temperature? Would you have
recommended that the ight should go ahead?
Binary Data
Exercises
8. Use read.table to read the le "car income.txt", which
records for 33 families