This function is the mgcViz
equivalent of plot.gam. It is the workhorse of the
mgcViz
package, and allows plotting (almost) any type of smooth,
parametric or random effects. It is basically a wrapper around plotting
methods that are specific to individual smooth effect classes (such as
plot.mgcv.smooth.1D and plot.random.effect).
# S3 method for gamViz plot(x, n = 100, n2 = 40, select = NULL, allTerms = FALSE, ...)
x | an object of class |
---|---|
n | number of points used for each 1-d plot. For a nice smooth plot this needs to be several times the estimated degrees of freedom for the smooth. |
n2 | square root of number of grid points used for plotting 2D functions effects using contours or heatmaps. |
select | allows plotting a subset of model terms. For instance, if you just want the plot
for the second smooth term, set |
allTerms | if |
... | other parameters, such as |
An object of class c("plotGam", "gg")
.
library(mgcViz) ######## Basic example # Simulate some data and fit model set.seed(2) dat <- gamSim(1,n=1e3,dist="normal",scale=2)#> Gu & Wahba 4 term additive modelb <- bam(y~s(x0)+s(x1, x2)+s(x3), data=dat) b <- getViz(b) # Default smooth effect plotting print(plot(b), ask = FALSE)# Now on one page and with out title on the second plot print(plot(b) + labs(title = NULL), pages = 1)# So far we used default layers, added in the printing phase, but # we might want to specify our own layers. Here we is how to do it pl <- plot(b) + l_points() + l_fitLine(linetype = 3) + l_fitContour() + l_ciLine(colour = 2) + theme_get() + labs(title = NULL) print(pl, pages = 1)# We might want to plot only the first smooth plot(b, select = 1) + l_dens(type = "cond") + l_fitLine() + l_ciLine()######## Example with "by variable" smooth effect # Simulate data and fit model dat <- gamSim(4)#> Factor `by' variable exampleb <- gam(y ~ fac+s(x2,by=fac)+s(x0),data=dat) b <- getViz(b) # print() only needed because we want to plot on a single page print(plot(b), pages = 1)######## Example with 3D smooth effect which cannot be plotted # Simulate data and fit model n <- 5e3 x <- rnorm(n); y <- rnorm(n); z <- rnorm(n); z2 <- rnorm(n) ob <- (x-z)^2 + (y-z)^2 + z2^3 + rnorm(n) b1 <- bam(ob ~ s(x, y, z) + s(z2), discrete = TRUE) b1 <- getViz(b1) # Only second effect get plotted plot(b1)#># For plotting effects with more than 2D, one we need specific method. # See ?plot.mgcv.smooth.MD ######## Examples about plotting parametric effects # 1 Gaussian GAM set.seed(3) dat <- gamSim(1,n=2500,dist="normal",scale=20)#> Gu & Wahba 4 term additive modeldat$fac <- as.factor( sample(c("A1", "A2", "A3"), nrow(dat), replace = TRUE) ) dat$logi <- as.logical( sample(c(TRUE, FALSE), nrow(dat), replace = TRUE) ) bs <- "cr"; k <- 12 b <- bam(y ~ x0 + x1 + I(x1^2) + s(x2,bs=bs,k=k) + fac + x3:fac + I(x1*x2) + logi + s(x3, bs=bs),data=dat, discrete = TRUE) b <- getViz(b) # All effects in one page. Notably 'x3:fac' is missing: we have no methods # for plotting second order effects. print(plot(b, allTerms = TRUE), pages = 1)# 2 GAMLSS Gaussian model library(mgcv);library(MASS) mcycle$fac <- as.factor( sample(c("z", "k", "a", "f"), nrow(mcycle), replace = TRUE) ) b <- gam(list(accel~times + I(times^2) + s(times,k=10), ~ times + fac + s(times)), data=mcycle,family=gaulss()) b <- getViz(b) # All effects on one page: effect of second linear predictor end with '.1' print(plot(b, allTerms = TRUE), pages = 1)