A combination of box and violin plots along with raw (unjittered) data points for within-subjects designs with statistical details included in the plot as a subtitle.

```
ggwithinstats(
data,
x,
y,
type = "parametric",
pairwise.comparisons = FALSE,
pairwise.display = "significant",
p.adjust.method = "holm",
effsize.type = "unbiased",
partial = TRUE,
bf.prior = 0.707,
bf.message = TRUE,
sphericity.correction = TRUE,
results.subtitle = TRUE,
xlab = NULL,
ylab = NULL,
caption = NULL,
title = NULL,
subtitle = NULL,
sample.size.label = TRUE,
k = 2,
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),
point.path = TRUE,
point.path.args = list(alpha = 0.5, linetype = "dashed"),
mean.path = TRUE,
mean.path.args = list(color = "red", size = 1, alpha = 0.5),
notch = FALSE,
notchwidth = 0.5,
outlier.tagging = FALSE,
outlier.label = NULL,
outlier.coef = 1.5,
outlier.label.args = list(),
outlier.point.args = list(),
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`

.

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`

).

sphericity.correction

Logical that decides whether to apply correction
to account for violation of sphericity in a repeated measures design ANOVA
(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

Labels for `x`

and `y`

axis variables. If `NULL`

(default),
variable names for `x`

and `y`

will be used.

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`

).

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

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

and
`ggrepel::geom_label_repel`

geoms involved mean value plotting.

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.

point.path, mean.path

Logical that decides whether individual data
points and means, respectively, should be connected using `geom_path`

. Both
default to `TRUE`

. Note that `point.path`

argument is relevant only when
there are two groups (i.e., in case of a *t*-test). In case of large number
of data points, it is advisable to set `point.path = FALSE`

as these lines
can overwhelm the plot.

mean.path.args, point.path.args

A list of additional aesthetic
arguments passed on to `geom_path`

connecting raw data points and mean
points.

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`

).

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.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.

outlier.point.args

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

and `ggrepel::geom_label_repel`

geoms
involved outlier value plotting.

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 more about how the effect size measures (for nonparametric tests) and
their confidence intervals are computed, see `?rcompanion::wilcoxonPairedR`

.

For independent measures designs, use `ggbetweenstats`

.

`grouped_ggbetweenstats`

, `ggbetweenstats`

,
`grouped_ggwithinstats`

```
# NOT RUN {
# setup
set.seed(123)
library(ggstatsplot)
# two groups (*t*-test)
ggstatsplot::ggwithinstats(
data = VR_dilemma,
x = modality,
y = score,
xlab = "Presentation modality",
ylab = "Proportion of utilitarian decisions"
)
# more than two groups (anova)
library(WRS2)
ggstatsplot::ggwithinstats(
data = as_tibble(WineTasting),
x = Wine,
y = Taste,
type = "np",
conf.level = 0.99,
pairwise.comparisons = TRUE,
outlier.tagging = TRUE,
outlier.label = Taster
)
# }
```

Run the code above in your browser using DataLab