Getting started described how visreg
provides a visual summary of a model, somewhat akin to the numerical summary you get from summary(fit)
. For nonlinear terms, however, it is usually difficult to interpret numerical summaries, and visual representations become far more important.
Nonlinear terms
For example, suppose we allow the effect of wind on ozone to be nonlinear by introducing a quadratic term into the model:
Note that visreg
automatically detects the nonlinear relationship and represents this correctly in the plot. This should work for any transformation you can think of; here are some examples:
fit <- lm(Ozone ~ Solar.R + Wind + Wind*I(Wind > 10) + Temp, data=airquality)
visreg(fit, "Wind", print.cond=FALSE)
library(splines)
fit <- lm(Ozone ~ Solar.R + ns(Wind, df=3) + Temp, data=airquality)
visreg(fit, "Wind")
If you ever run across a kind of transformation that produces an error in visreg
, please tell us about it and we will fix it ASAP.
Transformations of the outcome
Another kind of nonlinear model arises when the outcome is transformed, but we are interested in plotting the relationship on the original scale. For example, ozone levels must be positive. However, as the GAM on the front page illustrates, some models may result in predictions or confidence band that fall below 0. One way of remedying this is to model the log of ozone concentrations instead of the ozone concentrations directly:
fit <- lm(log(Ozone) ~ Solar.R + Wind + Temp, data=airquality)
visreg(fit, "Wind", trans=exp, ylab="Ozone", partial=TRUE)
Note that here, the plotting involves an inverse transformation. There is no automatic way for visreg
to know what the correct inverse transformation is (except for GLMs), so this must be supplied as a function.
Also note that by default, visreg
turns off partial residuals when trans
is specified, as this can provide a distorted view of outliers (a mild outlier can become an extreme outlier once a transformation has been applied, and vice versa), but we include them here by explicitly specifying partial=TRUE
. This is discussed in greater depth in the page on GLMs.