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


## ----closed-------------------------------------------------------------------
set.seed(seed = 1)
check <- function(P, m) {
  M <- matrix(data = rnorm(n = P * P, mean = 50, sd = 10), nrow = P, ncol = P)
  if (m %in% c(2, 4)) M[lower.tri(M)] <- NA
  if (m %in% c(3, 4)) diag(M) <- NA
  cf <- DiallelAnalysisR:::.da_griffing_closed(M, m)
  ex <- DiallelAnalysisR:::.da_griffing_decompose(M, m)
  max(abs(c(cf$ss - ex$ss, cf$g - ex$g, cf$ems - ex$ems)))
}
outer(X = 5:9, Y = 1:4, FUN = Vectorize(check))


## ----lm-----------------------------------------------------------------------
p <-
  PartialDiallel(
      y      = y
    , Rep    = Rep
    , Cross1 = Cross1
    , Cross2 = Cross2
    , data   = PartialDiallelData
    )
a <- anova(lm(formula = y ~ factor(Rep) + factor(Cross1) * factor(Cross2), data = PartialDiallelData))
cbind(package = p$ANOVA[c("GCA I", "GCA II", "SCA", "Error"), "Sum Sq"], lm = a[2:5, "Sum Sq"])


## ----se-change----------------------------------------------------------------
f <-
  Griffing(
      y          = Yield
    , Rep        = Rep
    , Cross1     = Cross1
    , Cross2     = Cross2
    , data       = GriffingData1
    , Method     = 1
    , Model      = 1
    , Reciprocal = c("combined", "split")[1]
    )
ms <- f$RCBD[c("Rep", "Residuals"), "Mean Sq"]
round(x = cbind(`1.0.0` = f$StdErr, `0.6.0` = f$StdErr * sqrt(ms[1] / ms[2])), digits = 3)


## ----published----------------------------------------------------------------
ref <-
  da_reference(
      source   = "Griffing"
    , evaluate = TRUE
    , level    = 1
    )
nrow(ref)
table(ref$agrees)


## ----published-diff-----------------------------------------------------------
ref <- as.data.frame(x = ref)
d <- ref[!ref$agrees, c("quantity", "value", "computed")]
d$difference <- round(x = d$computed - d$value, digits = 3)
d$computed <- round(x = d$computed, digits = 2)
d
max(abs(d$difference))


## ----published-show-----------------------------------------------------------
x1 <- ref[grepl(pattern = "^X1", x = ref$quantity), c("quantity", "value", "computed")]
x1$computed <- round(x = x1$computed, digits = 2)
head(x = x1, n = 10)

