View source: R/presence.absence.hist.R
presence.absence.hist | R Documentation |
Produces a histogram of predicted probabilities with each bar subdivided by observed values. presence.absence.hist
also includes an option to mark several types of optimal thresholds along each plot.
presence.absence.hist(DATA, which.model = 1, na.rm = FALSE, xlab = "predicted probability", ylab = "number of plots", main = NULL, model.names = NULL, color = NULL, N.bars = 20, truncate.tallest = FALSE, ylim = 1.25 * range(0, apply(counts, 2, sum)), opt.thresholds = NULL, threshold = 101, opt.methods = NULL, req.sens, req.spec, obs.prev = NULL, smoothing = 1, add.legend = TRUE, legend.text=c("present","absent"), legend.cex = 0.8, add.opt.legend = TRUE, opt.legend.text = NULL, opt.legend.cex = 0.7, pch = NULL, FPC, FNC)
DATA |
a matrix or dataframe of observed and predicted values where each row represents one plot and where columns are:
| |||||||||||||||||||||||||||||||||
which.model |
a number indicating which model from | |||||||||||||||||||||||||||||||||
na.rm |
a logical indicating whether missing values should be removed | |||||||||||||||||||||||||||||||||
xlab |
a title for the x axis | |||||||||||||||||||||||||||||||||
ylab |
a title for the y axis | |||||||||||||||||||||||||||||||||
main |
an overall title for the plot | |||||||||||||||||||||||||||||||||
model.names |
a vector of the names of each model included in | |||||||||||||||||||||||||||||||||
color |
colors for presence/absence. Defaults to Presence = dark gray, Absence = light gray. | |||||||||||||||||||||||||||||||||
N.bars |
number of bars in histogram | |||||||||||||||||||||||||||||||||
truncate.tallest |
a logical indicating if the tallest bar should be truncated to fit on plot | |||||||||||||||||||||||||||||||||
ylim |
limit for y axis. To allow room for legend box | |||||||||||||||||||||||||||||||||
opt.thresholds |
a logical indicating whether the optimal thresholds should be calculated and plotted, or a vector specifying thresholds to plot | |||||||||||||||||||||||||||||||||
threshold |
cutoff values between zero and one used for translating predicted probabilities into 0 /1 values, defaults to 0.5. It can be a single value between zero and one, a vector of values between zero and one, or a positive integer representing the number of evenly spaced thresholds to calculate. To get reasonably good optimizations, there should be a large number of thresholds. (Only used if | |||||||||||||||||||||||||||||||||
opt.methods |
what methods should be used to optimize thresholds. Argument can be given either as a vector of method names or method numbers. Possible values are:
| |||||||||||||||||||||||||||||||||
req.sens |
a value between zero and one giving the user defined required sensitivity. Only used if | |||||||||||||||||||||||||||||||||
req.spec |
a value between zero and one giving the user defined required sspecificity. Only used if | |||||||||||||||||||||||||||||||||
obs.prev |
observed prevalence for | |||||||||||||||||||||||||||||||||
smoothing |
smoothing factor for maximizing/minimizing. Only used if | |||||||||||||||||||||||||||||||||
add.legend |
a logical indicating if a legend for presence/absence should be added to plot | |||||||||||||||||||||||||||||||||
legend.text |
a two item vector of text for presence/absence legend. Defaults to "present" and "absent". | |||||||||||||||||||||||||||||||||
legend.cex |
cex for presence/absence legend | |||||||||||||||||||||||||||||||||
add.opt.legend |
logical indicating if a legend for optimal threshold criteria should be included on the plot | |||||||||||||||||||||||||||||||||
opt.legend.text |
a vector of text for optimimal threshold criteria legend. Defaults to text corresponding to 'opt.methods'. | |||||||||||||||||||||||||||||||||
opt.legend.cex |
cex for optimization criteria legend | |||||||||||||||||||||||||||||||||
pch |
plotting "character", i.e., symbol to use for the thresholds specified in | |||||||||||||||||||||||||||||||||
FPC |
False Positive Costs, or for C/B ratio C = 'net costs of treating nondiseased individuals'. | |||||||||||||||||||||||||||||||||
FNC |
False Negative Costs, or for C/B ratio B = 'net benefits of treating diseased individuals'. |
When examining a Presence/Absence histogram to evaluate model quality, a good model will produce a clear separation of 'present' and 'absent' with little overlap in any bars.
The truncate.tallest
argument is useful when one bar (often the bar for predicted probability of zero) is much larger than all the other bars. If truncate.tallest
= TRUE
, the tallest bar is truncated to slightly taller than the next highest bar, and the actual count is plotted above the bar. The truncated bar is also crosshatched to avoid confusion by making it more obviously different from the other bars.
if optimal.thresholds
= TRUE
the function will find optimal thresholds by several methods and plot them along the X axis. See optimal.thresholds for more details on the optimization methods, and on the arguments ReqSens
, ReqSpec
, obs.prev
, smoothing
, FPC
, and FNC
.
Note: if too many methods are included in opt.methods
, the graph will get very crowded.
creates a graphical plot
Elizabeth Freeman eafreeman@fs.fed.us
optimal.thresholds,presence.absence.summary
data(SIM3DATA) ### EXAMPLE 1 - Comparing three models ### par(mfrow=c(1,3)) for(i in 1:3){ presence.absence.hist( SIM3DATA, which.model=i, na.rm=TRUE, model.names=c("Model 1","Model 2","Model 3"), N.bars=10, truncate.tallest=FALSE, opt.thresholds=TRUE, opt.methods=c("Default","Sens=Spec","MaxKappa"))} ### EXAMPLE 2 - Effect of 'truncate.tallest' argument ### par(mfrow=c(1,2)) presence.absence.hist( SIM3DATA, which.model=1, model.names=c("Model 1","Model 2","Model 3"), N.bars=10, truncate.tallest=FALSE, main="truncate.tallest=FALSE") presence.absence.hist( SIM3DATA, which.model=1, model.names=c("Model 1","Model 2","Model 3"), N.bars=10, truncate.tallest=TRUE, main="truncate.tallest=TRUE")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.