citation("biometryassist") now gives the package citation, including its CRAN DOI, and the repository includes a CITATION.cff generated from the package metadata. (#194, #196)reference_comparisons() now uses the exact Dunnett test whenever all comparisons share a common degrees of freedom (e.g. single-stratum aovlist and balanced lmer() models), instead of falling back to Holm for any model that reports degrees of freedom per comparison.multiple_comparisons(), pairwise_comparisons() and reference_comparisons() now work with asreml models whose terms use ASReml-R special functions, such as at() in the fixed model or diag(), fa(), us() and vm() in the random model. (#198)predictions returned by multiple_comparisons() no longer include a df column for aov and lm models, so the output is the same for every model type.use_template() now copies the requested package template as expected. Previously it always copied mixed_model_template.R. (#188)export_design_to_excel() examples, which are now runnable. (#189, #197)multiple_comparisons(), pairwise_comparisons() and reference_comparisons() now use the correct pairwise contrast degrees of freedom for nlme::lme() models rather than those of the individual means. In multiple_comparisons() this gave too-large HSD values; results now match equivalent aov() and lmer() fits. (#190)emmeans (aovlist, lmer(), nlme::lme(), afex and glmmTMB). This affected the p-values, HSD and letter groups from multiple_comparisons() for unbalanced data; balanced designs were not affected. (#193)multiple_comparisons() no longer errors when a treatment level is aliased in models that use emmeans (aovlist, lmer(), nlme::lme(), afex and glmmTMB). (#195)asreml model now always names the classify term; previously the term name could be missing.multiple_comparisons() no longer errors with "subscript out of bounds" when ASReml-R's levels argument is used to predict a subset of levels for an asreml model.multiple_comparisons() confidence intervals (int.type = "ci") now use the degrees of freedom of each predicted mean, rather than the largest pairwise-comparison degrees of freedom, and int.type = "tukey" now uses the smallest comparison degrees of freedom for each mean. Intervals were too narrow for multi-stratum models (aovlist, afex, lmer(), nlme::lme() and asreml at() terms); single-stratum models are not affected. (#199)multiple_comparisons(): the plot, label_height, rotation, save, and savename arguments are now deprecated and will be removed in a future version. Use autoplot(<result>) for plotting (pass label_height and rotation there), and write.csv(result$predictions, "file.csv") for saving. The pred, order, and pred.obj arguments were deprecated in 1.1.0 or earlier and have now been removed.multiple_comparisons() gains an adjust argument to choose the p-value adjustment method (any stats::p.adjust() method, in addition to the default Tukey's HSD), and a by argument to run comparisons independently within groups.aovlist and nlme::lme() models in multiple_comparisons() (#107).resplot() and the comparison functions (multiple_comparisons(), pairwise_comparisons(), reference_comparisons()) closer to parity:
afex (afex_aov), glmmTMB, and sommer's mmes() models. glmmTMB predictions are on the link scale with asymptotic degrees of freedom (supply trans to back-transform); sommer mmes() predictions and SEDs come from sommer's native predict(), also with asymptotic degrees of freedom.resplot() now supports multi-stratum aov models fitted with Error() (aovlist, one panel per error stratum), afex_aov models, and Gaussian-family glmmTMB models.lme4breeding::lmebreed() (relationship-based mixed) models are supported by both workflows: they carry class lmerMod and are handled by the existing lmerMod methods. Comparisons correctly reflect the relationship structure (validated against ASReml-R), using Kenward-Roger degrees of freedom.art) and sommer's legacy mmer models are not available for the comparison functions (ART uses aligned ranks — use ARTool::art.con(); refit mmer with sommer::mmes()), though both remain supported by resplot(). Non-Gaussian glmmTMB models are not valid for resplot()'s normal-Q-Q diagnostic and point to DHARMa::simulateResiduals() instead.pairwise_comparisons() to test selected pairwise differences (or general linear contrasts) between predicted means, returning a tidy table of estimates, predicted means and multiplicity-adjusted p-values, with a forest plot via autoplot().reference_comparisons() to compare every level against a single reference (control) level, using an exact Dunnett test by default. It returns a means-centric table (each level's mean, the reference mean and the adjusted difference) and a means plot via autoplot().design() gains a plot_numbers argument to add a plot_number column to the design, numbered either sequentially or in a serpentine pattern. Buffer plots are numbered alongside treatment plots. (#58)autoplot() for multiple_comparisons() output gains several new options (thanks to Michael Mumford, #161): type = "line" joins the means with a line; include_errorbar and include_lettering toggle the error bars and significance letters; errorbar_type = "hsd" draws a single Tukey's HSD reference bar instead of per-mean intervals; and trans_scale = TRUE plots back-transformed means on the model (transformed) scale with an exact back-transformed secondary axis.pairwise_comparisons() and reference_comparisons() alongside multiple_comparisons() and giving guidance on choosing a multiplicity adjustment.autoplot() and the export_design_to_excel() function. (#170)export_design_to_excel() function is now less fragile. It can handle design objects and data frames as input, and alternative names for the row and column columns. (#168 and #172)resplot(). (#167)des_info(). This function has been superseded by design(), and will be removed in a future version.arcsin transformation handling in multiple_comparisons() (#60).design() in preparation for moving to a new backend later (#102). No user-facing changes.multiple_comparisons(). This required changing the multiple_comparisons() output object to a list, but printing to console and autoplot(<multiple_comparisons>) still work as before (#22).multiple_comparisons() (#125).satab() to reliably get the same output (#133).cowplot to patchwork to speed up resplot() (and variogram()) (#29).export_design_to_excel() (#124).install_asreml() where it threw an error with more than one new version (#122).calculate_differences() clashed with package "MuMIn" (#131).resplot() to enable easier expansion to different models in future. (#100)export_design_to_excel(). An excel file can now be created from a design dataframe, instead of just a graphical plot. (#74)multiple_comparisons().
The new option int.type = 'tukey' will now create comparison intervals using Tukey's distribution rather than a t-distribution for a regular confidence interval.
This has been a point of confusion when intervals don't overlap but share letters. (#66)multiple_comparisons(). (#83)verbose option for the quiet parameter in install_asreml() to give more detailed output when required. (#81)onepage argument. (#73)multiple_comparisons() to enable easier expansion to different models in future. (#92)multiple_comparisons() (#90)shapiro.test() within resplot() with too many data points (#87)heat_map() didn't work properly with factor columns (#86)summary_graph() function was accidentally left out of the CRAN submission.summary_graph() (#75) and heat_map() (#19) functionsrow, column, block and treatment columns to be provided in the autoplot.design() function, to enable more general plotting of designs. (#28)install_asreml() to check if there is a later version before downloading.autoplot.design().multiple_comparisons() to prevent breaking. (#53)predictmeans(). (#50)ar1() component in variogram(). (#49)multiple_comparisons() via classify. (#48)present argument passed to predict.asreml(). (#41)multiple_comparisons() now accepts power transformations and automatically back-transforms. It gains a new argument power to provide the transformation power applied in the model to undo. This enables more general Box-Cox transformations. (#36)multiple_comparisons() no longer produces an error when the trans argument is supplied and offset is not. It now produces a warning and sets offset to 0 when not provided. (#37)options(biometryassist.check = FALSE) to your .Rprofile file to disable. Partially fixes #6.autoplot.mct() (#35)multiple_comparisons() (#33)NAs have been produced. (#24 and #25)multiple_comparisons() no longer requires calls to predict.asreml() to be passed into the function, as the predicted values are now calculated internally. Additional arguments can be passed to predict.asreml() via the ... argument. (#27)order argument of multiple_comparisons() has been deprecated in favour of a new argument descending. This takes logical (TRUE or FALSE) values only, so default is no longer possible as it was producing incorrect results. (#8)resplt() has been deprecated in favour of resplot() and will be removed in a future version (#20).logl_test(). (#17)multiple_comparisons() now. (#14)asreml() call on resplot() if not explicitly provided. (#21)install_asreml() would not work on macOS Monterey. (#16)mct.out() has been renamed to multiple_comparisons()logl.test() has been renamed to logl_test()des.info() has been renamed to des_info()For changes prior to biometryassist 1.0.0 see the BiometryTraining package at https://biometryhub.github.io/BiometryTraining/news/index.html.