effect
Functions For Constructing Effect Plots
effect
constructs an "effect"
object for a term (usually a high-order term)
in a linear or generalized linear model, absorbing the lower-order terms marginal
to the term in question, and averaging over other terms in the model.
all.effects
identifies all of the high-order terms in a model and returns
a list of "effect"
objects (i.e., an object of type "effect.list"
).
Usage
effect(term, mod, xlevels=list(), default.levels=10, se=TRUE,
confidence.level=.95,
transformation=list(link=family(mod)$linkfun, inverse=family(mod)$linkinv),
typical=mean)
all.effects(mod, ...)
## S3 method for class 'effect':
print(x, type=c("response", "link"), ...)
## S3 method for class 'effect.list':
print(x, ...)
## S3 method for class 'effect':
summary(object, type=c("response", "link"), ...)
## S3 method for class 'effect.list':
summary(object, ...)
## S3 method for class 'effect':
plot(x, x.var=which.max(levels),
z.var=which.min(levels), multiline=is.null(x$se), rug=TRUE, xlab,
ylab=x$response, main=paste(effect, "effect plot"),
colors=palette(), symbols=1:10, lines=1:10, cex=1.5, ylim,
factor.names=TRUE, type=c("response", "link"), ticks=list(at=NULL, n=5),
alternating=TRUE, rescale.axis=TRUE, ...)
## S3 method for class 'effect.list':
plot(x, selection, ...)
## S3 method for class 'effect':
as.data.frame(x, row.names=NULL, optional=TRUE)
Arguments
- term
- the quoted name of a term, usually, but not necessarily, a high-order term in the model.
- mod
- an object of class
"lm"
or"glm"
. - xlevels
- an optional list of values at which to set covariates,
with components of the form
covariate.name = vector.of.values
. - default.levels
- number of values for covariates that are not
specified explicitly via
xlevels
; covariate values set by default are evenly spaced between the minimum and maximum values in the data. - se
- if
TRUE
, the default, calculate standard errors and confidence limits for the effects. - confidence.level
- level at which to compute confidence limits
based on the standard-normal distribution; the default is
0.95
. - transformation
- a two-element list with elements
link
andinverse
. For a generalized linear model, these are by default the link function and inverse-link (mean) function. For a linear model, these default toNULL
. If - typical
- a function to be applied to the columns of the model matrix
over which the effect is "averaged"; the default is
mean
. - x, object
- an object of type
"effect"
or"effect.list"
, as appropriate. - type
- if
"response"
(the default), effects are printed or the vertical axis is labelled on the scale of the response variable; if"link"
, effects are printed or the vertical axis labelled on the scale of the linear pre - x.var
- the index (number) of the covariate or factor to place on the horizontal axis of each panel of the effect plot. The default is the predictor with the largest number of levels or values.
- z.var
- the index (number) of the covariate or factor for which
individual lines are to be drawn in each panel of the effect plot. The default is the
predictor with the smallest number of levels or values. This argument is only
used if
multi
- multiline
- if
TRUE
, each panel of the display represents combinations of values of two predictors, with one predictor (corresponding tox.var
) on the horzontal axis, and the other (corresponding toz.var
) used to defi - rug
- if
TRUE
, the default, a rug plot is shown giving the marginal distribution of the predictor on the horizontal axis, if this predictor is a covariate. - xlab
- the label for the horizontal axis of the effect plot; if missing, the function will use the name of the predictor on the horizontal axis.
- ylab
- the label for the vertical axis of the effect plot; the default is the response variable for the model from which the effect was computed.
- main
- the title for the plot, printed at the top; the default title is constructed from the name of the effect.
- colors
colors[1]
is used to plot effects,colors[2]
to plot confidence bands. In a mulitline plot, the successivecolors
correspond to the levels of thez.var
covariate or factor.- symbols, lines
- corresponding to the levels of the
z.var
covariate or factor on a multiline plot. These arguments are used only ifmultiline = TRUE
; in this case a legend is drawn at the top of the display. - cex
- character expansion for plotted symbols; default is
1
. - ylim
- 2-element vector containing the lower and upper limits of the vertical axes;
if
NULL
, the default, then the vertical axes are scaled from the data. - factor.names
- a logical value, default
TRUE
, that controls the inclusion of factor names in conditioning-variable labels. - ticks
- a two-item list controlling the placement of tick marks on the vertical axis,
with elements
at
andn
. Ifat=NULL
(the default), the program attempts to find `nice' locations for the ticks, and the value of - alternating
- if
TRUE
(the default), the axis labels alternate by panels in multi-panel displays from left to right and top to bottom; ifFALSE
, axis labels appear at the bottom and on the left. - rescale.axis
- if
TRUE
(the default), the tick marks on the vertical axis are labelled on the response scale (e.g., the probability scale for effects computed on the logit scale for a binomial GLM). - selection
- the optional index (number) or quoted name of the effect in an effect list to be plotted; if not supplied, a menu of high-order terms is presented.
- ...
- arguments to be passed down.
- row.names, optional
- not used.
Details
Normally, the functions to be used directly are all.effects
, to return
a list of high-order effects, and the generic plot
function to plot the effects.
Plots are drawn using the xyplot
function in the
lattice
package. Effects may also be printed (implicitly or explicitly via
print
) or summarized (using summary
).
If asked, the effect
function will compute effects for terms that have
higher-order relatives in the model, averaging over those terms (which rarely makes sense), or for terms that
do not appear in the model but are higher-order relatives of terms that do.
For example, for the model Y ~ A*B + A*C + B*C
, one could
compute the effect corresponding to the absent term A:B:C
, which absorbs the constant, the
A
, B
, and C
main effects, and the three two-way interactions. In either of these
cases, a warning is printed.
In a generalized linear model, by default, effect
prints the computed effect on the scale of the
response variable using the inverse of the
link function. In a logit model, for example, this means that the effects are expressed on the probability
scale. By default, effects in a GLM are plotted on the scale of the linear predictor, but the vertical
axis is labelled on the response scale. This preserves the linear structure of the model while permitting
interpretation on what is usually a more familiar scale.
This approach may also be used with linear models, for example to display effects on the scale of the
response even if the data are analyzed on a transformed scale, such as log or square-root.
In calculating effects, the strategy for `safe' prediction described
in Hastie (1992: Sec. 7.3.3) is employed.
Value
effect
returns a list with the following components:term the term to which the effect pertains. formula the complete model formula. response a character string giving the response variable. variables a list with information about each predictor, including its name, whether it is a factor, and its levels or values. fit a one-column matrix of fitted values, representing the effect on the scale of the linear predictor; this is a ravelled table, representing all combinations of predictor values. x a data frame, the columns of which are the predictors, and the rows of which give all combinations of values of the predictors. model.matrix the model matrix from which the effect was calculated. data a data frame with the data on which the fitted model was based. discrepancy the percentage discrepancy for the `safe' predictions of the original fit; should be very close to 0. se a vector of standard errors for the effect, on the scale of the linear predictor. lower, upper one-column matrices of confidence limits, on the scale of the linear predictor. confidence.level corresponding to the confidence limits. transformation a two-element list, with element link
giving the link function, and elementinverse
giving the inverse-link (mean) function.
References
Fox, J. (1987) Effect displays for generalized linear models. Sociological Methodology 17, 347--361. Hastie, T. J. (1992) Generalized additive models. In Chambers, J. M., and Hastie, T. J. (eds.) Statistical Models in S, Wadsworth.
See Also
Examples
data(Cowles)
mod.cowles <- glm(volunteer ~ sex + neuroticism*extraversion,
data=Cowles, family=binomial)
eff.cowles <- all.effects(mod.cowles, xlevels=list(neuroticism=0:24,
extraversion=seq(0, 24, 6)))
eff.cowles
model: volunteer ~ sex + neuroticism * extraversion
sex effect
sex
female male
0.4409441 0.3811941
neuroticism*extraversion effect
extraversion
neuroticism 0 6 12 18 24
0 0.07801066 0.1871263 0.3851143 0.6301824 0.8225756
1 0.08636001 0.1963396 0.3870453 0.6200668 0.8083638
2 0.09551039 0.2058918 0.3889798 0.6098458 0.7932997
3 0.10551835 0.2157839 0.3909179 0.5995275 0.7773775
. . .
23 0.51953129 0.4747277 0.4303273 0.3870199 0.3454282
24 0.54709527 0.4895731 0.4323256 0.3768303 0.3243880
plot(eff.cowles, 'sex', ylab="Prob(Volunteer)")
Loading required package: lattice
plot(eff.cowles, 'neuroticism:extraversion', ylab="Prob(Volunteer)",
ticks=list(at=c(.1,.25,.5,.75,.9)))
plot(eff.cowles, 'neuroticism:extraversion', multiline=TRUE,
ylab="Prob(Volunteer)")
plot(effect('sex:neuroticism:extraversion', mod.cowles,
xlevels=list(neuroticism=0:24, extraversion=seq(0, 24, 6))), multiline=TRUE)
Warning message:
sex:neuroticism:extraversion does not appear in the model in:
effect("sex:neuroticism:extraversion", mod.cowles,
xlevels = list(neuroticism = 0:24,
data(Prestige)
mod.pres <- lm(prestige ~ log(income, 10) + poly(education, 3) + poly(women, 2),
data=Prestige)
eff.pres <- all.effects(mod.pres, default.levels=50)
plot(eff.pres)