A combination of box and violin plots along with jittered data points for between-subjects designs with statistical details included in the plot as a subtitle.

```
ggbetweenstats(
data,
x,
y,
plot.type = "boxviolin",
type = "parametric",
pairwise.comparisons = FALSE,
pairwise.display = "significant",
p.adjust.method = "holm",
effsize.type = "unbiased",
partial = TRUE,
bf.prior = 0.707,
bf.message = TRUE,
results.subtitle = TRUE,
xlab = NULL,
ylab = NULL,
caption = NULL,
title = NULL,
subtitle = NULL,
sample.size.label = TRUE,
k = 2,
var.equal = FALSE,
conf.level = 0.95,
nboot = 100,
tr = 0.1,
mean.plotting = TRUE,
mean.ci = FALSE,
mean.point.args = list(size = 5, color = "darkred"),
mean.label.args = list(size = 3),
notch = FALSE,
notchwidth = 0.5,
linetype = "solid",
outlier.tagging = FALSE,
outlier.label = NULL,
outlier.coef = 1.5,
outlier.shape = 19,
outlier.color = "black",
outlier.label.args = list(size = 3),
outlier.point.args = list(),
point.args = list(position = ggplot2::position_jitterdodge(dodge.width = 0.6), alpha
= 0.4, size = 3, stroke = 0),
violin.args = list(width = 0.5, alpha = 0.2),
ggtheme = ggplot2::theme_bw(),
ggstatsplot.layer = TRUE,
package = "RColorBrewer",
palette = "Dark2",
ggplot.component = NULL,
output = "plot",
messages = TRUE,
...
)
```

data

A dataframe (or a tibble) from which variables specified are to
be taken. A matrix or tables will **not** be accepted.

x

The grouping variable from the dataframe `data`

.

y

The response (a.k.a. outcome or dependent) variable from the
dataframe `data`

.

plot.type

Character describing the *type* of plot. Currently supported
plots are `"box"`

(for pure boxplots), `"violin"`

(for pure violin plots),
and `"boxviolin"`

(for a combination of box and violin plots; default).

type

Type of statistic expected (`"parametric"`

or `"nonparametric"`

or `"robust"`

or `"bayes"`

).Corresponding abbreviations are also accepted:
`"p"`

(for parametric), `"np"`

(nonparametric), `"r"`

(robust), or
`"bf"`

resp.

pairwise.comparisons

Logical that decides whether pairwise comparisons
are to be displayed (default: `FALSE`

). Please note that only
**significant** comparisons will be shown by default. To change this
behavior, select appropriate option with `pairwise.display`

argument. The
pairwise comparison dataframes are prepared using the
`pairwiseComparisons::pairwise_comparisons`

function. For more details
about pairwise comparisons, see the documentation for that function.

pairwise.display

Decides which pairwise comparisons to display.
Available options are `"significant"`

(abbreviation accepted: `"s"`

) or
`"non-significant"`

(abbreviation accepted: `"ns"`

) or
`"everything"`

/`"all"`

. The default is `"significant"`

. You can use this
argument to make sure that your plot is not uber-cluttered when you have
multiple groups being compared and scores of pairwise comparisons being
displayed.

p.adjust.method

Adjustment method for *p*-values for multiple
comparisons. Possible methods are: `"holm"`

(default), `"hochberg"`

,
`"hommel"`

, `"bonferroni"`

, `"BH"`

, `"BY"`

, `"fdr"`

, `"none"`

.

effsize.type

Type of effect size needed for *parametric* tests. The
argument can be `"biased"`

(equivalent to `"d"`

for Cohen's *d* for
**t-test**; `"partial_eta"`

for partial eta-squared for **anova**) or
`"unbiased"`

(equivalent to `"g"`

Hedge's *g* for **t-test**;
`"partial_omega"`

for partial omega-squared for **anova**)).

partial

If `TRUE`

, return partial indices.

bf.prior

A number between `0.5`

and `2`

(default `0.707`

), the prior
width to use in calculating Bayes factors.

bf.message

Logical that decides whether to display Bayes Factor in
favor of the *null* hypothesis. This argument is relevant only **for
parametric test** (Default: `TRUE`

).

results.subtitle

Decides whether the results of statistical tests are
to be displayed as a subtitle (Default: `TRUE`

). If set to `FALSE`

, only
the plot will be returned.

xlab, ylab

Labels for `x`

and `y`

axis variables. If `NULL`

(default),
variable names for `x`

and `y`

will be used.

caption

The text for the plot caption.

title

The text for the plot title.

subtitle

The text for the plot subtitle. Will work only if
`results.subtitle = FALSE`

.

sample.size.label

Logical that decides whether sample size information
should be displayed for each level of the grouping variable `x`

(Default:
`TRUE`

).

k

Number of digits after decimal point (should be an integer)
(Default: `k = 2`

).

var.equal

a logical variable indicating whether to treat the
variances in the samples as equal. If `TRUE`

, then a simple F
test for the equality of means in a one-way analysis of variance is
performed. If `FALSE`

, an approximate method of Welch (1951)
is used, which generalizes the commonly known 2-sample Welch test to
the case of arbitrarily many samples.

conf.level

Scalar between 0 and 1. If unspecified, the defaults return
`95%`

lower and upper confidence intervals (`0.95`

).

nboot

Number of bootstrap samples for computing confidence interval
for the effect size (Default: `100`

).

tr

Trim level for the mean when carrying out `robust`

tests. If you
get error stating "Standard error cannot be computed because of Winsorized
variance of 0 (e.g., due to ties). Try to decrease the trimming level.",
try to play around with the value of `tr`

, which is by default set to
`0.1`

. Lowering the value might help.

mean.plotting

Logical that decides whether mean is to be highlighted
and its value to be displayed (Default: `TRUE`

).

mean.ci

Logical that decides whether `95%`

confidence interval for
mean is to be displayed (Default: `FALSE`

).

mean.point.args, mean.label.args

A list of additional aesthetic
arguments to be passed to `ggplot2::geom_point`

and
`ggrepel::geom_label_repel`

geoms involved mean value plotting.

notch

A logical. If `FALSE`

(default), a standard box plot will be
displayed. If `TRUE`

, a notched box plot will be used. Notches are used to
compare groups; if the notches of two boxes do not overlap, this suggests
that the medians are significantly different. In a notched box plot, the
notches extend `1.58 * IQR / sqrt(n)`

. This gives a roughly `95%`

confidence interval for comparing medians. IQR: Inter-Quartile Range.

notchwidth

For a notched box plot, width of the notch relative to the
body (default `0.5`

).

linetype

Character strings (`"blank"`

, `"solid"`

, `"dashed"`

,
`"dotted"`

, `"dotdash"`

, `"longdash"`

, and `"twodash"`

) specifying the type
of line to draw box plots (Default: `"solid"`

). Alternatively, the numbers
`0`

to `6`

can be used (`0`

for "blank", `1`

for "solid", etc.).

outlier.tagging

Decides whether outliers should be tagged (Default:
`FALSE`

).

outlier.label

Label to put on the outliers that have been tagged. This
**can't** be the same as `x`

argument.

outlier.coef

Coefficient for outlier detection using Tukey's method.
With Tukey's method, outliers are below (1st Quartile) or above (3rd
Quartile) `outlier.coef`

times the Inter-Quartile Range (IQR) (Default:
`1.5`

).

outlier.shape

Hiding the outliers can be achieved by setting
`outlier.shape = NA`

. Importantly, this does not remove the outliers,
it only hides them, so the range calculated for the `y`

-axis will be
the same with outliers shown and outliers hidden.

outlier.color

Default aesthetics for outliers (Default: `"black"`

).

outlier.point.args, outlier.label.args

A list of additional aesthetic arguments to be
passed to `ggplot2::geom_point`

and `ggrepel::geom_label_repel`

geoms
involved outlier value plotting.

point.args

A list of additional aesthetic arguments to be passed to
the `geom_point`

displaying the raw data.

violin.args

A list of additional aesthetic arguments to be passed to
the `geom_violin`

.

ggtheme

A function, `ggplot2`

theme name. Default value is
`ggplot2::theme_bw()`

. Any of the `ggplot2`

themes, or themes from
extension packages are allowed (e.g., `ggthemes::theme_fivethirtyeight()`

,
`hrbrthemes::theme_ipsum_ps()`

, etc.).

ggstatsplot.layer

Logical that decides whether `theme_ggstatsplot`

theme elements are to be displayed along with the selected `ggtheme`

(Default: `TRUE`

). `theme_ggstatsplot`

is an opinionated theme layer that
override some aspects of the selected `ggtheme`

.

package

Name of package from which the palette is desired as string or symbol.

palette

Name of palette as string or symbol.

ggplot.component

A `ggplot`

component to be added to the plot prepared
by `ggstatsplot`

. This argument is primarily helpful for `grouped_`

variant
of the current function. Default is `NULL`

. The argument should be entered
as a function.

output

Character that describes what is to be returned: can be
`"plot"`

(default) or `"subtitle"`

or `"caption"`

. Setting this to
`"subtitle"`

will return the expression containing statistical results. If
you have set `results.subtitle = FALSE`

, then this will return a `NULL`

.
Setting this to `"caption"`

will return the expression containing details
about Bayes Factor analysis, but valid only when `type = "parametric"`

and
`bf.message = TRUE`

, otherwise this will return a `NULL`

. For functions
`ggpiestats`

and `ggbarstats`

, setting `output = "proptest"`

will return a
dataframe containing results from proportion tests.

messages

Decides whether messages references, notes, and warnings are
to be displayed (Default: `TRUE`

).

...

Currently ignored.

For parametric tests, Welch's ANOVA/*t*-test are used as a default (i.e.,
`var.equal = FALSE`

).
References:

ANOVA: Delacre, Leys, Mora, & Lakens,

*PsyArXiv*, 2018*t*-test: Delacre, Lakens, & Leys,*International Review of Social Psychology*, 2017

If robust tests are selected, following tests are used is .

ANOVA: one-way ANOVA on trimmed means (see

`?WRS2::t1way`

)*t*-test: Yuen's test for trimmed means (see`?WRS2::yuen`

)

For more about how the effect size measures (for nonparametric tests) and
their confidence intervals are computed, see `?rcompanion::wilcoxonR`

.

For repeated measures designs, use `ggwithinstats`

.

https://indrajeetpatil.github.io/ggstatsplot/articles/web_only/ggbetweenstats.html

`grouped_ggbetweenstats`

, `ggwithinstats`

,
`grouped_ggwithinstats`

```
# NOT RUN {
# to get reproducible results from bootstrapping
set.seed(123)
library(ggstatsplot)
# simple function call with the defaults
ggstatsplot::ggbetweenstats(
data = mtcars,
x = am,
y = mpg,
title = "Fuel efficiency by type of car transmission",
caption = "Transmission (0 = automatic, 1 = manual)"
)
# more detailed function call
ggstatsplot::ggbetweenstats(
data = datasets::morley,
x = Expt,
y = Speed,
type = "nonparametric",
plot.type = "box",
conf.level = 0.99,
xlab = "The experiment number",
ylab = "Speed-of-light measurement",
pairwise.comparisons = TRUE,
p.adjust.method = "fdr",
outlier.tagging = TRUE,
outlier.label = Run,
nboot = 10,
ggtheme = ggplot2::theme_grey(),
ggstatsplot.layer = FALSE
)
# }
```

Run the code above in your browser using DataLab