Changelog
Source:NEWS.md
colleyRstats 0.1.5 (development)
BUG FIXES
colleyRstats_setup()made it impossible to attach a meta-package afterwards.library(colleyRstats),colleyRstats_setup(),library(easystats)died on the third line with.onAttach failed in attachNamespace() for 'easystats': object 'quietly' not found, which broke every downstream analysis script that opens that way. The cause was theset_conflicts = TRUEdefault:conflicted::conflict_prefer()does not merely record a preference, it activatesconflicted, which attaches a.conflictsenvironment carrying its ownlibrary()andrequire()shims. Every later attach in the session then went through those shims, which forwardquietlyandverboseintobase::library()as unevaluated symbols; a package whose.onAttachinspects the callinglibrary()frame – meta-packages do this to decide whether to print their banner – evaluated those symbols in a frame that does not bind them, and the attach failed outright.set_conflictsnow defaults toFALSE, so nothing takes overlibrary()unless it is asked to. The preference list is unchanged and still takes effect when you opt in.Preferences that fail to register are no longer discarded silently. The
try()around the loop existed so that one unsettable preference could not abort the rest, but it also swallowed the fact that it had failed; withverbose = TRUEthe failures are now named.Figures saved at the column presets came out unreadable.
colleyRstats_setup()set text sizes in absolute points (axis text 17 pt, axis titles 20 pt, plot titles 28 pt, strip text 22 pt) whilesave_paper_figure(columns = 1)writes a 3.33 x 2.22 in PDF. Points do not shrink with the canvas, so on a single-column figure the type came out about three times what fits: axis titles ran off the page entirely, and three-level factor labels such asdemonstration/language/rewardoverprinted into an unreadable smear. Type size is now derived from the width the figure is actually written at.generateEffectPlot()fixed its legend title at 14 pt, and the fourggstatsplotwrappers fixedtextat 16 pt andplot.subtitleat 17 pt. These absolute values overrode whatever theme the caller had chosen, so they survived any attempt to scale a figure down. They are now relative to the theme.Significance-bracket labels were fixed at 4 mm (about 11 pt).
ggsignifmeasures text in millimetres while themes measure it in points, so the label kept its physical size no matter how small the figure was drawn and ended up larger than the axis text beside it. Bracket text now follows the active theme; at the historical 17 pt base it is still 4 mm, so existing figures do not shift.
NEW FEATURES
- New
colley_theme(base_size, base_family), the package theme as a function. Every text element is a multiple ofbase_sizerather than an absolute point size, so one theme serves a journal column, a full-width figure and a slide – only the number changes. The multipliers are axis titles 1.15, axis text 1.0, plot title 1.65, subtitle 1.0, caption 0.8, legend text 0.9, strip text 1.3. - New
figure_base_size(width), the rule that turns a figure width into a type size: 3.33 in gives 7 pt and 7 in gives 9 pt, interpolated between and clamped outside. Exported so the choice is inspectable rather than buried. -
save_paper_figure()gainsbase_size. The defaultNULLderives it from the width, which is the fix above; pass a number to choose it, orNAto leave the plot’s own text sizes untouched. The confirmation message now names the size used. -
colleyRstats_setup()gainsbase_size(default 17), passed through tocolley_theme(). - A
pkgdownsite (_pkgdown.ymlplus a deploy workflow) puts the 56 help topics into a grouped reference index – session setup, pipelines, test selection, assumptions, plots, reporting, effect sizes, LaTeX output, data preparation – instead of one alphabetical wall.
DOCUMENTATION
- The README and
vignette("getting-started")now show the session-setup pattern, including wherecolleyRstats_setup()belongs relative to yourlibrary()calls and what happens if it goes first. Neither had covered this, which is how theconflicteddefect above reached three downstream analysis repositories. - The
snake_casespellings (report_art(),plot_effect(),check_assumptions_anova(), …) are now stated to be the canonical ones, and the documentation uses them throughout: README, vignettes, and thepkgdownreference index. Every affected help page gained a Naming section saying which spelling to prefer and that the other is not going away. Previously the aliases file describedsnake_caseas the discoverable API while the README taughtcamelCaseexclusively, and nothing told a reader which to use.
BACKWARD COMPATIBILITY
- The
camelCasefunction names (reportART(),generateEffectPlot(), and the rest) are now marked superseded. Nothing changes at runtime: they are the same function objects, they emit no warnings, and they are not scheduled for removal. Only the documentation’s recommendation has changed. -
colleyRstats_setup(set_options = TRUE)now emits a deprecation warning instead of an easily missed message, and the warning is no longer suppressed byverbose = FALSE. The argument has had no effect since globaloptions()handling was removed for CRAN compliance;set_options = FALSEis unaffected. -
colleyRstats_setup()no longer setsconflictedpreferences by default. Passset_conflicts = TRUEfor them, and place that call after everylibrary()call in the script rather than before. That ordering is a requirement – onceconflictedis active, attaching a meta-package fails – and it is also where the preferences do most good, sinceconflictedresolves only those names that are ambiguous among the packages attached at the time. -
colleyRstats_setup()with no arguments produces the same text sizes as before: the defaultbase_size = 17reproduces the previous absolute values exactly (17 / 19.55 / 28.05 / 15.3 / 22.1 pt), and there is a regression test pinning them. - Figures written through
save_paper_figure()do change, which is the point of the fix – they become legible at the size they are placed at. To keep a figure exactly as it was, passbase_size = NA. - Because the theme is now built as
see::theme_lucid(base_size = ...)rather thantheme_lucid()with sizes overridden on top, margins and spacing scale with the text instead of staying at the 11 pt defaults. This is part of why elements used to collide.
colleyRstats 0.1.4
CRAN release: 2026-07-25
BUG FIXES
-
reportART()reported no F statistic and no effect size for mixed ART models.stats::anova()names the F columnF valuefor a between-only (lm) fit but plainFfor a mixed (lmer) one, and only the former was read – so every model containing a random term (+ (1 | participant), i.e. any within-subjects design) produced\F{3}{108}{}with the statistic missing, silently dropped the partial eta-squared, and left the opening parenthesis unclosed. The F column is now resolved by whichever name it carries. -
reportART()now always closes the statistics parenthesis. It was appended only when an effect size could be computed, so sentences without one shipped unbalanced parentheses into LaTeX. -
reportggstatsplotPostHoc()emitted a stray)after the p-value:... (\m{3.8}, \sd{1.6}); \padj{0.001}).The mean/SD parenthetical closed too early, leaving the p-value outside the parentheses it belongs to and the sentence unbalanced. It now reads... (\m{3.8}, \sd{1.6}; \padj{0.001})., matchingreportArtCon(). - Degrees of freedom are formatted for display. Greenhouse-Geisser corrected, Kenward-Roger and Welch dfs are fractional and were pasted at full double precision, e.g.
\F{1.80875305770353}{66.9238631350305}{0.11}andF(2, 180.000000000002). Whole dfs stay whole; fractional ones are rounded to two decimals. -
reportggstatsplot()chooses the indefinite article from the method name, so it reads “An ANOVA …” rather than “A ANOVA …”.
DOCUMENTATION
- Updated the Datanovia ANOVA-assumptions link, which had moved (README and the
check_assumptions_anova()guidance message).
colleyRstats 0.1.3
CRAN release: 2026-07-16
NEW FEATURES
- New vignette “Analyzing a typical user study” (
vignette("analyzing-a-user-study")): a complete walkthrough from raw within-subjects data to manuscript-ready figures and LaTeX text. - Friendlier errors everywhere a column name is passed: plotting and reporting functions now validate
x/y/iv/dv/factors/objectivesup front and report which column is missing plus the available columns, instead of failing later with a cryptic dplyr/rlang error. - The plot wrappers warn when
xlabelsdoes not match the number of observed groups (previously the axis labels silently misaligned). -
not_empty()now names the offending argument in its default error message. -
remove_outliers_REI()acceptsvariablesas a character vector (e.g.c("var1", "var2")) in addition to the comma-separated string. -
add_pareto_emoa_column()/add_pareto_moocore_column()verify that the objective columns exist and are numeric.
BUG FIXES
-
?replace_valuesworks again: a malformed roxygen@nametag had redirected its documentation to a straydata-the-data-framehelp page. -
reportArtCon()now escapes the dependent variable and condition names for LaTeX and renders the IV via the same name-macro policy asreportDunnTest(); previously names with underscores produced uncompilable LaTeX. - The
reshape_data()example was not runnable (requireNamespace()was called with a vector and a misspelled package name). -
latex_preamble()no longer documents itspathargument twice;rFromNPAV()’s documentation block is no longer split by a stray comment line. -
reportNPAV()no longer refers to the non-existentreportNPAVChi()when the input lacks aPr(>F)column. - README: removed the section documenting the non-existent
reportNPAVChi(), refreshed the stalereportNPAV()deprecation date, fixed the doubleanova()call in thereportART()example, and documented the newer API (recommend_test, pipelines, Overleaf output) and all vignettes.
PERFORMANCE
-
ggwithinstatsWithPriorNormalityCheck()no longer runs an unused Levene test (the asterisk variant was already fixed in 0.1.0).
colleyRstats 0.1.2
CRAN release: 2026-07-06
NEW FEATURES
- Principled model selection:
classify_outcome()determines a variable’s measurement scale (continuous, ordinal, binary, count, nominal) andrecommend_test()turns scale x clustering x assumption checks into a concrete recommendation – including mixed models – with the matching reporter, a ready-to-edit fit call, a rationale, and an APA-style methods sentence. - Mixed-model reporters:
reportGLMM()(lme4 / glmmTMB / lm / glm; odds and incidence-rate ratios are chosen automatically from the family) andreportCLMM()(ordinal::clmm / clm). - Overleaf-oriented output layer:
use_colleyrstats_sty()ships the macro package,emit_name_macros()/define_result_macro()generate\newcommandstubs and single-source-of-truth result macros,expand_latex_macros()– withoptions(colleyRstats.macros = FALSE)– expands everything to plain math, andemit_overleaf()bundles a whole analysis into a compilable Overleaf project. -
latex_escape()escapes LaTeX special characters in user-supplied names. - New vignettes: “Choosing the right test (and mixed models)” and “From R to Overleaf: publication-ready output”.
colleyRstats 0.1.0
CRAN release: 2026-06-11
NEW FEATURES
-
analyze_and_report(): one-call pipeline per dependent variable – assumption checks with a ready-made methods sentence, the matching ggstatsplot figure (automatic parametric/non-parametric selection), the omnibus result, and post-hoc comparisons. -
report_all(): runsanalyze_and_report()over many dependent variables (e.g., all questionnaire scales of a study), returns a summary table with Holm-adjusted omnibus p-values across the DVs, and a combined figure whenpatchworkis installed. -
latex_preamble(): prints (or writes to a file) the complete set of LaTeX\newcommanddefinitions required by the report functions – no more hunting through individual help pages. - All report functions accept
sink_toto write their output to a.texfile, so manuscripts can\input{}the results and stay up to date when the analysis is re-run. They all also invisibly return their text for programmatic use (e.g., inline in Quarto/R Markdown). -
save_paper_figure(): saves plots with publication presets (ACM-style single-column 3.33 in / full-width 7 in). PDFs use Cairo for embedded fonts on Windows/Linux; on macOS the default pdf device is used because R’s cairo there can crash the session (observed as segfaults on GitHub Actions macOS runners). Adeviceargument allows overriding. -
assumption_methods_text(): turns the Shapiro-Wilk (and optionally Levene) checks into the methods-section justification sentence reviewers expect, including the test statistics.check_normality_by_group()andcheck_homogeneity_by_group()now attach their test statistics as attributes. -
cite_methods(): prints methods boilerplate plus the BibTeX entries for the packages behind the analyses (ART, Dunn, nparLD, ggstatsplot, effectsize). - Consistent snake_case aliases with discoverable prefixes for the whole API (e.g.,
report_art(),report_dunn_test(),plot_between_stats(),check_assumptions_anova()). The original names remain fully supported. - New option
options(colleyRstats.leading_zero = FALSE)for APA-style p-values and effect sizes without the leading zero (e.g.,p=.033). - Significance brackets in the asterisk plot helpers are now stacked relative to the data range, so the layout works for any dependent-variable scale (1-7 Likert and 0-100 TLX alike).
BUG FIXES
-
reportggstatsplot()now recognizes the unpaired non-parametric test (“Wilcoxon rank sum test”, reported with its W statistic); previously such results fell through to a generic fallback format. The signed-rank (paired) variant keeps the V statistic. The p-value is also compared before rounding, so e.g. p = 0.0009 is reported as “p < 0.001” again. -
reportNPAV(),reportART(), andreportNparLD()withwrite_to_clipboard = TRUEnow write all significant effects to the clipboard at once; previously each effect overwrote the previous one and only the last sentence survived. These functions now also invisibly return the reported sentences. - The asterisk plot helpers (
ggbetweenstatsWithPriorNormalityCheckAsterisk(),ggwithinstatsWithPriorNormalityCheckAsterisk()) no longer drop significant comparisons whose adjusted p-value is exactly 0.01 or 0.001. -
replace_values()no longer round-trips untouched numeric columns throughas.character(), which silently truncated values to 15 significant digits. -
reportggstatsplotPostHoc()handles missing values in the dependent variable (na.rm = TRUE) and falls back to the raw level name when alabel_mappingsentry is missing instead of producing malformed text. -
reportNparLD()output now correctly says “nparLD analysis” instead of “NPAV”, and the required\dfLaTeX command is documented. -
reportDunnTestTable()andreportArtConTable():orderByP = TRUEnow takes precedence over the default alphabetical ordering instead of being silently undone by it. - Partial eta squared in
reportART()/reportNPAV()is now computed from the unrounded F statistic. -
rFromWilcoxAdjusted()caps the adjusted p-value at 1, avoidingNaNresults. -
generateMoboPlot2()stops with a clear error when the phase column lacks “sampling”/“optimization” rows instead of producing-Infpositions. -
normalize()rejects a zero-width input range instead of returningInf/NaN. -
remove_outliers_REI()now actually uses itsrangeargument (validation plus an out-of-range warning) and ignoresNAresponses when tallying instead of poisoning row counts. -
reshape_data()reports a clear error when marker-delimited sections have unequal column counts. -
checkAssumptionsForAnova()distinguishes “normality could not be assessed” from “normality violated” and uses a consistent p < 0.05 boundary. - Effect-size failures in the Dunn/ART post-hoc reporters now emit a warning instead of being silently swallowed.
- The four
gg*WithPriorNormalityCheck*()wrappers now pass the palette in the"pals::glasbey"format required by current ggstatsplot; the deprecatedpackage=/palette=pair was being ignored with a warning, so plots silently used the default palette instead of glasbey.
PERFORMANCE
-
add_pareto_emoa_column()usesemoa::is_dominated()directly instead of matching rows against the Pareto front with floating-point equality (was O(front size x rows)). - The mobo plots draw their annotation segments once via
annotate()instead of once per data row. -
ggwithinstatsWithPriorNormalityCheckAsterisk()no longer runs an unused Levene test.
DEPENDENCIES
- Reduced hard dependencies: ARTool, car, clipr, conflicted, FSA, ggtext, readxl, report, rstatix, writexl, and xtable moved from Imports to Suggests (functions that need them check at runtime and degrade gracefully or stop with an informative message).
caris no longer used by the package code at all. - ggplot2 moved from Imports to Depends: the ggproto stats of ggpmisc 0.7.0/ggpp 0.6.0 resolve their parent classes via the search path, so
generateMoboPlot()/generateMoboPlot2()fail with “object ‘Stat’ not found” whenever ggplot2 is not attached. Attaching colleyRstats now attaches ggplot2 as well.
colleyRstats 0.0.5
MINOR CHANGES
- new function
add_pareto_moocore_column(). Should be less buggy than the one fromemoa
colleyRstats 0.0.4
CRAN release: 2026-05-03
MINOR CHANGES
- exposed new parameters for
generateMoboPlot2().
colleyRstats 0.0.3
CRAN release: 2026-04-24
MINOR CHANGES
- Fixed documentation defaults for
colleyRstats_setup()andgenerateMoboPlot2(). - Made
generateMoboPlot2()default tofillColourGroup = "ConditionID"so the documented default works out of the box. - Simplified the GitHub Actions test workflow to install dependencies from package metadata.
- Expanded tests for plotting and reporting behavior.
- Added a getting-started vignette and linked it from the README.