Given an object of the cgam class, which has at least two non-parametrically modelled predictors, this routine will make a 3D plot of the fit with a set of two non-parametrically modelled predictors in the formula being the x and y labs. If there are more than two non-parametrically modelled predictors, any other such predictor will be evaluated at the largest value which is smaller than or equal to its median value.
If there is any categorical covariate and if the user specifies the argument categ to be a character representing a categorical covariate in the formula, then a 3D plot with multiple parallel surfaces, which represent the levels of a categorical covariate in an ascending order, will be created; otherwise, a 3D plot with only one surface will be created. Each level of a categorical covariate will be evaluated at its mode.
This routine is extended to make a 3D plot for an object of the wps class, which has only two isotonically modelled predictors. See the documentation below for more details.
This routine is an extension of the generic R graphics routine persp.
An object of the cgam class with at least two non-parametrically modelled predictors, or an object of the wps class.
Arguments to be passed to the S3 method for the cgam or wps class:
The routine plotpersp returns a 3D plot of an object of the cgam class or the wps class. The x lab and y lab represent a set of non-parametrically modelled predictors used in a cgam formula and represent the two isotonically modelled predictors in a wps formula. For a cgam fit, the z lab represents the estimated mean value or the estimated systematic component value, and for a wps fit, the z lab represents the constrained or the unconstrained estimated mean value.
Mary C. Meyer and Xiyue Liao
The official documentation for the generic R routine persp: http://stat.ethz.ch/R-manual/R-patched/library/graphics/html/persp.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
# Example 1. data(FEV) # extract the variables y <- FEV$FEV age <- FEV$age height <- FEV$height sex <- FEV$sex smoke <- FEV$smoke fit <- cgam(y ~ incr(age) + incr(height) + factor(sex) + factor(smoke), nsim = 0) fit.s <- cgam(y ~ s.incr(age) + s.incr(height) + factor(sex) + factor(smoke), nsim = 0) plotpersp(fit, age, height, x_grid = 10, y_grid = 10, main = "Cgam Increasing Fit", sub = "Categorical Variable: Sex", categ = "sex") plotpersp(fit.s, age, height, x_grid = 10, y_grid = 10, main = "Cgam Smooth Increasing Fit", sub = "Categorical Variable: Smoke", categ = "smoke") # Example 2. data(plasma) # extract the variables y <- plasma$logplasma bmi <- plasma$bmi logdietfat <- plasma$logdietfat cholest <- plasma$cholest fiber <- plasma$fiber betacaro <- plasma$betacaro retinol <- plasma$retinol smoke <- plasma$smoke vituse <- plasma$vituse fit <- cgam(y ~ s.decr(bmi) + s.decr(logdietfat) + s.decr(cholest) + s.incr(fiber) + s.incr(betacaro) + s.incr(retinol) + factor(smoke) + factor(vituse)) plotpersp(fit, bmi, logdietfat, x_grid = 10, y_grid = 10, th = 120, ylab = "log(dietfat)", zlab = "est mean of log(plasma)", main = "Cgam Fit with the Plasma Data Set", sub = "Categorical Variable: Vitamin Use", categ = "vituse") # Example 3. data(plasma) addl <- 1:314*0 + 1 addl[runif(314) < .3] <- 2 addl[runif(314) > .8] <- 4 addl[runif(314) > .8] <- 3 ans <- cgam(logplasma ~ s.incr(betacaro, 5) + s.decr(bmi) + s.decr(logdietfat) + as.factor(addl), data = plasma) plotpersp(ans, betacaro, logdietfat, th = 240, random = TRUE, categ = "addl", data = plasma) # Example 4. n <- 100 set.seed(123) x1 <- sort(runif(n)) x2 <- sort(runif(n)) y <- 4 * (x1 - x2) + rnorm(n, sd = .5) # regress y on x1 and x2 under the shape-restriction: "decreasing-increasing" # with a penalty term = .1 ans <- wps(y ~ di(x1, x2), pen = .1) # plot the constrained surface plotpersp(ans, surface = "C") # plot the unconstrained surface plotpersp(ans, surface = "U", th = 120)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.