| Type: | Package | 
| Title: | Chauvenet-Type Boxplot | 
| Version: | 1.0.0 | 
| Description: | Provides a modified boxplot with a new fence coefficient determined by Lin et al. (2025). The traditional fence coefficient k=1.5 in Tukey's boxplot is replaced by a coefficient based on Chauvenet's criterion, as described in their formula (9). The new boxplot can be implemented in 'base R' with function chau_boxplot(), and in 'ggplot2' with function geom_chau_boxplot(). | 
| Maintainer: | Tiejun Tong <tongt@hkbu.edu.hk> | 
| URL: | https://tiejuntong.github.io/ChauBoxplot/ | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| Imports: | ggplot2, stats | 
| Depends: | R (≥ 4.0.0) | 
| Suggests: | testthat (≥ 3.0.0) | 
| Config/testthat/edition: | 3 | 
| NeedsCompilation: | no | 
| Packaged: | 2025-05-17 10:08:53 UTC; TONGT | 
| Author: | Hongmei Lin [aut], Riquan Zhang [aut], Tiejun Tong [aut, cre] | 
| Repository: | CRAN | 
| Date/Publication: | 2025-05-21 08:40:06 UTC | 
ChauBoxplot: Chauvenet-type boxplot
Description
This package provides a modified boxplot with the new fence coefficient determined by Lin et al. (2025). Specifically, the fence coefficient k=1.5 in Tukey's boxplot has been replaced by the fence coefficient associated with Chauvenet's criterion in their formula (9). The Chauvenet-type boxplot can be implemented in base R with function chau_boxplot(), and in ggplot2 with function geom_chau_boxplot().
Author(s)
Maintainer: Tiejun Tong tongt@hkbu.edu.hk
Authors:
Hongmei Lin hmlin@suibe.edu.cn
Riquan Zhang rqzhang@suibe.edu.cn
References
Hongmei Lin, Riquan Zhang and Tiejun Tong (2025). When Tukey meets Chauvenet: a new boxplot criterion for outlier detection. Journal of Computational and Graphical Statistics, accepted.
See Also
Useful links:
Title: Chauvenet-type boxplot in base R
Description
This function can be operated the same way as boxplot() in base R, except that the fence coefficient k=1.5 in Tukey's boxplot is replaced by the fence coefficient associated with Chauvenet’s criterion. For details, please refer to formula (9) in Lin et al. (2025).
Usage
chau_boxplot(data, group_col = NULL, value_col = NULL, ...)
Arguments
data | 
 The data frame containing the data.  | 
group_col | 
 The column name for grouping data.  | 
value_col | 
 The column name for the values to plot.  | 
... | 
 Additional arguments passed to the plotting function.  | 
Value
A Chauvenet-type boxplot in base R.
References
Hongmei Lin, Riquan Zhang and Tiejun Tong (2025). When Tukey meets Chauvenet: a new boxplot criterion for outlier detection. Journal of Computational and Graphical Statistics, accepted.
Examples
# Example 1
chau_boxplot(c(rnorm(1000),5,6))
# Example 2
rate.senior <- c(4.96, 6.30, -5.38, 1.60, 7.24, 5.26, 2.55, 5.96, 3.96,
                 4.19, 1.88, 4.06, 4.75, 0, 0, 2.5, 2.87, 3.00)/100
chau_boxplot(rate.senior, notch=TRUE)
Title: Chauvenet-type boxplot in ggplot2
Description
This function can be operated the same way as geom_boxplot() in ggplot2, except that the fence coefficient k=1.5 in Tukey's boxplot is replaced by the fence coefficient associated with Chauvenet’s criterion. For details, please refer to formula (9) in Lin et al. (2025).
Usage
geom_chau_boxplot(
  mapping = NULL,
  data = NULL,
  geom = "boxplot",
  position = "dodge2",
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE,
  ...
)
Arguments
mapping | 
 Aesthetic mappings created by 'aes()'.  | 
data | 
 The data to be displayed in this layer.  | 
geom | 
 The geometric object to use for display.  | 
position | 
 The position adjustment.  | 
na.rm | 
 Logical. Should missing values be removed?  | 
show.legend | 
 Logical. Should this layer be included in the legends?  | 
inherit.aes | 
 If FALSE, overrides the default aesthetics.  | 
... | 
 Other arguments passed to the layer.  | 
Value
A ggplot2 layer with the Chauvenet-type boxplot.
References
Hongmei Lin, Riquan Zhang and Tiejun Tong (2025). When Tukey meets Chauvenet: a new boxplot criterion for outlier detection. Journal of Computational and Graphical Statistics, accepted.
Examples
# Example 1
library(ggplot2)
rate.senior <- c(4.96, 6.30, -5.38, 1.60, 7.24, 5.26, 2.55, 5.96, 3.96,
                 4.19, 1.88, 4.06, 4.75, 0, 0, 2.5, 2.87, 3.00)/100
year <- 2007:2024
data.senior <- data.frame(x=year, y=rate.senior)
C.boxplot.senior <-
  ggplot(data.senior, aes(y=rate.senior)) +
  geom_chau_boxplot(fill="purple",width=3) +
  theme(legend.position = "none") +
  scale_x_discrete(breaks = NULL) +
  ylim(-0.057,0.077) +
  theme(plot.margin = unit(c(0, 0, 0, 0), "inches")) +
  labs(title="C.boxplot", subtitle="Senior civil servants", x="", y="")
print(C.boxplot.senior)