R: Plot Slices of Bivariate Functions

sliceplot {bamlss} | R Documentation

## Plot Slices of Bivariate Functions

### Description

This function plots slices from user defined values of bivariate surfaces.

### Usage

    sliceplot(x, y = NULL, z = NULL, view = 1, c.select = NULL,
      values = NULL, probs = c(0.1, 0.5, 0.9), grid = 100,
      legend = TRUE, pos = "topright", digits = 2, data = NULL,
      rawdata = FALSE, type = "mba", linear = FALSE,
      extrap = FALSE, k = 40, rug = TRUE, rug.col = NULL,
      jitter = TRUE, ...)

### Arguments

`x` | A matrix or data frame, containing the covariates for which the effect should be plotted in the first and second column and at least a third column containing the effect. Another possibility is to specify the plot via a `formula`, e.g., for simple plotting of bivariate surfaces `z ~ x + y`, see the examples.
`y` | If `x` is a vector the argument `y` and `z` must also be supplied as vectors.
`z` | If `x` is a vector the argument `y` and `z` must also be supplied as vectors, `z` defines the surface given by z = f(x, y).
`view` | Which variable should be used for the x-axis of the plot, the other variable will be used to compute the slices. May also be a `character` with the name of the corresponding variable.
`c.select` | Integer, selects the column that is used in the resulting matrix to be used as the `z` argument.
`values` | The values of the `x` or `y` variable that should be used for computing the slices, if set to `NULL`, slices will be constructed according to the quantiles, see also argument `probs`.
`probs` | Numeric vector of probabilities with values in [0,1] to be used within function `quantile` to compute the `values` for plotting the slices.
`grid` | The grid size of the surface where the slices are generated from.
`legend` | If set to `TRUE`, a legend with the `values` that where used for slicing will be added.
`pos` | The position of the legend, see also function `legend`.
`digits` | The decimal place the legend values should be rounded.
`data` | If `x` is a `formula`, a `data.frame` or `list`. By default the variables are taken from `environment(x)`: typically the environment from which `plot3d` is called.
`rawdata` | If set to `TRUE`, the data will not be interpolated, only raw data will be used. This is useful when displaying data on a regular grid.
`type` | Character, which type of interpolation method should be used. The default is `type = "akima"`, see function `interp`. The two other options are `type = "mba"`, which calls function `mba.surf` of package MBA, or `type = "mgcv"`, which uses a spatial smoother withing package mgcv for interpolation. The last option is definitely the slowest, since a full regression model needs to be estimated.
`linear` | Logical, should linear interpolation be used withing function `interp`?
`extrap` | Logical, should interpolations be computed outside the observation area (i.e., extrapolated)?
`k` | Integer, the number of basis functions to be used to compute the interpolated surface when `type = "mgcv"`.
`rug` | Add a `rug` to the plot.
`jitter` | If set to `TRUE` a `jitter`ed `rug` plot is added.
`rug.col` | Specify the color of the rug representation.
`...` | Parameters passed to `matplot` and `legend`.

### Details

Similar to function `plot3d`, this function first applies bivariate interpolation on a regular `grid`, afterwards the slices are computed from the resulting surface.

### Note

Function `sliceplot` can use the akima package to construct smooth interpolated surfaces, therefore, package akima needs to be installed. The akima package has an ACM license that restricts applications to non-commercial usage, see

https://www.acm.org/publications/policies/software-copyright-notice

Function `sliceplot` prints a note referring to the ACM license. This note can be suppressed by setting

`options("use.akima" = TRUE)`

### See Also

`plot2d`, `plot3d`, `plotmap`, `plotblock`.

### Examples

    ## Generate some data.
    set.seed(111)
    n <- 500

    ## Regressors.
    d <- data.frame(z = runif(n, -3, 3), w = runif(n, 0, 6))

    ## Response.
    d$y <- with(d, 1.5 + cos(z) * sin(w) + rnorm(n, sd = 0.6))

    ## Not run: ## Estimate model.
    b <- bamlss(y ~ te(z, w), data = d)
    summary(b)

    ## Plot estimated effect.
    plot(b, term = "te(z,w)", sliceplot = TRUE)
    plot(b, term = "te(z,w)", sliceplot = TRUE, view = 2)
    plot(b, term = "te(z,w)", sliceplot = TRUE, view = "w")
    plot(b, term = "te(z,w)", sliceplot = TRUE, probs = seq(0, 1, length = 10))

    ## End(Not run)

    ## Variations.
    d$f1 <- with(d, sin(z) * cos(w))
    sliceplot(cbind(z = d$z, w = d$w, f1 = d$f1))

    ## Same with formula.
    sliceplot(sin(z) * cos(w) ~ z + w, ylab = "f(z)", data = d)

    ## Compare with plot3d().
    plot3d(sin(z) * 1.5 * w ~ z + w, zlab = "f(z,w)", data = d)
    sliceplot(sin(z) * 1.5 * w ~ z + w, ylab = "f(z)", data = d)
    sliceplot(sin(z) * 1.5 * w ~ z + w, view = 2, ylab = "f(z)", data = d)

[Package bamlss version 1.1-7 Index]