model.interaction.plot {ModelMap} | R Documentation |
plot of two-way model interactions
Description
Image or Perspective plot of two-way model interactions. Ranges of two specified predictor variables are plotted on X and Y axis, and fitted model values are plotted on the Z axis. The remaining predictor variables are fixed at their mean (for continuous predictors) or their most common value (for categorical predictors).
Usage
model.interaction.plot(model.obj = NULL, x = NULL, y = NULL,
response.category=NULL, quantiles=NULL, all=FALSE, obs=1, qdata.trainfn = NULL,
folder = NULL, MODELfn = NULL, PLOTfn = NULL, pred.means = NULL,
xlab = NULL, ylab = NULL, x.range = NULL, y.range = NULL,
z.range = NULL, ticktype = "detailed", theta = 55, phi = 40,
smooth = "none", plot.type = NULL, device.type = NULL,
res=NULL, jpeg.res = 72, device.width = 7, device.height = 7,
units="in", pointsize=12, cex=par()$cex,
col = NULL, xlim = NULL, ylim = NULL, zlim = NULL, ...)
Arguments
model.obj |
| ||||||||||||||||||||||||||||||
x |
String or Integer. Name of predictor variable to be plotted on the x axis. Alternativly, can be a number indicating a variable name from | ||||||||||||||||||||||||||||||
y |
String or Integer. Name of predictor variable to be plotted on the y axis. Alternatively, can be a number indicating a variable name from | ||||||||||||||||||||||||||||||
response.category |
String. Used for categorical response models. Specify which category of response variable to use. This category's probabilities will be plotted on the z axis. | ||||||||||||||||||||||||||||||
quantiles |
Numeric. Used for QRF models. Specify which quantile of response variable to use. This quantile will be plotted on the z axis. Note: unlike other functions | ||||||||||||||||||||||||||||||
all |
Logical. Used for QRF models. A logical value. | ||||||||||||||||||||||||||||||
obs |
Numeric. Used for QRF models. An integer number. Determines the maximal number of observations per node to use for prediction. The input is ignored for all=TRUE. The default is obs=1. | ||||||||||||||||||||||||||||||
qdata.trainfn |
String. The name (full path or base name with path specified by | ||||||||||||||||||||||||||||||
folder |
String. The folder used for all output. Do not add ending slash to path string. If | ||||||||||||||||||||||||||||||
MODELfn |
String. The file name used to save the generated model object, only used if | ||||||||||||||||||||||||||||||
PLOTfn |
String. The file name to use to save the generated graphical plots. The filename can be the full path, or it can be the simple basename, in which case the output will be to the folder specified by | ||||||||||||||||||||||||||||||
pred.means |
Vector. Allows specification of values for other predictor variables. If Null, other predictors are set to their mean value (for continuous predictors) or their most common value (for factored predictors). | ||||||||||||||||||||||||||||||
xlab |
String. Allows manual specification of the x label. | ||||||||||||||||||||||||||||||
ylab |
String. Allows manual specification of the y label. | ||||||||||||||||||||||||||||||
x.range |
Vector. Manual range specification for the x axis. Alternate argument name for | ||||||||||||||||||||||||||||||
y.range |
Vector. Manual range specification for the y axis. Alternate argument name for | ||||||||||||||||||||||||||||||
z.range |
Vector. Manual range specification for the z axis. Alternate argument name for | ||||||||||||||||||||||||||||||
ticktype |
Character: "simple" draws just an arrow parallel to the axis to indicate direction of increase; "detailed" (default) draws normal ticks as per 2D plots. If | ||||||||||||||||||||||||||||||
theta |
Numeric. Angles defining the viewing direction. | ||||||||||||||||||||||||||||||
phi |
Numeric. Angles defining the viewing direction. | ||||||||||||||||||||||||||||||
smooth |
String. controls smoothing of the predicted surface. Options are | ||||||||||||||||||||||||||||||
plot.type |
Character. | ||||||||||||||||||||||||||||||
device.type |
String or vector of strings. Model validation. One or more device types for graphical output from model validation diagnostics. Current choices:
| ||||||||||||||||||||||||||||||
res |
Integer. Model validation. Pixels per inch for jpeg, png, and tiff plots. The default is 72dpi, good for on screen viewing. For printing, suggested setting is 300dpi. | ||||||||||||||||||||||||||||||
jpeg.res |
Integer. Model validation. Deprecated. Ignored unless | ||||||||||||||||||||||||||||||
device.width |
Integer. Model validation. The device width for diagnostic plots in inches. | ||||||||||||||||||||||||||||||
device.height |
Integer. Model validation. The device height for diagnostic plots in inches. | ||||||||||||||||||||||||||||||
units |
Model validation. The units in which | ||||||||||||||||||||||||||||||
pointsize |
Integer. Model validation. The default pointsize of plotted text, interpreted as big points (1/72 inch) at | ||||||||||||||||||||||||||||||
cex |
Integer. Model validation. The cex for diagnostic plots. | ||||||||||||||||||||||||||||||
col |
Vector. Color table to use for image plots ( see help file on image for details). | ||||||||||||||||||||||||||||||
xlim |
Vector. X limits. Alternate argument name for | ||||||||||||||||||||||||||||||
ylim |
Vector. Y limits. Alternate argument name for | ||||||||||||||||||||||||||||||
zlim |
Vector. Z limits. Alternate argument name for | ||||||||||||||||||||||||||||||
... |
additional graphical parameters (see |
Details
This function provides a diagnostic plot useful in visualizing two-way interactions between predictor variables. Two of the predictor variables from the model are used to produce a grid of possible combinations of predictor values over the range of both variables. The remaining predictor variables from the model are fixed at either their means (for continuous predictors) or their most common value (for categorical predictors). Model predictions are generated over this grid and plotted as the z axis.
This function works with both continuous and categorical predictors, though the perspective plot should be interpreted with care for categorical predictors. In particular, the smooth
option is not appropriate if either of the two selected predictor variables is categorical.
For categorical response models, a particular value must be specified for the response using the response.category
argument.
Author(s)
Elizabeth Freeman
References
This function is adapted from gbm.perspec
version 2.9 April 2007, J Leathwick/J Elith. See appendix S3 from:
Elith, J., Leathwick, J. R. and Hastie, T. (2008). A working guide to boosted regression trees. Journal of Animal Ecology. 77:802-813.
Examples
## Not run:
###########################################################################
############################# Run this set up code: #######################
###########################################################################
# set seed:
seed=38
# Define training and test files:
qdata.trainfn = system.file("extdata", "helpexamples","DATATRAIN.csv", package = "ModelMap")
qdata.testfn = system.file("extdata", "helpexamples","DATATEST.csv", package = "ModelMap")
# Define folder for all output:
folder=getwd()
########## Continuous Response, Categorical Predictors ############
#file name to store model:
MODELfn="RF_BIO_TCandNLCD"
#predictors:
predList=c("TCB","TCG","TCW","NLCD")
#define which predictors are categorical:
predFactor=c("NLCD")
# Response name and type:
response.name="BIO"
response.type="continuous"
#identifier for individual training and test data points
unique.rowname="ID"
###########################################################################
########################### build model: ##################################
###########################################################################
### create model ###
model.obj = model.build( model.type="RF",
qdata.trainfn=qdata.trainfn,
folder=folder,
unique.rowname=unique.rowname,
MODELfn=MODELfn,
predList=predList,
predFactor=predFactor,
response.name=response.name,
response.type=response.type,
seed=seed,
na.action=na.roughfix
)
###########################################################################
###################### make interaction plots: ############################
###########################################################################
#########################
### Perspective Plots ###
#########################
### specify first and third predictors in 'predList (both continuous) ###
model.interaction.plot( model.obj,
x=1,y=3,
main=response.name,
plot.type="persp",
device.type="default")
### specify predictors in 'predList' by name (one continuous one factored) ###
model.interaction.plot(model.obj,
x="TCB", y="NLCD",
main=response.name,
plot.type="persp",
device.type="default")
###################
### Image Plots ###
###################
### same as previous example, but image plot ###
l <- seq(100,0,length.out=101)
c <- seq(0,100,length.out=101)
col.ramp <- hcl(h = 120, c = c, l = l)
model.interaction.plot( model.obj,
x="TCB", y="NLCD",
main=response.name,
plot.type="image",
device.type="default",
col = col.ramp)
#########################
### 3-way Interaction ###
#########################
### use 'pred.means' argument to fix values of additional predictors ###
### factored 3rd predictor ###
interaction between TCG and TCW for 3 most common values of NLCD
nlcd<-levels(model.obj$predictor.data$NLCD)
nlcd.counts<-table(model.obj$predictor.data$NLCD)
nlcd.ordered<-nlcd[order(nlcd.counts,decreasing=TRUE)]
for(i in nlcd.ordered[1:3]){
pred.means=list(NLCD=i)
model.interaction.plot( model.obj,
x="TCG", y="TCW",
main=paste("NLCD=",i," (",nlcd.counts[i]," plots)", sep=""),
pred.means=pred.means,
z.range=c(0,110),
theta=290,
plot.type="persp",
device.type="default")
}
### continuos 3rd predictor ###
tcb<-seq( min(model.obj$predictor.data$TCB),
max(model.obj$predictor.data$TCB),
length=3)
tcb<-signif(tcb,2)
for(i in tcb){
pred.means=list(TCB=i)
model.interaction.plot( model.obj,
x="TCG", y="TCW",
main=paste("TCB =",i),
pred.means=pred.means,
z.range=c(0,120),
theta=290,
plot.type="persp",
device.type="default")
}
### 4-way Interesting combos ###
tcb=c(1300,2900,3400)
nlcd=c(11,90,95)
for(i in 1:3){
pred.means=list(TCB=tcb[i],NLCD=nlcd[i])
model.interaction.plot( model.obj,
x="TCG", y="TCW",
main=paste("TCB =",tcb[i]," NLCD =",nlcd[i]),
pred.means=pred.means,
z.range=c(0,120),
theta=290,
plot.type="persp",
device.type="default")
}
## End(Not run) #end dontrun