## ----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)


## ----methods------------------------------------------------------------------
fits <-
  lapply(
      X   = 1:4
    , FUN = function(m) Griffing(
          y          = Yield
        , Rep        = Rep
        , Cross1     = Cross1
        , Cross2     = Cross2
        , data       = get(paste0("GriffingData", m))
        , Method     = m
        , Model      = 1
        , Reciprocal = c("combined", "split")[1]
        )
    )
names(fits) <- paste("Method", 1:4)
do.call(
    what = rbind
  , args = lapply(X = fits, FUN = function(f) f$ANOVA[c("gca", "sca"), "Mean Sq"])
  )


## ----m1-----------------------------------------------------------------------
f1 <- fits[["Method 1"]]
knitr::kable(x = f1$ANOVA, digits = 3)
knitr::kable(x = f1$Genetic.Components, digits = 4)


## ----m1-effects---------------------------------------------------------------
round(x = f1$Effects, digits = 2)
round(x = f1$SCA[1:4, 1:4], digits = 2)


## ----se-----------------------------------------------------------------------
round(x = f1$StdErr, digits = 3)
t_gca <- f1$GCA / f1$StdErr[["gi"]]
round(x = t_gca, digits = 2)


## ----tcrit--------------------------------------------------------------------
qt(p = 0.975, df = f1$ANOVA["Error", "Df"])


## ----predict------------------------------------------------------------------
pr_g <- predict(object = f1, newdata = NULL, type = c("gca", "full")[1])
pr_f <- predict(object = f1, newdata = NULL, type = c("gca", "full")[2])
pr <- merge(x = pr_g, y = pr_f, by = c("Cross1", "Cross2"), suffixes = c("_gca", "_full"))
head(pr[order(-predicted_full)], 8)


## ----m234---------------------------------------------------------------------
knitr::kable(x = fits[["Method 2"]]$ANOVA, digits = 3)
knitr::kable(x = fits[["Method 3"]]$ANOVA, digits = 3)
knitr::kable(x = fits[["Method 4"]]$ANOVA, digits = 3)
round(
    x      = rbind(
        Method1 = fits[[1]]$GCA
      , Method2 = fits[[2]]$GCA
      , Method3 = fits[[3]]$GCA
      , Method4 = fits[[4]]$GCA
      )
  , digits = 2
  )


## ----plots--------------------------------------------------------------------
plot(fits[["Method 2"]])

