geom_hdr | R Documentation |
Perform 2D density estimation, compute and plot the resulting highest density regions.
geom_hdr()
draws filled regions and geom_hdr_lines()
draws lines outlining the regions.
Note, the plotted objects have probabilities mapped to the alpha
aesthetic by default.
stat_hdr( mapping = NULL, data = NULL, geom = "hdr", position = "identity", ..., method = "kde", probs = c(0.99, 0.95, 0.8, 0.5), n = 100, xlim = NULL, ylim = NULL, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE ) geom_hdr( mapping = NULL, data = NULL, stat = "hdr", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
geom |
The geometric object to use to display the data, either as a
|
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
... |
Other arguments passed on to |
method |
Density estimator to use, accepts character vector:
|
probs |
Probabilities to compute highest density regions for. |
n |
Resolution of grid defined by |
xlim, ylim |
Range to compute and draw regions. If |
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
stat |
The statistical transformation to use on the data for this
layer, either as a |
geom_hdr()
and geom_hdr_lines()
understand the following aesthetics (required
aesthetics are in bold):
x
y
alpha
color
fill (only geom_hdr
)
group
linetype
linewidth
subgroup
The probability associated with the highest density region, specified
by probs
argument.
Scott, David W. Multivariate Density Estimation (2e), Wiley.
# Basic simulated data with bivariate normal data and various methods df <- data.frame(x = rnorm(1000), y = rnorm(1000)) p <- ggplot(df, aes(x, y)) + coord_equal() p + geom_hdr() p + geom_hdr(method = "mvnorm") p + geom_hdr(method = "freqpoly") # p + geom_hdr(method = "histogram") # Adding point layers on top to visually assess region estimates pts <- geom_point(size = .2, color = "red") p + geom_hdr() + pts p + geom_hdr(method = "mvnorm") + pts p + geom_hdr(method = "freqpoly") + pts # p + geom_hdr(method = "histogram") + pts # Highest density region boundary lines p + geom_hdr_lines() p + geom_hdr_lines(method = "mvnorm") p + geom_hdr_lines(method = "freqpoly") # p + geom_hdr_lines(method = "histogram") ## Not run: # 2+ groups - mapping other aesthetics in the geom rdata <- function(n, n_groups = 3, radius = 3) { list_of_dfs <- lapply(0:(n_groups-1), function(k) { mu <- c(cos(2*k*pi/n_groups), sin(2*k*pi/n_groups)) m <- MASS::mvrnorm(n, radius*mu, diag(2)) structure(data.frame(m, as.character(k)), names = c("x", "y", "c")) }) do.call("rbind", list_of_dfs) } dfc <- rdata(1000, n_groups = 5) pf <- ggplot(dfc, aes(x, y, fill = c)) + coord_equal() pf + geom_hdr() pf + geom_hdr(method = "mvnorm") pf + geom_hdr(method = "mvnorm", probs = .90, alpha = .5) pf + geom_hdr(method = "histogram") pf + geom_hdr(method = "freqpoly") pc <- ggplot(dfc, aes(x, y, color = c)) + coord_equal() + theme_minimal() + theme(panel.grid.minor = element_blank()) pc + geom_hdr_lines() pc + geom_hdr_lines(method = "mvnorm") # Data with boundaries ggplot(df, aes(x^2)) + geom_histogram(bins = 30) ggplot(df, aes(x^2)) + geom_histogram(bins = 30, boundary = 0) ggplot(df, aes(x^2, y^2)) + geom_hdr(method = "histogram") ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.