## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(collapse = FALSE, comment = "", fig.width = 7, fig.height = 4.6,
                      dev = if (knitr::is_latex_output()) "cairo_pdf" else
                        if (requireNamespace("svglite", quietly = TRUE)) "svglite" else "png")
if (requireNamespace("stability", quietly = TRUE)) library(stability) else
  pkgload::load_all(export_all = FALSE, helpers = FALSE, quiet = TRUE)


## ----lm-----------------------------------------------------------------------
aa <-
  add_anova(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
a2 <- anova(lm(formula = terms(Yield ~ Env + Env:Rep + Gen + Gen:Env, keep.order = TRUE), data = ge_data))
all.equal(target = aa$anova[["Sum Sq"]], current = a2[["Sum Sq"]])


## ----reg----------------------------------------------------------------------
reg <-
  stab_reg(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
M <- with(data = ge_data, expr = tapply(X = Yield, INDEX = list(Gen, Env), FUN = mean))
b <-
  vapply(
      X         = reg$StabIndvReg$Gen
    , FUN       = function(g) coef(lm(M[g, ] ~ colMeans(M)))[[2]]
    , FUN.VALUE = 0
    )
all.equal(target = reg$StabIndvReg$Slope, current = unname(b))


## ----eskridge-ref-------------------------------------------------------------
ref <-
  stab_reference(
      source   = "Eskridge"
    , evaluate = TRUE
    , level    = 1
    )
tab <- ref[, list(
    quantity  = sub(pattern = " \\(alpha.*", replacement = "", x = quantity)
  , published = value
  , computed  = round(x = computed, digits = 3)
  , agrees
  )]
tab
sum(ref$agrees)
max(abs(ref$computed - ref$value)[!grepl(pattern = "entry 8", x = ref$quantity)])


## ----order--------------------------------------------------------------------
set.seed(seed = 1)
shuffled <- ge_data[sample(x = nrow(ge_data)), ]
k1 <-
  stab_kang(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )$Kang
k2 <-
  stab_kang(
      .data = shuffled
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )$Kang
all.equal(target = k1, current = k2)

