Movatterモバイル変換


[0]ホーム

URL:


Skip to contents

Box/Violin plots for repeated measures comparisons

Source:R/ggwithinstats.R
ggwithinstats.Rd

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

Usage

ggwithinstats(data,x,y,  type="parametric",  pairwise.display="significant",  p.adjust.method="holm",  effsize.type="unbiased",  bf.prior=0.707,  bf.message=TRUE,  results.subtitle=TRUE,  xlab=NULL,  ylab=NULL,  caption=NULL,  title=NULL,  subtitle=NULL,  digits=2L,  conf.level=0.95,  nboot=100L,  tr=0.2,  centrality.plotting=TRUE,  centrality.type=type,  centrality.point.args=list(size=5, color="darkred"),  centrality.label.args=list(size=3, nudge_x=0.4, segment.linetype=4),  centrality.path=TRUE,  centrality.path.args=list(linewidth=1, color="red", alpha=0.5),  point.args=list(size=3, alpha=0.5, na.rm=TRUE),  point.path=TRUE,  point.path.args=list(alpha=0.5, linetype="dashed"),  boxplot.args=list(width=0.2, alpha=0.5, na.rm=TRUE),  violin.args=list(width=0.5, alpha=0.2, na.rm=TRUE),  ggsignif.args=list(textsize=3, tip_length=0.01, na.rm=TRUE),  ggtheme=ggstatsplot::theme_ggstatsplot(),  package="RColorBrewer",  palette="Dark2",  ggplot.component=NULL,...)

Arguments

data

A data frame (or a tibble) from which variables specified are tobe taken. Other data types (e.g., matrix,table, array, etc.) willnotbe accepted. Additionally, grouped data frames from{dplyr} should beungrouped before they are entered asdata.

x

The grouping (or independent) variable fromdata. In case of arepeated measures or within-subjects design, ifsubject.id argument isnot available or not explicitly specified, the function assumes that thedata has already been sorted by such an id by the user and creates aninternal identifier. So if your data isnot sorted, the resultscanbe inaccurate when there are more than two levels inx and there areNAs present. The data is expected to be sorted by user insubject-1, subject-2, ..., pattern.

y

The response (or outcome or dependent) variable fromdata.

type

A character specifying the type of statistical approach:

  • "parametric"

  • "nonparametric"

  • "robust"

  • "bayes"

You can specify just the initial letter.

pairwise.display

Decideswhich pairwise comparisons to display.Available options are:

  • "significant" (abbreviation accepted:"s")

  • "non-significant" (abbreviation accepted:"ns")

  • "all"

You can use this argument to make sure that your plot is not uber-clutteredwhen you have multiple groups being compared and scores of pairwisecomparisons being displayed. If set to"none", no pairwise comparisonswill be displayed.

p.adjust.method

Adjustment method forp-values for multiplecomparisons. Possible methods are:"holm" (default),"hochberg","hommel","bonferroni","BH","BY","fdr","none".

effsize.type

Type of effect size needed forparametric tests. Theargument can be"eta" (partial eta-squared) or"omega" (partialomega-squared).

bf.prior

A number between0.5 and2 (default0.707), the priorwidth to use in calculating Bayes factors and posterior estimates. Inaddition to numeric arguments, several named values are also recognized:"medium","wide", and"ultrawide", corresponding tor scale valuesof1/2,sqrt(2)/2, and1, respectively. In case of an ANOVA, thisvalue corresponds to scale for fixed effects.

bf.message

Logical that decides whether to display Bayes Factor infavor of thenull hypothesis. This argument is relevant onlyforparametric test (Default:TRUE).

results.subtitle

Decides whether the results of statistical tests areto be displayed as a subtitle (Default:TRUE). If set toFALSE, onlythe plot will be returned.

xlab

Label forx axis variable. IfNULL (default),variable name forx will be used.

ylab

Labels fory axis variable. IfNULL (default),variable name fory will be used.

caption

The text for the plot caption. This argument is relevant onlyifbf.message = FALSE.

title

The text for the plot title.

subtitle

The text for the plot subtitle. Will work only ifresults.subtitle = FALSE.

digits

Number of digits for rounding or significant figures. May alsobe"signif" to return significant figures or"scientific"to return scientific notation. Control the number of digits by adding thevalue as suffix, e.g.digits = "scientific4" to have scientificnotation with 4 decimal places, ordigits = "signif5" for 5significant figures (see alsosignif()).

conf.level

Scalar between0 and1 (default:95%confidence/credible intervals,0.95). IfNULL, no confidence intervalswill be computed.

nboot

Number of bootstrap samples for computing confidence intervalfor the effect size (Default:100L).

tr

Trim level for the mean when carrying outrobust tests. In caseof an error, try reducing the value oftr, which is by default set to0.2. Lowering the value might help.

centrality.plotting

Logical that decides whether centrality tendencymeasure is to be displayed as a point with a label (Default:TRUE).Function decides which central tendency measure to show depending on thetype argument.

  • mean for parametric statistics

  • median for non-parametric statistics

  • trimmed mean for robust statistics

  • MAP estimator for Bayesian statistics

If you want default centrality parameter, you can specify this usingcentrality.type argument.

centrality.type

Decides which centrality parameter is to be displayed.The default is to choose the same astype argument. You can specify thisto be:

  • "parameteric" (formean)

  • "nonparametric" (formedian)

  • robust (fortrimmed mean)

  • bayes (forMAP estimator)

Just astype argument, abbreviations are also accepted.

centrality.point.args, centrality.label.args

A list of additional aestheticarguments to be passed toggplot2::geom_point() andggrepel::geom_label_repel() geoms, which are involved in mean plotting.

centrality.path.args, point.path.args

A list of additional aestheticarguments passed on toggplot2::geom_path() connecting raw data pointsand mean points.

point.args

A list of additional aesthetic arguments to be passed totheggplot2::geom_point().

point.path, centrality.path

Logical that decides whether individualdata points and means, respectively, should be connected usingggplot2::geom_path(). Both default toTRUE. Note thatpoint.pathargument is relevant only when there are two groups (i.e., in case of at-test). In case of large number of data points, it is advisable to setpoint.path = FALSE as these lines can overwhelm the plot.

boxplot.args

A list of additional aesthetic arguments passed on toggplot2::geom_boxplot().

violin.args

A list of additional aesthetic arguments to be passed totheggplot2::geom_violin().

ggsignif.args

A list of additional aestheticarguments to be passed toggsignif::geom_signif().

ggtheme

A{ggplot2} theme. Default value istheme_ggstatsplot(). Any of the{ggplot2} themes (e.g.,ggplot2::theme_bw()), or themes from extension packages are allowed(e.g.,ggthemes::theme_fivethirtyeight(),hrbrthemes::theme_ipsum_ps(),etc.). But note that sometimes these themes will remove some of the detailsthat{ggstatsplot} plots typically contains. For example, if relevant,ggbetweenstats() shows details about multiple comparison test as alabel on the secondary Y-axis. Some themes (e.g.ggthemes::theme_fivethirtyeight()) will remove the secondary Y-axis andthus the details as well.

package, palette

Name of the package from which the given palette is tobe extracted. The available palettes and packages can be checked by runningView(paletteer::palettes_d_names).

ggplot.component

Aggplot component to be added to the plot preparedby{ggstatsplot}. This argument is primarily helpful forgrouped_variants of all primary functions. Default isNULL. The argument shouldbe entered as a{ggplot2} function or a list of{ggplot2} functions.

...

Currently ignored.

Details

For details, see:https://indrajeetpatil.github.io/ggstatsplot/articles/web_only/ggwithinstats.html

Summary of graphics

graphical elementgeom usedargument for further modification
raw dataggplot2::geom_point()point.args
point pathggplot2::geom_path()point.path.args
box plotggplot2::geom_boxplot()boxplot.args
density plotggplot2::geom_violin()violin.args
centrality measure pointggplot2::geom_point()centrality.point.args
centrality measure point pathggplot2::geom_path()centrality.path.args
centrality measure labelggrepel::geom_label_repel()centrality.label.args
pairwise comparisonsggsignif::geom_signif()ggsignif.args

Centrality measures

The table below provides summary about:

  • statistical test carried out for inferential statistics

  • type of effect size estimate and a measure of uncertainty for this estimate

  • functions used internally to compute these details

TypeMeasureFunction used
Parametricmeandatawizard::describe_distribution()
Non-parametricmediandatawizard::describe_distribution()
Robusttrimmed meandatawizard::describe_distribution()
BayesianMAPdatawizard::describe_distribution()

Two-sample tests

The table below provides summary about:

  • statistical test carried out for inferential statistics

  • type of effect size estimate and a measure of uncertainty for this estimate

  • functions used internally to compute these details

between-subjects

Hypothesis testing

TypeNo. of groupsTestFunction used
Parametric2Student's or Welch'st-teststats::t.test()
Non-parametric2Mann-WhitneyU teststats::wilcox.test()
Robust2Yuen's test for trimmed meansWRS2::yuen()
Bayesian2Student'st-testBayesFactor::ttestBF()

Effect size estimation

TypeNo. of groupsEffect sizeCI available?Function used
Parametric2Cohen'sd, Hedge'sgYeseffectsize::cohens_d(),effectsize::hedges_g()
Non-parametric2r (rank-biserial correlation)Yeseffectsize::rank_biserial()
Robust2Algina-Keselman-Penfield robust standardized differenceYesWRS2::akp.effect()
Bayesian2differenceYesbayestestR::describe_posterior()

within-subjects

Hypothesis testing

TypeNo. of groupsTestFunction used
Parametric2Student'st-teststats::t.test()
Non-parametric2Wilcoxon signed-rank teststats::wilcox.test()
Robust2Yuen's test on trimmed means for dependent samplesWRS2::yuend()
Bayesian2Student'st-testBayesFactor::ttestBF()

Effect size estimation

TypeNo. of groupsEffect sizeCI available?Function used
Parametric2Cohen'sd, Hedge'sgYeseffectsize::cohens_d(),effectsize::hedges_g()
Non-parametric2r (rank-biserial correlation)Yeseffectsize::rank_biserial()
Robust2Algina-Keselman-Penfield robust standardized differenceYesWRS2::wmcpAKP()
Bayesian2differenceYesbayestestR::describe_posterior()

One-way ANOVA

The table below provides summary about:

  • statistical test carried out for inferential statistics

  • type of effect size estimate and a measure of uncertainty for this estimate

  • functions used internally to compute these details

between-subjects

Hypothesis testing

TypeNo. of groupsTestFunction used
Parametric> 2Fisher's or Welch's one-way ANOVAstats::oneway.test()
Non-parametric> 2Kruskal-Wallis one-way ANOVAstats::kruskal.test()
Robust> 2Heteroscedastic one-way ANOVA for trimmed meansWRS2::t1way()
Bayes Factor> 2Fisher's ANOVABayesFactor::anovaBF()

Effect size estimation

TypeNo. of groupsEffect sizeCI available?Function used
Parametric> 2partial eta-squared, partial omega-squaredYeseffectsize::omega_squared(),effectsize::eta_squared()
Non-parametric> 2rank epsilon squaredYeseffectsize::rank_epsilon_squared()
Robust> 2Explanatory measure of effect sizeYesWRS2::t1way()
Bayes Factor> 2Bayesian R-squaredYesperformance::r2_bayes()

within-subjects

Hypothesis testing

TypeNo. of groupsTestFunction used
Parametric> 2One-way repeated measures ANOVAafex::aov_ez()
Non-parametric> 2Friedman rank sum teststats::friedman.test()
Robust> 2Heteroscedastic one-way repeated measures ANOVA for trimmed meansWRS2::rmanova()
Bayes Factor> 2One-way repeated measures ANOVABayesFactor::anovaBF()

Effect size estimation

TypeNo. of groupsEffect sizeCI available?Function used
Parametric> 2partial eta-squared, partial omega-squaredYeseffectsize::omega_squared(),effectsize::eta_squared()
Non-parametric> 2Kendall's coefficient of concordanceYeseffectsize::kendalls_w()
Robust> 2Algina-Keselman-Penfield robust standardized difference averageYesWRS2::wmcpAKP()
Bayes Factor> 2Bayesian R-squaredYesperformance::r2_bayes()

Pairwise comparison tests

The table below provides summary about:

  • statistical test carried out for inferential statistics

  • type of effect size estimate and a measure of uncertainty for this estimate

  • functions used internally to compute these details

between-subjects

Hypothesis testing

TypeEqual variance?Testp-value adjustment?Function used
ParametricNoGames-Howell testYesPMCMRplus::gamesHowellTest()
ParametricYesStudent'st-testYesstats::pairwise.t.test()
Non-parametricNoDunn testYesPMCMRplus::kwAllPairsDunnTest()
RobustNoYuen's trimmed means testYesWRS2::lincon()
BayesianNAStudent'st-testNABayesFactor::ttestBF()

Effect size estimation

Not supported.

within-subjects

Hypothesis testing

TypeTestp-value adjustment?Function used
ParametricStudent'st-testYesstats::pairwise.t.test()
Non-parametricDurbin-Conover testYesPMCMRplus::durbinAllPairsTest()
RobustYuen's trimmed means testYesWRS2::rmmcp()
BayesianStudent'st-testNABayesFactor::ttestBF()

Effect size estimation

Not supported.

See also

grouped_ggbetweenstats,ggbetweenstats,grouped_ggwithinstats

Examples

# for reproducibilityset.seed(123)library(dplyr, warn.conflicts=FALSE)# create a plotp<-ggwithinstats(  data=filter(bugs_long,condition%in%c("HDHF","HDLF")),  x=condition,  y=desire,  type="np")# looking at the plotp# extracting details from statistical testsextract_stats(p)#> $subtitle_data#># A tibble: 1 × 14#>parameter1parameter2statisticp.valuemethodalternative#><chr><chr><dbl><dbl><chr><chr>#>1 desire     condition17960.000430 Wilcoxon signed rank test two.sided#>effectsizeestimateconf.levelconf.lowconf.highconf.methodn.obs#><chr><dbl><dbl><dbl><dbl><chr><int>#>1 r (rank biserial)0.4870.950.2850.648 normal         90#>expression#><list>#>1<language>#>#> $caption_data#> NULL#>#> $pairwise_comparisons_data#> NULL#>#> $descriptive_data#> NULL#>#> $one_sample_data#> NULL#>#> $tidy_data#> NULL#>#> $glance_data#> NULL#>#> attr(,"class")#> [1] "ggstatsplot_stats" "list"# modifying defaultsggwithinstats(  data=bugs_long,  x=condition,  y=desire,  type="robust")# you can remove a specific geom by setting `width` to `0` for that geomggbetweenstats(  data=bugs_long,  x=condition,  y=desire,# to remove violin plot  violin.args=list(width=0, linewidth=0),# to remove boxplot  boxplot.args=list(width=0),# to remove points  point.args=list(alpha=0))

[8]ページ先頭

©2009-2025 Movatter.jp