| StatHuber | R Documentation |
The Huber plot presents the projection pursuit index values of 2D data in each 1D
projection in polar coordinates, corresponding to each projection direction.
It offers a simpler illustration of more complex projection from
high-dimensional data to lower dimensions in projection pursuit. The
function prep_huber() calculates each component required for the Huber plot
(see details), which can then be supplied to various geom layers in ggplot2.
StatHuber
stat_huber(
mapping = NULL,
data = NULL,
geom = "path",
position = "identity",
...,
index.fun,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
geom_huber(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
index.fun,
ref.circle.color = NULL,
ref.circle.colour = NULL,
ref.circle.linetype = "dashed",
ref.circle.linewidth = NULL,
idx.max.color = NULL,
idx.max.colour = NULL,
idx.max.linetype = "dashed",
idx.max.linewidth = NULL,
idx.profile.color = NULL,
idx.profile.colour = NULL,
idx.profile.linetype = "solid",
idx.profile.linewidth = NULL,
proj.points.color = NULL,
proj.points.colour = NULL,
proj.points.stroke = NULL,
proj.points.alpha = NULL,
proj.points.size = NULL,
proj.points.shape = NULL,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE,
...
)
GeomHuber
prep_huber_best_proj(data, index_fun)
theme_huber(...)
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 for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
... |
Other arguments passed on to
|
index.fun, index_fun |
the projection pursuit index function, see examples |
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.
When using a
|
ref.circle.color, ref.circle.colour, ref.circle.linetype, ref.circle.linewidth |
Default aesthetics for the reference circle |
idx.max.color, idx.max.colour, idx.max.linetype, idx.max.linewidth |
Default aesthetics for the line indicating the best projection direction |
idx.profile.color, idx.profile.colour, idx.profile.linetype, idx.profile.linewidth |
Default aesthetics for the index profile line |
proj.points.color, proj.points.colour, proj.points.stroke, proj.points.alpha, proj.points.size, proj.points.shape |
Default aesthetics for the projected data points |
An object of class StatHuber (inherits from Stat, ggproto, gg) of length 3.
An object of class GeomHuber (inherits from Geom, ggproto, gg) of length 4.
the prep_huber() function calculates components required for
making the Huber plots. It returns a list including three elements:
idx_df data frame: the x/y coordinates of the index value, in polar coordinates. Used for plotting the index value at each projection direction, with the reference circle.
proj_df data frame: the best 1D projection. Used for plotting the 1D projection in histogram.
slope value: the slope to plot in the Huber plot to indicate the direction of the best 1D projection.
library(ggplot2)
library(tourr)
library(ash)
data(randu)
# simplify the randu data into 2D for illustration
randu_std <- as.data.frame(apply(randu, 2, function(x) (x-mean(x))/sd(x)))
randu_std$yz <- sqrt(35)/6*randu_std$y-randu_std$z/6
randu_df <- randu_std[c(1,4)]
# main example: Huber plot with geom_huber()
randu_df |>
ggplot() +
geom_huber(aes(x = x, y = yz), index.fun = norm_bin(nr = nrow(randu_df))) +
coord_fixed() +
theme_huber()
# compute the best projection data for histogram
randu_huber_best <- prep_huber_best_proj(
randu_df, index_fun = norm_bin(nr = nrow(randu_df))
)
randu_huber_best |>
ggplot() +
geom_histogram(aes(x = x), breaks = seq(-2.2, 2.4, 0.12)) +
xlab("") + ylab("") +
theme_bw() +
theme(axis.text.y = element_blank())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.