This Computational Provenance Record documents the statistical computing environment, software dependencies, computational provenance, and bibliographic references associated with the RAISINS Split-Split Plot Design module. It is intended to support computational reproducibility and software transparency. Detailed statistical methodology, mathematical derivations, and user guidance are provided separately in the official module documentation.
Any issues or updates required please comment here
y ~ Block + A + Ea + B + A:B + Eb + C + A:C + B:C + A:B:C + Ec - three separate error strata, one per plot size
Precision ordering
The main-plot factor is tested least precisely and the sub-sub-plot factor most precisely, since Ea ≤ Eb ≤ Ec in degrees of freedom
Standard errors & CV
SEM
sqrt(E / r), where E is that source's error stratum (Ea, Eb or Ec) and r the number of observations per level
SED
sqrt(2 × E / r)
Coefficient of variation
Reported separately per stratum - cv(a), cv(b) and cv(c) - as sqrt(E) × 100 / mean(y)
Design validation (before any analysis runs)
Balance requirement
Every A×B×C combination must appear the same number of times in every replication, with no empty cells; an unbalanced or incomplete design is rejected rather than analysed
Replication requirement
Each treatment combination needs ≥ 2 observations; response columns must be numeric
MANOVA (stats::manova(), optional)
Test statistic
Pillai's trace (R's default), with its F-approximation and p-value; tidied via broom::tidy()
Effect size
η2 from effectsize::eta_squared(), reported per source alongside the MANOVA table
Principal component analysis (stats::prcomp(), optional)
Scaling
center = TRUE, scale = TRUE - the correlation-matrix PCA
Component retention
Eigenvalues from factoextra::get_eigenvalue(); components with eigenvalue > 1 are highlighted (Kaiser criterion)
Normality diagnostics (on model residuals)
Default test
Shapiro–Wilk shapiro.test() (3 ≤ n ≤ 5000); Anderson–Darling nortest::ad.test() and Kolmogorov–Smirnov ks.test() also available. Residuals are taken from lm(y ~ A + B + C + A:B + A:C + B:C + A:B:C)
Data transformations (optional, per variable)
Logarithmic
log10(x); if any value ≤ 0, log10(x - min(x) + 1)
Square-root
sqrt(x); if any value = 0, sqrt(x + 0.5)
Arcsine
asin(sqrt(x)) on proportions in [0, 1]; 0 and 1 replaced by 1/(4n) and 1 - 1/(4n); blocked outside [0, 1]
5 R Code for Key Analytical Steps
The code blocks below demonstrate the exact computation behind each reported result using ssp.csv, the split-split-plot field trial shipped with agricolae (Gomez & Gomez 1984, p. 143): grain yields of 3 rice varieties under 3 management practices and 5 nitrogen levels, in 3 replications - 5 × 3 × 3 × 3 = 135 plots, the fully balanced layout the module requires.
5.1 Split-Split-Plot ANOVA and its Three Error Strata
5.2 Post-hoc Mean Comparison (LSD default; Tukey / DMRT alternatives)
rcbd_alpha <-0.05# default significance level# Each source is compared against its OWN stratum - this is what distinguishes a# split-split plot from an ordinary three-factor factorial:rcbd_out <-LSD.test(y, A, rcbd_anovaTable$gl.a, rcbd_anovaTable$Ea, alpha = rcbd_alpha)rcbd_outB <-LSD.test(y, B, rcbd_anovaTable$gl.b, rcbd_anovaTable$Eb, alpha = rcbd_alpha)rcbd_outC <-LSD.test(y, C, rcbd_anovaTable$gl.c, rcbd_anovaTable$Ec, alpha = rcbd_alpha)rcbd_outAB <-LSD.test(y, AB, rcbd_anovaTable$gl.b, rcbd_anovaTable$Eb, alpha = rcbd_alpha)rcbd_outAC <-LSD.test(y, AC, rcbd_anovaTable$gl.c, rcbd_anovaTable$Ec, alpha = rcbd_alpha)rcbd_outBC <-LSD.test(y, BC, rcbd_anovaTable$gl.c, rcbd_anovaTable$Ec, alpha = rcbd_alpha)rcbd_outABC <-LSD.test(y, ABC, rcbd_anovaTable$gl.c, rcbd_anovaTable$Ec, alpha = rcbd_alpha)# Grouping letters, ordered naturallyrcbd_out$groups[gtools::mixedsort(rownames(rcbd_out$groups)), ]# statistics: MSerror, Df, Mean, CV, t.value, LSD -> CV is column 4, CD is column 6rcbd_stat <- rcbd_out$statisticsrcbd_stat# Alternatives selectable in the app (same DFerror / MSerror / alpha arguments):# Tukey HSD -> HSD.test(y, A, rcbd_anovaTable$gl.a, rcbd_anovaTable$Ea,# alpha = rcbd_alpha) # MSD is column 5# DMRT -> duncan.test(y, A, rcbd_anovaTable$gl.a, rcbd_anovaTable$Ea,# alpha = rcbd_alpha)$duncan# Standard errors from that source's error stratum (r = observations per level)rcbd_r <- rcbd_out$means[1, 3]rcbd_SEM <-sqrt(rcbd_stat[1, 1] / rcbd_r)rcbd_SED <-sqrt((2* rcbd_stat[1, 1]) / rcbd_r)
Explore the entire Split-Split Plot Design module in preview mode using our demo datasets. To submit suggestions or report a workflow issue, please use the discussion section below, or visit the official RAISINS website.
6 RAISINS Native Statistical Framework
RAISINS uses R for all its statistical computations. Every package used to generate major results is listed and demonstrated with examples, so results can be reproduced independently. These results are then organized and formatted on the RAISINS website along with visualisation to make them easier to use and interpret. RAISINS also has its own custom-built statistical tools for managing workflows, validating results, and generating reports. Details of these are not fully covered here, they’re shared with outside researchers only on request, and are subject to licensing terms.
7 Package References
R Core Team. (2025). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/
de Mendiburu, F. (2023). agricolae: Statistical Procedures for Agricultural Research (R package version 1.3-7). https://doi.org/10.32614/CRAN.package.agricolae
Ben-Shachar, M. S., Lüdecke, D., & Makowski, D. (2020). effectsize: Estimation of Effect Size Indices and Standardized Parameters (R package version 1.0.3). https://doi.org/10.32614/CRAN.package.effectsize
Robinson, D., Hayes, A., & Couch, S. (2025). broom: Convert Statistical Objects into Tidy Tibbles (R package version 1.0.13). https://doi.org/10.32614/CRAN.package.broom
Kassambara, A., & Mundt, F. (2020). factoextra: Extract and Visualize the Results of Multivariate Data Analyses (R package version 2.2.0). https://doi.org/10.32614/CRAN.package.factoextra
Gross, J., & Ligges, U. (2015). nortest: Tests for Normality (R package version 1.0-4). https://doi.org/10.32614/CRAN.package.nortest
De Rosario-Martinez, H. (2015). phia: Post-Hoc Interaction Analysis (R package version 0.3-2). https://doi.org/10.32614/CRAN.package.phia
Schloerke, B., Cook, D., Larmarange, J., Briatte, F., Marbach, M., Thoen, E., Elberg, A., & Crowley, J. (2025). GGally: Extension to ‘ggplot2’ (R package version 2.4.0). https://doi.org/10.32614/CRAN.package.GGally
Warnes, G. R., Bolker, B., & Lumley, T. (2023). gtools: Various R Programming Tools (R package version 3.9.5). https://doi.org/10.32614/CRAN.package.gtools
Wickham, H., François, R., Henry, L., Müller, K., & Vaughan, D. (2025). dplyr: A Grammar of Data Manipulation (R package version 1.2.1). https://doi.org/10.32614/CRAN.package.dplyr
Wickham, H., Vaughan, D., & Girlich, M. (2025). tidyr: Tidy Messy Data (R package version 1.3.2). https://doi.org/10.32614/CRAN.package.tidyr
Gomez, K. A., & Gomez, A. A. (1984). Statistical procedures for agricultural research (2nd ed.). John Wiley & Sons, New York.