Last updated: 2026-04-08

Checks: 6 1

Knit directory: Integrating-nir-genomic-kernel/

This reproducible R Markdown analysis was created with workflowr (version 1.7.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish to commit the R Markdown file and build the HTML.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20250829) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 6e9c365. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    analysis/analysis.Rmd
    Ignored:    analysis/run_cv0_cv00_only.R
    Ignored:    analysis/run_cv1_cv2_only.R
    Ignored:    analysis/script_tabelas_resultados_pipeline_v2.R
    Ignored:    data/Article_documents/
    Ignored:    data/Maize-NIRS-GBS-main/
    Ignored:    output/Matrizes/Geno.all.rds
    Ignored:    output/Matrizes/NIR.all.rds
    Ignored:    output/Matrizes/figures/
    Ignored:    output/adjust_models.rar
    Ignored:    output/climate_results/additional_climate_plots.tiff
    Ignored:    output/climate_results/combined_additional_climate_plots.tiff
    Ignored:    output/climate_results/combined_climate_plot.tiff
    Ignored:    output/cv-schemes.tiff
    Ignored:    output/figures/
    Ignored:    output/variance_components/bglr_runs/
    Ignored:    output/variance_components/figures/

Untracked files:
    Untracked:  output/results/
    Untracked:  output/tables/

Unstaged changes:
    Modified:   analysis/visualization.Rmd
    Modified:   analysis/visualization_pt.Rmd

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/visualization_pt.Rmd) and HTML (docs/visualization_pt.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
Rmd d7caa48 WevertonGomesCosta 2026-04-07 update
Rmd e1fdde0 WevertonGomesCosta 2026-04-07 update
Rmd 0b2db18 WevertonGomesCosta 2026-04-07 update
Rmd 2d2b88e WevertonGomesCosta 2026-04-06 update
Rmd 5aac46d WevertonGomesCosta 2026-04-06 update
Rmd d1beaba WevertonGomesCosta 2026-04-06 update
html d1beaba WevertonGomesCosta 2026-04-06 update
Rmd 6b32571 WevertonGomesCosta 2026-04-05 update
html 6b32571 WevertonGomesCosta 2026-04-05 update
Rmd 1e54662 WevertonGomesCosta 2026-04-02 update
Rmd 00ef3ef WevertonGomesCosta 2026-04-01 update
html 00ef3ef WevertonGomesCosta 2026-04-01 update
Rmd 1915912 WevertonGomesCosta 2026-03-31 update
Rmd 218576b WevertonGomesCosta 2026-03-31 update
Rmd c7ec52d WevertonGomesCosta 2026-03-31 update
Rmd 93e2f1b WevertonGomesCosta 2026-03-31 update
Rmd fd9d8e0 WevertonGomesCosta 2026-03-31 update
Rmd 114bc53 WevertonGomesCosta 2026-03-31 update
Rmd 0f4ed87 WevertonGomesCosta 2026-03-31 update
Rmd 9827bcc WevertonGomesCosta 2026-03-31 update scripts rmd
Rmd 3ff4037 WevertonGomesCosta 2026-03-30 update
html 3ff4037 WevertonGomesCosta 2026-03-30 update

Language / Idioma: English | Português

Este arquivo é a versão didática da etapa de visualização. Sua finalidade é tomar as saídas brutas de predição produzidas em analysis_prediction_run_outputs.Rmd, reorganizá-las em tabelas-resumo interpretáveis e depois traduzir esses resumos em comparações compactas e figuras finais.

Neste ponto do pipeline, a principal pergunta analítica já não é mais como cada modelo é especificado, mas como os modelos ajustados se comportam sob diferentes problemas de predição. Por essa razão, a etapa de visualização desloca o foco da construção dos modelos para a interpretação dos modelos. Ela reúne resumos de desempenho para CV1, CV2, CV0 e CV00, destaca contrastes entre modelos com e sem o kernel climático (W) e organiza os resultados em tabelas e figuras que são mais fáceis de inspecionar do que os próprios arquivos brutos de predição.

O fluxo atual de predição grava saídas brutas em output/results/ usando nomes de arquivo que codificam o cenário de validação, o traço, o modelo ajustado, a repetição e o fold. Para CV0 e CV00, o rótulo do ambiente deixado de fora também é registrado no nome do arquivo e depois é associado a Env pelo filtro Env == Env_leave. Essa estrutura de nomes é essencial porque conecta a etapa de execução à etapa de interpretação.

Ao longo deste tutorial, o kernel climático (W) deve ser interpretado como uma fonte de similaridade derivada do clima que complementa, mas não substitui, o efeito categórico de ambiente (E). O componente fenômico (P) também deve ser interpretado com cuidado, porque a similaridade baseada em NIRS pode refletir forte resposta ambiental além de sinal preditivo potencialmente útil.

O que este script faz

O fluxo é organizado em quatro tarefas práticas:

  1. localizar e ler os arquivos CSV de predição;
  2. interpretar os nomes dos arquivos e recuperar as informações de traço, modelo, repetição e leave-one-environment-out;
  3. resumir os resultados para CV1, CV2, CV0 e CV00;
  4. exportar tabelas limpas e figuras para a próxima etapa orientada ao manuscrito.

Para tornar a interpretação mais fácil, os modelos são ordenados para ajudar a responder três perguntas práticas:

  1. passar de kernels lineares para kernels Gaussianos ou arc-cosine melhora a capacidade preditiva?
  2. adicionar o kernel climático (W) melhora a capacidade preditiva?
  3. combinar informação genômica e fenômica melhora a capacidade preditiva?

Entradas, saídas e próxima etapa

Entradas desta etapa - saídas brutas de predição gravadas por analysis_prediction_run_outputs.Rmd - tabelas leves de metadados da predição geradas na etapa anterior

Saídas desta etapa - tabelas-resumo finais - rankings de modelos - comparações do efeito de W - comparações entre famílias de kernel - figuras finais para interpretação posterior

Próxima etapa - as saídas geradas aqui alimentam os resumos orientados ao manuscrito e a interpretação final dos resultados do projeto.

1. Configuração

O documento começa definindo um estilo consistente de renderização para código, tabelas e figuras. Isso ajuda o tutorial a permanecer legível quando é inspecionado em HTML e mantém estável a apresentação visual entre os diferentes outputs produzidos nesta etapa.

knitr::opts_chunk$set( echo = TRUE,
 warning = FALSE,
 message = FALSE,
 fig.width = 13,
 fig.height = 8,
  out.width = "100%" )

2. Carregar pacotes e localizar as pastas do projeto

A etapa de visualização depende de um pequeno conjunto de pacotes para manipulação de dados, construção de figuras e formatação de tabelas. Ela também precisa localizar corretamente as pastas do projeto, porque os resumos gerados aqui devem ser gravados em caminhos de saída estáveis que depois podem ser reutilizados pelo site e por materiais orientados ao manuscrito.

Esta seção padroniza a raiz do projeto, localiza as pastas que contêm as saídas de predição e prepara os diretórios nos quais as tabelas e figuras finais serão gravadas.

rm(list = ls())
options(scipen = 999)
packages_needed <- c( "dplyr",
 "tidyr",
 "readr",
 "tibble",
 "ggplot2",
 "ggthemes",
 "knitr",
 "kableExtra",
  "stringr" )
packages_missing <- packages_needed[!(packages_needed %in% installed.packages()[, "Package"])]
if (length(packages_missing) > 0) {
  stop(
    paste0(
      "Os seguintes pacotes são necessários para este módulo, mas não estão instalados: ",
      paste(packages_missing, collapse = ", "),
      ". Instale-os antes de renderizar visualization_pt.Rmd."
    )
  )
}
library(dplyr)
library(tidyr)
library(readr)
library(tibble)
library(ggplot2)
library(ggthemes)
library(knitr)
library(kableExtra)
library(stringr)
project_root <- getwd()
if (!dir.exists(file.path(project_root, "output")) && dir.exists(file.path(project_root, "..", "output"))) {
  project_root <- normalizePath(file.path(project_root, ".."))
}
if (!dir.exists(file.path(project_root, "output"))) {
  stop("Não foi possível localizar a pasta 'output/'.\nExecute este script a partir da raiz do projeto ou de analysis/.")
}
results_dir <- file.path(project_root, "output", "results")
figures_dir <- file.path(project_root, "output", "figures")
tables_dir <- file.path(project_root, "output", "tables")
dir.create(figures_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(tables_dir, recursive = TRUE, showWarnings = FALSE)

3. Catálogo de modelos usado no pipeline reduzido

A etapa de visualização usa o mesmo catálogo reduzido de 18 modelos adotado no fluxo de predição. Aqui esse catálogo é reorganizado para que os resumos se tornem mais fáceis de interpretar em termos analíticos. Em vez de mostrar apenas números de modelo, a tabela enfatiza a via representada, a família de kernel utilizada e se a informação climática está presente.

Essa organização é importante porque as comparações mostradas mais adiante no documento não são arbitrárias. Elas foram desenhadas para ajudar o leitor a entender de onde vêm os ganhos preditivos e se esses ganhos estão associados à informação climática, à escolha do kernel ou à integração entre fontes genômicas e fenômicas.

model_catalog <- tibble( ModelNumber = c(1, 10, 3, 13, 5, 16, 2, 11, 4, 14, 6, 17, 7, 12, 8, 15, 9, 18),
 Model = paste0("Eta", c(1, 10, 3, 13, 5, 16, 2, 11, 4, 14, 6, 17, 7, 12, 8, 15, 9, 18)),
 Pathway = c( rep("Via genômica", 6), rep("Via fenômica", 6), rep("Via combinada G + P", 6) ),
 KernelFamily = c( "Linear", "Linear", "Gaussiano", "Gaussiano", "Arc-cosine", "Arc-cosine", "Linear", "Linear", "Gaussiano", "Gaussiano", "Arc-cosine", "Arc-cosine", "Linear", "Linear", "Gaussiano", "Gaussiano", "Arc-cosine", "Arc-cosine" ),
 WeatherStatus = c( "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W", "Sem W", "Com W" ),
 Group = c( "Base genômica", "Clima fonte única", "Base genômica", "Clima fonte única", "Base genômica", "Clima fonte única", "Base fenômica", "Clima fonte única", "Base fenômica", "Clima fonte única", "Base fenômica", "Clima fonte única", "Base combinada", "Clima combinado", "Base combinada", "Clima combinado", "Base combinada", "Clima combinado" ),
 Description = c( "Genômico linear + E", "Genômico linear + W", "Genômico Gaussiano + E", "Genômico Gaussiano + W", "Genômico arc-cosine + E", "Genômico arc-cosine + W", "Fenômico linear + E", "Fenômico linear + W", "Fenômico Gaussiano + E", "Fenômico Gaussiano + W", "Fenômico arc-cosine + E", "Fenômico arc-cosine + W", "Combinado linear + E", "Combinado linear + W", "Combinado Gaussiano + E", "Combinado Gaussiano + W", "Combinado arc-cosine + E", "Combinado arc-cosine + W" ),
  ShortDescription = c( "G + E", "G + W", "GGK + E", "GGK + W", "GAK + E", "GAK + W", "P + E", "P + W", "PGK + E", "PGK + W", "PAK + E", "PAK + W", "G+P + E", "G+P + W", "GGK+PGK + E", "GGK+PGK + W", "GAK+PAK + E", "GAK+PAK + W" ) )
model_catalog

4. Pares de comparação usados para contrastes entre com W e sem W

Uma pergunta central neste projeto é se adicionar o kernel climático (W) melhora a capacidade preditiva. Para responder a essa pergunta de forma justa, a comparação deve sempre ser feita entre modelos estruturalmente semelhantes e que diferem apenas pela inclusão da informação climática.

Os pares de comparação definidos abaixo fornecem exatamente essa estrutura. Eles são usados mais adiante para construir tabelas que quantificam quanto o desempenho preditivo muda quando W é introduzido dentro da mesma via e da mesma família de kernel.

comparison_pairs <- tibble( Comparison = c( "Genômico linear", "Genômico Gaussiano", "Genômico arc-cosine", "Fenômico linear", "Fenômico Gaussiano", "Fenômico arc-cosine", "Combinado linear", "Combinado Gaussiano", "Combinado arc-cosine" ),
 WithoutW = c("Eta1", "Eta3", "Eta5", "Eta2", "Eta4", "Eta6", "Eta7", "Eta8", "Eta9"),
  WithW = c("Eta10", "Eta13", "Eta16", "Eta11", "Eta14", "Eta17", "Eta12", "Eta15", "Eta18") )
comparison_pairs

5. Localizar arquivos de predição

O primeiro passo operacional da etapa de visualização é localizar os arquivos brutos de predição produzidos pelo módulo anterior. No padrão atual do pipeline, esses arquivos são gravados recursivamente em output/results/, com uma hierarquia explícita por esquema de validação, traço, repetição e fold.

Nesta etapa, o script lê a pasta de resultados de forma recursiva, mantém apenas os CSVs de predição armazenados dentro dos ramos estruturados CV1, CV2, CV0 e CV00, e ignora outros artefatos, como bglr_runs. Isso torna os resumos posteriores compatíveis com o novo contrato Rep/Fold e preserva a separação entre os problemas de validação baseados em genótipos e os problemas leave-one-environment-out.

all_result_rel_paths <- list.files(results_dir, pattern = "\\.csv$", full.names = FALSE, recursive = TRUE)
all_result_rel_paths <- gsub("\\\\", "/", all_result_rel_paths)
structured_idx <- grepl("^CV1/|^CV2/|^CV0/|^CV00/", all_result_rel_paths)
all_result_rel_paths <- all_result_rel_paths[structured_idx]
all_result_files <- file.path(results_dir, all_result_rel_paths)
cv12_idx <- grepl("^CV1/|^CV2/", all_result_rel_paths)
cvloo_idx <- grepl("^CV0/|^CV00/", all_result_rel_paths)
cv12_files <- all_result_files[cv12_idx]
cv12_rel_paths <- all_result_rel_paths[cv12_idx]
cvloo_files <- all_result_files[cvloo_idx]
cvloo_rel_paths <- all_result_rel_paths[cvloo_idx]
cat("Número de arquivos CV1/CV2:", length(cv12_files), "
")
cat("Número de arquivos CV0/CV00:", length(cvloo_files), "
")
if (length(cv12_files) == 0 && length(cvloo_files) == 0) {
  stop("Nenhum arquivo CSV de predição foi encontrado em output/results/.
Execute analysis_prediction_run_outputs primeiro.")
}

6. Ler os arquivos CV1 e CV2 gerados pelo script final de predição

Os arquivos CV1 e CV2 contêm as saídas brutas necessárias para resumir o desempenho preditivo quando o desafio é definido no eixo dos genótipos. No fluxo atual, repetição e fold ficam codificados tanto na hierarquia de pastas quanto no nome do arquivo, então o script reconstrói esses metadados explicitamente antes de montar os resumos.

Esse desenho é útil porque mantém o sistema de arquivos organizado para inspeção rápida e, ao mesmo tempo, permite que a etapa de visualização reconstrua tabelas unificadas ao longo de repetições e folds.

cv12_list <- vector("list", length(cv12_files))
for (i in seq_along(cv12_files)) {
  current_file <- cv12_files[i]
  current_rel_path <- cv12_rel_paths[i]
  path_parts <- strsplit(current_rel_path, "/")[[1]]

  if (length(path_parts) != 5) {
    stop(
      "Estrutura de diretórios inesperada para arquivo CV1/CV2: ",
      current_rel_path,
      ".
Padrão esperado: CV1/<trait>/repXX/foldXX/<file>.csv ou CV2/<trait>/repXX/foldXX/<file>.csv"
    )
  }

  current_cv <- path_parts[1]
  trait_from_path <- path_parts[2]
  rep_from_path <- as.numeric(gsub("^rep", "", path_parts[3]))
  fold_from_path <- as.numeric(gsub("^fold", "", path_parts[4]))

  file_name <- sub("\\.csv$", "", basename(current_file))
  file_parts <- strsplit(file_name, "_")[[1]]

  if (length(file_parts) != 5) {
    stop(
      "Nome de arquivo inesperado para CV1/CV2: ",
      file_name,
      ".
Padrão esperado: CV1_<trait>_Eta<model>_repXX_foldXX.csv ou CV2_<trait>_Eta<model>_repXX_foldXX.csv"
    )
  }

  current_trait <- file_parts[2]
  current_model_label <- file_parts[3]
  current_model_number <- as.numeric(gsub("^Eta", "", current_model_label))
  current_rep <- as.numeric(gsub("^rep", "", file_parts[4]))
  current_fold <- as.numeric(gsub("^fold", "", file_parts[5]))

  if (!identical(current_cv, file_parts[1]) || !identical(trait_from_path, current_trait) || !identical(rep_from_path, current_rep) || !identical(fold_from_path, current_fold)) {
    stop("Inconsistência entre metadados do caminho e do nome do arquivo em: ", current_rel_path)
  }

  current_data <- readr::read_csv(current_file, show_col_types = FALSE)

  if (!("Env" %in% names(current_data)) || !("cor" %in% names(current_data))) {
    stop(
      "Estrutura de colunas inesperada no arquivo: ",
      file_name,
      ".
O script final de predição deve exportar colunas incluindo Env e cor."
    )
  }

  current_data <- current_data %>%
    mutate(
      RelativePath = current_rel_path,
      Fold = current_fold,
      CV = current_cv,
      Trait = current_trait,
      ModelNumber = current_model_number,
      Model = current_model_label,
      Rep = current_rep
    )

  cv12_list[[i]] <- current_data
}

cv12_raw <- bind_rows(cv12_list) %>%
  left_join(model_catalog, by = c("ModelNumber", "Model"))

if (!("Runtime_sec" %in% names(cv12_raw))) cv12_raw$Runtime_sec <- NA_real_
readr::write_csv(cv12_raw, file.path(tables_dir, "prediction_cv1_cv2_raw.csv"))

7. Ler os arquivos CV0 e CV00 gerados pelo script final de predição

Os arquivos CV0 e CV00 representam os problemas de predição mais exigentes deste estudo porque envolvem um ambiente retirado do ajuste. No padrão atual do pipeline, o ambiente leave-one-environment-out é codificado tanto na hierarquia de pastas quanto no nome do arquivo, então o script reconstrói essa informação explicitamente antes de montar os resumos leave-one-environment-out.

Esta seção lê esses arquivos, verifica a consistência dos caminhos estruturados e prepara os metadados necessários para manter Env_leave explícito ao longo dos resumos.

cvloo_list <- vector("list", length(cvloo_files))
for (i in seq_along(cvloo_files)) {
  current_file <- cvloo_files[i]
  current_rel_path <- cvloo_rel_paths[i]
  path_parts <- strsplit(current_rel_path, "/")[[1]]

  if (length(path_parts) != 6) {
    stop(
      "Estrutura de diretórios inesperada para arquivo CV0/CV00: ",
      current_rel_path,
      ".
Padrão esperado: CV0/<Env_leave>/<trait>/repXX/foldXX/<file>.csv ou CV00/<Env_leave>/<trait>/repXX/foldXX/<file>.csv"
    )
  }

  current_cv <- path_parts[1]
  env_from_path <- path_parts[2]
  trait_from_path <- path_parts[3]
  rep_from_path <- as.numeric(gsub("^rep", "", path_parts[4]))
  fold_from_path <- as.numeric(gsub("^fold", "", path_parts[5]))

  file_name <- sub("\\.csv$", "", basename(current_file))
  file_parts <- strsplit(file_name, "_")[[1]]

  if (length(file_parts) < 6) {
    stop(
      "Nome de arquivo inesperado para CV0/CV00: ",
      file_name,
      ".
Padrão esperado: CV0_<trait>_<Env_leave>_Eta<model>_repXX_foldXX.csv ou CV00_<trait>_<Env_leave>_Eta<model>_repXX_foldXX.csv"
    )
  }

  current_trait <- file_parts[2]
  current_model_label <- file_parts[length(file_parts) - 2]
  current_model_number <- as.numeric(gsub("^Eta", "", current_model_label))
  current_rep <- as.numeric(gsub("^rep", "", file_parts[length(file_parts) - 1]))
  current_fold <- as.numeric(gsub("^fold", "", file_parts[length(file_parts)]))
  current_env_leave <- paste(file_parts[3:(length(file_parts) - 3)], collapse = "_")

  if (!identical(current_cv, file_parts[1]) || !identical(env_from_path, current_env_leave) || !identical(trait_from_path, current_trait) || !identical(rep_from_path, current_rep) || !identical(fold_from_path, current_fold)) {
    stop("Inconsistência entre metadados do caminho e do nome do arquivo em: ", current_rel_path)
  }

  current_data <- readr::read_csv(current_file, show_col_types = FALSE)

  if (!("Env" %in% names(current_data)) || !("cor" %in% names(current_data))) {
    stop(
      "Estrutura de colunas inesperada no arquivo: ",
      file_name,
      ".
O script final de predição deve exportar colunas incluindo Env e cor."
    )
  }

  current_data <- current_data %>%
    mutate(
      RelativePath = current_rel_path,
      Fold = current_fold,
      CV = current_cv,
      Trait = current_trait,
      Env_leave = current_env_leave,
      ModelNumber = current_model_number,
      Model = current_model_label,
      Rep = current_rep
    )

  cvloo_list[[i]] <- current_data
}
cvloo_raw <- bind_rows(cvloo_list) %>%
  left_join(model_catalog, by = c("ModelNumber", "Model"))
if (!("Runtime_sec" %in% names(cvloo_raw))) cvloo_raw$Runtime_sec <- NA_real_
readr::write_csv(cvloo_raw, file.path(tables_dir, "prediction_cv0_cv00_raw.csv"))
readr::write_csv(model_catalog, file.path(tables_dir, "prediction_model_catalog.csv"))

8. Resumir CV1 e CV2

Esta etapa constrói os resumos para CV1 e CV2 de forma sequencial: primeiro por ambiente e fold, depois por ambiente dentro da repetição, depois por repetição e finalmente por médias e desvios-padrão em nível de modelo ao longo das repetições.

cv12_env_fold <- cv12_raw %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
   Rep,
   Fold,
    Env ) %>%
  summarise( EnvCorrelation = mean(cor, na.rm = TRUE),
   ValidationCount = sum(!is.na(cor)),
   MeanRuntimeSec = mean(Runtime_sec, na.rm = TRUE),
    .groups = "drop" ) %>%
  mutate( EnvCorrelation = ifelse(is.nan(EnvCorrelation), NA_real_, EnvCorrelation),
    MeanRuntimeSec = ifelse(is.nan(MeanRuntimeSec), NA_real_, MeanRuntimeSec) ) %>%
  filter(!is.na(EnvCorrelation), ValidationCount > 0)
cv12_env_rep <- cv12_env_fold %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
   Rep,
    Env ) %>%
  summarise( EnvCorrelation = weighted.mean(EnvCorrelation, w = ValidationCount, na.rm = TRUE),
   ValidationCount = sum(ValidationCount, na.rm = TRUE),
   MeanRuntimeSec = mean(MeanRuntimeSec, na.rm = TRUE),
    .groups = "drop" )
cv12_rep_summary <- cv12_env_rep %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
    Rep ) %>%
  summarise( WeightedCorrelation = weighted.mean(EnvCorrelation, w = ValidationCount, na.rm = TRUE),
   MeanRuntimeSec = mean(MeanRuntimeSec, na.rm = TRUE),
    .groups = "drop" )
cv12_summary <- cv12_rep_summary %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
    CV ) %>%
  summarise( MeanCorrelation = mean(WeightedCorrelation, na.rm = TRUE),
   SDCorrelation = sd(WeightedCorrelation, na.rm = TRUE),
   NumberOfRepetitions = n(),
   MeanRuntimeSec = mean(MeanRuntimeSec, na.rm = TRUE),
    .groups = "drop" ) %>%
  mutate( SDCorrelation = ifelse(is.na(SDCorrelation), 0, SDCorrelation) )
readr::write_csv(cv12_env_fold, file.path(tables_dir, "prediction_cv1_cv2_by_rep_fold_env.csv"))
readr::write_csv(cv12_env_rep, file.path(tables_dir, "prediction_cv1_cv2_by_rep_env.csv"))
readr::write_csv(cv12_rep_summary, file.path(tables_dir, "prediction_cv1_cv2_by_rep.csv"))
readr::write_csv(cv12_summary, file.path(tables_dir, "prediction_cv1_cv2_summary.csv"))

9. Resumir CV0 e CV00

Para cenários leave-one-environment-out, o script primeiro restringe os resumos às linhas em que Env == Env_leave. Isso mantém apenas o componente do ambiente deixado de fora que é conceitualmente relevante para CV0 e CV00.

cvloo_env_filtered <- cvloo_raw %>%
  filter(Env == Env_leave)
cvloo_env_fold <- cvloo_env_filtered %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
   Env_leave,
   Rep,
   Fold,
    Env ) %>%
  summarise( LOEOCorrelation = mean(cor, na.rm = TRUE),
   ValidationCount = sum(!is.na(cor)),
   MeanRuntimeSec = mean(Runtime_sec, na.rm = TRUE),
    .groups = "drop" ) %>%
  mutate( LOEOCorrelation = ifelse(is.nan(LOEOCorrelation), NA_real_, LOEOCorrelation),
    MeanRuntimeSec = ifelse(is.nan(MeanRuntimeSec), NA_real_, MeanRuntimeSec) ) %>%
  filter(!is.na(LOEOCorrelation), ValidationCount > 0)
cvloo_rep_summary <- cvloo_env_fold %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
   Env_leave,
    Rep ) %>%
  summarise( LOEOCorrelation = weighted.mean(LOEOCorrelation, w = ValidationCount, na.rm = TRUE),
   ValidationCount = sum(ValidationCount, na.rm = TRUE),
   MeanRuntimeSec = mean(MeanRuntimeSec, na.rm = TRUE),
    .groups = "drop" )
cvloo_summary <- cvloo_rep_summary %>%
  group_by( ModelNumber,
   Model,
   Group,
   Pathway,
   KernelFamily,
   WeatherStatus,
   Description,
   ShortDescription,
   Trait,
   CV,
    Env_leave ) %>%
  summarise( MeanCorrelation = mean(LOEOCorrelation, na.rm = TRUE),
   SDCorrelation = sd(LOEOCorrelation, na.rm = TRUE),
   NumberOfRuns = n(),
   MeanRuntimeSec = mean(MeanRuntimeSec, na.rm = TRUE),
    .groups = "drop" ) %>%
  mutate( SDCorrelation = ifelse(is.na(SDCorrelation), 0, SDCorrelation) )
readr::write_csv(cvloo_env_fold, file.path(tables_dir, "prediction_cv0_cv00_by_rep_fold_env.csv"))
readr::write_csv(cvloo_rep_summary, file.path(tables_dir, "prediction_cv0_cv00_by_run.csv"))
readr::write_csv(cvloo_summary, file.path(tables_dir, "prediction_cv0_cv00_summary.csv"))

10. Tabelas de comparação

Esta seção deriva tabelas analíticas secundárias, especialmente o contraste entre modelos com e sem W e a comparação entre famílias de kernel dentro de cada via.

cv12_w_effect <- comparison_pairs %>%
  left_join( cv12_summary %>% select(Trait, CV, Model, MeanCorrelation, SDCorrelation),
    by = c("WithoutW" = "Model") ) %>%
  rename( MeanWithoutW = MeanCorrelation, SDWithoutW = SDCorrelation ) %>%
  left_join( cv12_summary %>% select(Trait, CV, Model, MeanCorrelation, SDCorrelation),
    by = c("WithW" = "Model", "Trait", "CV") ) %>%
  rename( MeanWithW = MeanCorrelation, SDWithW = SDCorrelation ) %>%
  mutate( DeltaWithW = MeanWithW - MeanWithoutW ) %>%
  arrange(Trait, CV, Comparison)
cvloo_w_effect <- comparison_pairs %>%
  left_join( cvloo_summary %>% select(Trait, CV, Env_leave, Model, MeanCorrelation, SDCorrelation),
    by = c("WithoutW" = "Model") ) %>%
  rename( MeanWithoutW = MeanCorrelation, SDWithoutW = SDCorrelation ) %>%
  left_join( cvloo_summary %>% select(Trait, CV, Env_leave, Model, MeanCorrelation, SDCorrelation),
    by = c("WithW" = "Model", "Trait", "CV", "Env_leave") ) %>%
  rename( MeanWithW = MeanCorrelation, SDWithW = SDCorrelation ) %>%
  mutate( DeltaWithW = MeanWithW - MeanWithoutW ) %>%
  arrange(Trait, CV, Env_leave, Comparison)
cv12_kernel_family_compare <- cv12_summary %>%
  select(Trait, CV, Pathway, WeatherStatus, KernelFamily, MeanCorrelation) %>%
  pivot_wider(names_from = KernelFamily, values_from = MeanCorrelation) %>%
  mutate( Delta_Gaussian_vs_Linear = Gaussian - Linear,
   Delta_ArcCos_vs_Linear = `Arc-cosine` - Linear,
    Delta_ArcCos_vs_Gaussian = `Arc-cosine` - Gaussian ) %>%
  arrange(Trait, CV, Pathway, WeatherStatus)
cvloo_kernel_family_compare <- cvloo_summary %>%
  select(Trait, CV, Env_leave, Pathway, WeatherStatus, KernelFamily, MeanCorrelation) %>%
  pivot_wider(names_from = KernelFamily, values_from = MeanCorrelation) %>%
  mutate( Delta_Gaussian_vs_Linear = Gaussian - Linear,
   Delta_ArcCos_vs_Linear = `Arc-cosine` - Linear,
    Delta_ArcCos_vs_Gaussian = `Arc-cosine` - Gaussian ) %>%
  arrange(Trait, CV, Env_leave, Pathway, WeatherStatus)
readr::write_csv(cv12_w_effect, file.path(tables_dir, "prediction_cv1_cv2_w_effect_pairs.csv"))
readr::write_csv(cvloo_w_effect, file.path(tables_dir, "prediction_cv0_cv00_w_effect_pairs.csv"))
readr::write_csv(cv12_kernel_family_compare,
  file.path(tables_dir, "prediction_cv1_cv2_kernel_family_compare.csv"))
readr::write_csv(cvloo_kernel_family_compare,
  file.path(tables_dir, "prediction_cv0_cv00_kernel_family_compare.csv"))

11. Tabelas compactas de display

Esses objetos são versões simplificadas dos resumos completos. Eles são úteis para tabelas do manuscrito, material suplementar e inspeção rápida dos modelos com melhor desempenho.

cv12_table_display <- cv12_summary %>%
  arrange(Trait, CV, Pathway, KernelFamily, WeatherStatus) %>%
  mutate( MeanCorrelation = round(MeanCorrelation, 3),
   SDCorrelation = round(SDCorrelation, 3),
    MeanRuntimeSec = round(MeanRuntimeSec, 2) ) %>%
  select( Trait,
   CV,
   Pathway,
   KernelFamily,
   WeatherStatus,
   ShortDescription,
   MeanCorrelation,
   SDCorrelation,
   NumberOfRepetitions,
    MeanRuntimeSec )
cvloo_table_display <- cvloo_summary %>%
  arrange(Trait, CV, Env_leave, Pathway, KernelFamily, WeatherStatus) %>%
  mutate( MeanCorrelation = round(MeanCorrelation, 3),
   SDCorrelation = round(SDCorrelation, 3),
    MeanRuntimeSec = round(MeanRuntimeSec, 2) ) %>%
  select( Trait,
   CV,
   Env_leave,
   Pathway,
   KernelFamily,
   WeatherStatus,
   ShortDescription,
   MeanCorrelation,
   SDCorrelation,
   NumberOfRuns,
    MeanRuntimeSec )
cv12_top3 <- cv12_summary %>%
  group_by(Trait, CV) %>%
  slice_max(order_by = MeanCorrelation, n = 3, with_ties = FALSE) %>%
  ungroup() %>%
  mutate( MeanCorrelation = round(MeanCorrelation, 3), SDCorrelation = round(SDCorrelation, 3) ) %>%
  select(Trait, CV, ShortDescription, MeanCorrelation, SDCorrelation)
cvloo_top3 <- cvloo_summary %>%
  group_by(Trait, CV, Env_leave) %>%
  slice_max(order_by = MeanCorrelation, n = 3, with_ties = FALSE) %>%
  ungroup() %>%
  mutate( MeanCorrelation = round(MeanCorrelation, 3), SDCorrelation = round(SDCorrelation, 3) ) %>%
  select(Trait, CV, Env_leave, ShortDescription, MeanCorrelation, SDCorrelation)
readr::write_csv(cv12_table_display, file.path(tables_dir, "prediction_cv1_cv2_display_table.csv"))
readr::write_csv(cvloo_table_display, file.path(tables_dir, "prediction_cv0_cv00_display_table.csv"))
readr::write_csv(cv12_top3, file.path(tables_dir, "prediction_cv1_cv2_top3.csv"))
readr::write_csv(cvloo_top3, file.path(tables_dir, "prediction_cv0_cv00_top3.csv"))

12. Tabelas Top-3

As duas tabelas seguintes exibem os três modelos com melhor desempenho em cada esquema de validação.

cv12_top3 %>%
  knitr::kable( caption = "Top 3 modelos para cada traço e esquema de validação em CV1 e CV2.",
    align = "llccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" )
Top 3 modelos para cada traço e esquema de validação em CV1 e CV2.
Trait CV ShortDescription MeanCorrelation SDCorrelation
GY CV1 GGK + W 0.727 0.012
GY CV1 G + W 0.725 0.011
GY CV1 GGK+PGK + W 0.723 0.011
GY CV2 GGK+PGK + W 0.991 0.000
GY CV2 GGK+PGK + E 0.989 0.000
GY CV2 G + W 0.984 0.000
KW CV1 P + E 0.762 0.010
KW CV1 P + W 0.761 0.005
KW CV1 G+P + E 0.728 0.015
KW CV2 G+P + W 0.994 0.001
KW CV2 GGK+PGK + W 0.994 0.000
KW CV2 G+P + E 0.994 0.000
cvloo_top3 %>%
  knitr::kable( caption = "Top 3 modelos para cada traço, esquema de validação e ambiente deixado de fora em CV0 e CV00.",
    align = "lllccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" )
Top 3 modelos para cada traço, esquema de validação e ambiente deixado de fora em CV0 e CV00.
Trait CV Env_leave ShortDescription MeanCorrelation SDCorrelation
GY CV0 CS11_WS GAK + E 0.926 0.000
GY CV0 CS11_WS GAK + W 0.924 0.003
GY CV0 CS11_WS GGK + E 0.923 0.000
GY CV0 CS11_WW GGK + W 0.896 0.000
GY CV0 CS11_WW G + W 0.896 0.000
GY CV0 CS11_WW GGK + E 0.894 0.001
GY CV0 CS12_WS GGK + E 0.896 0.001
GY CV0 CS12_WS G + E 0.894 0.001
GY CV0 CS12_WS GGK + W 0.893 0.001
GY CV0 CS12_WW G + W 0.909 0.000
GY CV0 CS12_WW GGK + W 0.907 0.000
GY CV0 CS12_WW G + E 0.904 0.001
GY CV00 CS11_WS GAK + W 0.735 0.014
GY CV00 CS11_WS GAK + E 0.732 0.013
GY CV00 CS11_WS G + W 0.720 0.016
GY CV00 CS11_WW G + E 0.741 0.010
GY CV00 CS11_WW GGK + W 0.740 0.013
GY CV00 CS11_WW G + W 0.738 0.012
GY CV00 CS12_WS GGK + W 0.734 0.007
GY CV00 CS12_WS G + W 0.733 0.007
GY CV00 CS12_WS GGK + E 0.730 0.011
GY CV00 CS12_WW GGK+PGK + W 0.714 0.013
GY CV00 CS12_WW GGK + W 0.713 0.009
GY CV00 CS12_WW G + W 0.710 0.008
KW CV0 CS11_WS GAK + E 0.961 0.000
KW CV0 CS11_WS GGK + E 0.960 0.000
KW CV0 CS11_WS G + E 0.960 0.000
KW CV0 CS11_WW G + W 0.889 0.000
KW CV0 CS11_WW GGK+PGK + W 0.888 0.001
KW CV0 CS11_WW GGK + W 0.887 0.001
KW CV0 CS12_WS GGK + W 0.899 0.001
KW CV0 CS12_WS GGK + E 0.898 0.001
KW CV0 CS12_WS G + W 0.897 0.001
KW CV0 CS12_WW GGK + W 0.949 0.000
KW CV0 CS12_WW GGK+PGK + W 0.948 0.000
KW CV0 CS12_WW G + W 0.948 0.000
KW CV00 CS11_WS P + E 0.662 0.074
KW CV00 CS11_WS G+P + E 0.654 0.036
KW CV00 CS11_WS P + W 0.624 0.068
KW CV00 CS11_WW P + E 0.656 0.054
KW CV00 CS11_WW GGK + W 0.567 0.023
KW CV00 CS11_WW GGK+PGK + E 0.566 0.021
KW CV00 CS12_WS GGK+PGK + E 0.619 0.013
KW CV00 CS12_WS GGK + E 0.616 0.017
KW CV00 CS12_WS G + W 0.613 0.009
KW CV00 CS12_WW P + E 0.640 0.061
KW CV00 CS12_WW G+P + E 0.636 0.041
KW CV00 CS12_WW GGK+PGK + E 0.617 0.010

13. Tabelas do efeito de W

Essas tabelas apresentam as comparações pareadas entre modelos sem e com informação climática.

cv12_w_effect %>%
  mutate( MeanWithoutW = round(MeanWithoutW, 3),
   MeanWithW = round(MeanWithW, 3),
    DeltaWithW = round(DeltaWithW, 3) ) %>%
  knitr::kable( caption = "Comparação pareada entre modelos sem e com o kernel climático (W) em CV1 e CV2.",
    align = "lllccccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" ) %>%
  kableExtra::scroll_box(width = "100%", height = "320px")
Comparação pareada entre modelos sem e com o kernel climático (W) em CV1 e CV2.
Comparison WithoutW WithW Trait CV MeanWithoutW SDWithoutW MeanWithW SDWithW DeltaWithW
Combinado Gaussiano Eta8 Eta15 GY CV1 0.717 0.0117158 0.723 0.0112130 0.006
Combinado arc-cosine Eta9 Eta18 GY CV1 0.703 0.0100091 0.706 0.0087728 0.003
Combinado linear Eta7 Eta12 GY CV1 0.713 0.0134212 0.719 0.0124435 0.006
Genômico Gaussiano Eta3 Eta13 GY CV1 0.719 0.0106337 0.727 0.0120687 0.008
Genômico arc-cosine Eta5 Eta16 GY CV1 0.711 0.0065960 0.714 0.0083470 0.002
Genômico linear Eta1 Eta10 GY CV1 0.719 0.0128201 0.725 0.0109925 0.005
Fenômico Gaussiano Eta4 Eta14 GY CV1 0.134 0.0274657 0.147 0.0191283 0.013
Fenômico arc-cosine Eta6 Eta17 GY CV1 0.178 0.0296188 0.177 0.0380569 -0.001
Fenômico linear Eta2 Eta11 GY CV1 0.645 0.0121966 0.637 0.0196734 -0.008
Combinado Gaussiano Eta8 Eta15 GY CV2 0.989 0.0001216 0.991 0.0000983 0.002
Combinado arc-cosine Eta9 Eta18 GY CV2 0.966 0.0004052 0.970 0.0005673 0.004
Combinado linear Eta7 Eta12 GY CV2 0.980 0.0002151 0.982 0.0001190 0.002
Genômico Gaussiano Eta3 Eta13 GY CV2 0.973 0.0001704 0.974 0.0001302 0.001
Genômico arc-cosine Eta5 Eta16 GY CV2 0.964 0.0005435 0.968 0.0003975 0.004
Genômico linear Eta1 Eta10 GY CV2 0.982 0.0001184 0.984 0.0001054 0.002
Fenômico Gaussiano Eta4 Eta14 GY CV2 0.945 0.0015159 0.949 0.0012284 0.004
Fenômico arc-cosine Eta6 Eta17 GY CV2 0.695 0.0090873 0.692 0.0137389 -0.003
Fenômico linear Eta2 Eta11 GY CV2 0.967 0.0067725 0.933 0.0773312 -0.034
Combinado Gaussiano Eta8 Eta15 KW CV1 0.603 0.0099057 0.595 0.0156243 -0.008
Combinado arc-cosine Eta9 Eta18 KW CV1 0.555 0.0239686 0.548 0.0173955 -0.007
Combinado linear Eta7 Eta12 KW CV1 0.728 0.0145741 0.708 0.0150303 -0.019
Genômico Gaussiano Eta3 Eta13 KW CV1 0.602 0.0147757 0.595 0.0149952 -0.006
Genômico arc-cosine Eta5 Eta16 KW CV1 0.555 0.0199137 0.555 0.0168190 0.000
Genômico linear Eta1 Eta10 KW CV1 0.585 0.0151765 0.594 0.0179071 0.009
Fenômico Gaussiano Eta4 Eta14 KW CV1 0.218 0.0160546 0.203 0.0203866 -0.015
Fenômico arc-cosine Eta6 Eta17 KW CV1 0.271 0.0271355 0.243 0.0285264 -0.028
Fenômico linear Eta2 Eta11 KW CV1 0.762 0.0099625 0.761 0.0053242 0.000
Combinado Gaussiano Eta8 Eta15 KW CV2 0.993 0.0000316 0.994 0.0000388 0.001
Combinado arc-cosine Eta9 Eta18 KW CV2 0.977 0.0002182 0.978 0.0008926 0.001
Combinado linear Eta7 Eta12 KW CV2 0.994 0.0002515 0.994 0.0005010 0.000
Genômico Gaussiano Eta3 Eta13 KW CV2 0.982 0.0001168 0.983 0.0001170 0.001
Genômico arc-cosine Eta5 Eta16 KW CV2 0.974 0.0001071 0.975 0.0003408 0.001
Genômico linear Eta1 Eta10 KW CV2 0.989 0.0000573 0.990 0.0000506 0.001
Fenômico Gaussiano Eta4 Eta14 KW CV2 0.955 0.0008444 0.958 0.0010135 0.003
Fenômico arc-cosine Eta6 Eta17 KW CV2 0.772 0.0028779 0.771 0.0079429 -0.001
Fenômico linear Eta2 Eta11 KW CV2 0.989 0.0011764 0.986 0.0042936 -0.003
cvloo_w_effect %>%
  mutate( MeanWithoutW = round(MeanWithoutW, 3),
   MeanWithW = round(MeanWithW, 3),
    DeltaWithW = round(DeltaWithW, 3) ) %>%
  knitr::kable( caption = "Comparação pareada entre modelos sem e com o kernel climático (W) em CV0 e CV00.",
    align = "llllccccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" ) %>%
  kableExtra::scroll_box(width = "100%", height = "320px")
Comparação pareada entre modelos sem e com o kernel climático (W) em CV0 e CV00.
Comparison WithoutW WithW Trait CV Env_leave MeanWithoutW SDWithoutW MeanWithW SDWithW DeltaWithW
Combinado Gaussiano Eta8 Eta15 GY CV0 CS11_WS 0.922 0.0006408 0.921 0.0005517 -0.001
Combinado arc-cosine Eta9 Eta18 GY CV0 CS11_WS 0.915 0.0064663 0.906 0.0159762 -0.008
Combinado linear Eta7 Eta12 GY CV0 CS11_WS 0.884 0.0160582 0.878 0.0198771 -0.006
Genômico Gaussiano Eta3 Eta13 GY CV0 CS11_WS 0.923 0.0004691 0.922 0.0003833 0.000
Genômico arc-cosine Eta5 Eta16 GY CV0 CS11_WS 0.926 0.0002212 0.924 0.0031137 -0.001
Genômico linear Eta1 Eta10 GY CV0 CS11_WS 0.921 0.0005552 0.916 0.0004999 -0.005
Fenômico Gaussiano Eta4 Eta14 GY CV0 CS11_WS 0.460 0.0046790 0.434 0.0085978 -0.026
Fenômico arc-cosine Eta6 Eta17 GY CV0 CS11_WS 0.421 0.0327846 0.398 0.0327840 -0.022
Fenômico linear Eta2 Eta11 GY CV0 CS11_WS 0.740 0.0417897 0.600 0.0937367 -0.140
Combinado Gaussiano Eta8 Eta15 GY CV0 CS11_WW 0.889 0.0007587 0.891 0.0012022 0.002
Combinado arc-cosine Eta9 Eta18 GY CV0 CS11_WW 0.848 0.0282177 0.850 0.0307368 0.003
Combinado linear Eta7 Eta12 GY CV0 CS11_WW 0.822 0.0652425 0.778 0.0747105 -0.043
Genômico Gaussiano Eta3 Eta13 GY CV0 CS11_WW 0.894 0.0005965 0.896 0.0004316 0.002
Genômico arc-cosine Eta5 Eta16 GY CV0 CS11_WW 0.885 0.0005851 0.886 0.0031297 0.000
Genômico linear Eta1 Eta10 GY CV0 CS11_WW 0.893 0.0005283 0.896 0.0004761 0.002
Fenômico Gaussiano Eta4 Eta14 GY CV0 CS11_WW 0.323 0.0079081 0.318 0.0074471 -0.005
Fenômico arc-cosine Eta6 Eta17 GY CV0 CS11_WW 0.310 0.0198619 0.275 0.0443295 -0.034
Fenômico linear Eta2 Eta11 GY CV0 CS11_WW 0.615 0.1492622 0.578 0.1292014 -0.038
Combinado Gaussiano Eta8 Eta15 GY CV0 CS12_WS 0.889 0.0008715 0.884 0.0007198 -0.005
Combinado arc-cosine Eta9 Eta18 GY CV0 CS12_WS 0.861 0.0164014 0.855 0.0214819 -0.006
Combinado linear Eta7 Eta12 GY CV0 CS12_WS 0.794 0.0574106 0.765 0.0375478 -0.029
Genômico Gaussiano Eta3 Eta13 GY CV0 CS12_WS 0.896 0.0007279 0.893 0.0011026 -0.003
Genômico arc-cosine Eta5 Eta16 GY CV0 CS12_WS 0.884 0.0006309 0.883 0.0006255 0.000
Genômico linear Eta1 Eta10 GY CV0 CS12_WS 0.894 0.0011375 0.885 0.0006739 -0.010
Fenômico Gaussiano Eta4 Eta14 GY CV0 CS12_WS 0.342 0.0078015 0.323 0.0078257 -0.020
Fenômico arc-cosine Eta6 Eta17 GY CV0 CS12_WS 0.273 0.0322555 0.257 0.0491397 -0.016
Fenômico linear Eta2 Eta11 GY CV0 CS12_WS 0.634 0.0757856 0.454 0.1025718 -0.180
Combinado Gaussiano Eta8 Eta15 GY CV0 CS12_WW 0.902 0.0005695 0.904 0.0004415 0.002
Combinado arc-cosine Eta9 Eta18 GY CV0 CS12_WW 0.892 0.0095946 0.894 0.0083430 0.003
Combinado linear Eta7 Eta12 GY CV0 CS12_WW 0.881 0.0134864 0.887 0.0098103 0.006
Genômico Gaussiano Eta3 Eta13 GY CV0 CS12_WW 0.904 0.0004100 0.907 0.0004159 0.004
Genômico arc-cosine Eta5 Eta16 GY CV0 CS12_WW 0.902 0.0004584 0.904 0.0005408 0.002
Genômico linear Eta1 Eta10 GY CV0 CS12_WW 0.904 0.0005270 0.909 0.0004207 0.005
Fenômico Gaussiano Eta4 Eta14 GY CV0 CS12_WW 0.359 0.0074689 0.350 0.0064624 -0.009
Fenômico arc-cosine Eta6 Eta17 GY CV0 CS12_WW 0.347 0.0265095 0.332 0.0285925 -0.015
Fenômico linear Eta2 Eta11 GY CV0 CS12_WW 0.592 0.1219799 0.512 0.1222827 -0.081
Combinado Gaussiano Eta8 Eta15 GY CV00 CS11_WS 0.719 0.0156232 0.716 0.0232356 -0.003
Combinado arc-cosine Eta9 Eta18 GY CV00 CS11_WS 0.702 0.0164750 0.715 0.0144928 0.014
Combinado linear Eta7 Eta12 GY CV00 CS11_WS 0.666 0.0336890 0.677 0.0357095 0.011
Genômico Gaussiano Eta3 Eta13 GY CV00 CS11_WS 0.717 0.0210367 0.716 0.0249825 -0.002
Genômico arc-cosine Eta5 Eta16 GY CV00 CS11_WS 0.732 0.0133004 0.735 0.0139247 0.003
Genômico linear Eta1 Eta10 GY CV00 CS11_WS 0.710 0.0164292 0.720 0.0158158 0.011
Fenômico Gaussiano Eta4 Eta14 GY CV00 CS11_WS 0.192 0.0265772 0.207 0.0534662 0.014
Fenômico arc-cosine Eta6 Eta17 GY CV00 CS11_WS 0.176 0.0470906 0.160 0.0463932 -0.017
Fenômico linear Eta2 Eta11 GY CV00 CS11_WS 0.547 0.0547123 0.468 0.0727954 -0.079
Combinado Gaussiano Eta8 Eta15 GY CV00 CS11_WW 0.734 0.0147333 0.734 0.0146172 0.000
Combinado arc-cosine Eta9 Eta18 GY CV00 CS11_WW 0.648 0.0420356 0.643 0.0355772 -0.005
Combinado linear Eta7 Eta12 GY CV00 CS11_WW 0.664 0.0551344 0.597 0.0889922 -0.067
Genômico Gaussiano Eta3 Eta13 GY CV00 CS11_WW 0.738 0.0106728 0.740 0.0125027 0.003
Genômico arc-cosine Eta5 Eta16 GY CV00 CS11_WW 0.724 0.0092225 0.725 0.0099241 0.000
Genômico linear Eta1 Eta10 GY CV00 CS11_WW 0.741 0.0102739 0.738 0.0121891 -0.002
Fenômico Gaussiano Eta4 Eta14 GY CV00 CS11_WW 0.167 0.0334714 0.192 0.0319594 0.025
Fenômico arc-cosine Eta6 Eta17 GY CV00 CS11_WW 0.128 0.0454014 0.126 0.0436496 -0.002
Fenômico linear Eta2 Eta11 GY CV00 CS11_WW 0.444 0.1253345 0.453 0.1196363 0.009
Combinado Gaussiano Eta8 Eta15 GY CV00 CS12_WS 0.722 0.0106525 0.727 0.0110813 0.005
Combinado arc-cosine Eta9 Eta18 GY CV00 CS12_WS 0.624 0.0366770 0.620 0.0290091 -0.004
Combinado linear Eta7 Eta12 GY CV00 CS12_WS 0.617 0.0577406 0.598 0.0459783 -0.019
Genômico Gaussiano Eta3 Eta13 GY CV00 CS12_WS 0.730 0.0105024 0.734 0.0068753 0.004
Genômico arc-cosine Eta5 Eta16 GY CV00 CS12_WS 0.693 0.0081952 0.690 0.0113171 -0.003
Genômico linear Eta1 Eta10 GY CV00 CS12_WS 0.725 0.0120592 0.733 0.0073064 0.008
Fenômico Gaussiano Eta4 Eta14 GY CV00 CS12_WS 0.132 0.0265251 0.129 0.0316274 -0.003
Fenômico arc-cosine Eta6 Eta17 GY CV00 CS12_WS 0.086 0.0531555 0.101 0.0517042 0.015
Fenômico linear Eta2 Eta11 GY CV00 CS12_WS 0.517 0.0691137 0.369 0.1174927 -0.148
Combinado Gaussiano Eta8 Eta15 GY CV00 CS12_WW 0.706 0.0153052 0.714 0.0127669 0.008
Combinado arc-cosine Eta9 Eta18 GY CV00 CS12_WW 0.656 0.0155661 0.656 0.0259759 0.000
Combinado linear Eta7 Eta12 GY CV00 CS12_WW 0.674 0.0268594 0.672 0.0388784 -0.001
Genômico Gaussiano Eta3 Eta13 GY CV00 CS12_WW 0.701 0.0098703 0.713 0.0086880 0.012
Genômico arc-cosine Eta5 Eta16 GY CV00 CS12_WW 0.691 0.0100686 0.682 0.0124059 -0.008
Genômico linear Eta1 Eta10 GY CV00 CS12_WW 0.696 0.0179032 0.710 0.0075409 0.013
Fenômico Gaussiano Eta4 Eta14 GY CV00 CS12_WW 0.119 0.0317911 0.114 0.0242938 -0.005
Fenômico arc-cosine Eta6 Eta17 GY CV00 CS12_WW 0.098 0.0427283 0.096 0.0740510 -0.002
Fenômico linear Eta2 Eta11 GY CV00 CS12_WW 0.410 0.1100689 0.386 0.0734259 -0.024
Combinado Gaussiano Eta8 Eta15 KW CV0 CS11_WS 0.959 0.0004251 0.955 0.0004242 -0.004
Combinado arc-cosine Eta9 Eta18 KW CV0 CS11_WS 0.952 0.0060164 0.934 0.0117906 -0.018
Combinado linear Eta7 Eta12 KW CV0 CS11_WS 0.928 0.0303599 0.904 0.0373431 -0.025
Genômico Gaussiano Eta3 Eta13 KW CV0 CS11_WS 0.960 0.0001845 0.953 0.0003107 -0.008
Genômico arc-cosine Eta5 Eta16 KW CV0 CS11_WS 0.961 0.0001712 0.955 0.0059577 -0.006
Genômico linear Eta1 Eta10 KW CV0 CS11_WS 0.960 0.0003318 0.945 0.0003220 -0.015
Fenômico Gaussiano Eta4 Eta14 KW CV0 CS11_WS 0.488 0.0064600 0.459 0.0053104 -0.029
Fenômico arc-cosine Eta6 Eta17 KW CV0 CS11_WS 0.514 0.0207448 0.529 0.0219561 0.015
Fenômico linear Eta2 Eta11 KW CV0 CS11_WS 0.800 0.0569121 0.708 0.0720481 -0.093
Combinado Gaussiano Eta8 Eta15 KW CV0 CS11_WW 0.886 0.0008546 0.888 0.0008502 0.002
Combinado arc-cosine Eta9 Eta18 KW CV0 CS11_WW 0.855 0.0194615 0.850 0.0175722 -0.005
Combinado linear Eta7 Eta12 KW CV0 CS11_WW 0.829 0.0365791 0.780 0.0736196 -0.048
Genômico Gaussiano Eta3 Eta13 KW CV0 CS11_WW 0.885 0.0011692 0.887 0.0010117 0.002
Genômico arc-cosine Eta5 Eta16 KW CV0 CS11_WW 0.874 0.0006841 0.873 0.0064145 -0.002
Genômico linear Eta1 Eta10 KW CV0 CS11_WW 0.885 0.0011861 0.889 0.0003511 0.004
Fenômico Gaussiano Eta4 Eta14 KW CV0 CS11_WW 0.331 0.0051097 0.327 0.0063766 -0.004
Fenômico arc-cosine Eta6 Eta17 KW CV0 CS11_WW 0.399 0.0311944 0.429 0.0314922 0.029
Fenômico linear Eta2 Eta11 KW CV0 CS11_WW 0.787 0.0671637 0.591 0.1578071 -0.196
Combinado Gaussiano Eta8 Eta15 KW CV0 CS12_WS 0.894 0.0011841 0.894 0.0009434 0.001
Combinado arc-cosine Eta9 Eta18 KW CV0 CS12_WS 0.860 0.0250670 0.880 0.0136477 0.020
Combinado linear Eta7 Eta12 KW CV0 CS12_WS 0.797 0.0640268 0.816 0.0478818 0.018
Genômico Gaussiano Eta3 Eta13 KW CV0 CS12_WS 0.898 0.0011057 0.899 0.0005593 0.001
Genômico arc-cosine Eta5 Eta16 KW CV0 CS12_WS 0.888 0.0005409 0.889 0.0010068 0.001
Genômico linear Eta1 Eta10 KW CV0 CS12_WS 0.896 0.0008220 0.897 0.0010396 0.001
Fenômico Gaussiano Eta4 Eta14 KW CV0 CS12_WS 0.410 0.0043472 0.400 0.0055684 -0.010
Fenômico arc-cosine Eta6 Eta17 KW CV0 CS12_WS 0.385 0.0316524 0.407 0.0309957 0.022
Fenômico linear Eta2 Eta11 KW CV0 CS12_WS 0.735 0.0917405 0.638 0.1303465 -0.097
Combinado Gaussiano Eta8 Eta15 KW CV0 CS12_WW 0.947 0.0004264 0.948 0.0003331 0.001
Combinado arc-cosine Eta9 Eta18 KW CV0 CS12_WW 0.938 0.0061385 0.935 0.0105933 -0.003
Combinado linear Eta7 Eta12 KW CV0 CS12_WW 0.922 0.0305936 0.928 0.0256338 0.006
Genômico Gaussiano Eta3 Eta13 KW CV0 CS12_WW 0.947 0.0002290 0.949 0.0002453 0.002
Genômico arc-cosine Eta5 Eta16 KW CV0 CS12_WW 0.947 0.0002183 0.946 0.0021284 -0.001
Genômico linear Eta1 Eta10 KW CV0 CS12_WW 0.947 0.0002957 0.948 0.0003126 0.002
Fenômico Gaussiano Eta4 Eta14 KW CV0 CS12_WW 0.431 0.0074450 0.429 0.0085145 -0.003
Fenômico arc-cosine Eta6 Eta17 KW CV0 CS12_WW 0.514 0.0186631 0.504 0.0290988 -0.010
Fenômico linear Eta2 Eta11 KW CV0 CS12_WW 0.824 0.0658355 0.746 0.0805916 -0.078
Combinado Gaussiano Eta8 Eta15 KW CV00 CS11_WS 0.586 0.0209643 0.566 0.0260974 -0.020
Combinado arc-cosine Eta9 Eta18 KW CV00 CS11_WS 0.508 0.0472672 0.484 0.0409598 -0.025
Combinado linear Eta7 Eta12 KW CV00 CS11_WS 0.654 0.0360532 0.608 0.0548281 -0.045
Genômico Gaussiano Eta3 Eta13 KW CV00 CS11_WS 0.578 0.0220801 0.573 0.0223042 -0.005
Genômico arc-cosine Eta5 Eta16 KW CV00 CS11_WS 0.544 0.0268564 0.548 0.0163422 0.004
Genômico linear Eta1 Eta10 KW CV00 CS11_WS 0.565 0.0200134 0.562 0.0174611 -0.003
Fenômico Gaussiano Eta4 Eta14 KW CV00 CS11_WS 0.218 0.0243076 0.202 0.0472486 -0.016
Fenômico arc-cosine Eta6 Eta17 KW CV00 CS11_WS 0.256 0.0252293 0.249 0.0365030 -0.007
Fenômico linear Eta2 Eta11 KW CV00 CS11_WS 0.662 0.0743260 0.624 0.0680554 -0.038
Combinado Gaussiano Eta8 Eta15 KW CV00 CS11_WW 0.566 0.0212727 0.562 0.0166412 -0.004
Combinado arc-cosine Eta9 Eta18 KW CV00 CS11_WW 0.460 0.0504655 0.451 0.0487862 -0.009
Combinado linear Eta7 Eta12 KW CV00 CS11_WW 0.544 0.0496768 0.488 0.0776466 -0.056
Genômico Gaussiano Eta3 Eta13 KW CV00 CS11_WW 0.565 0.0197142 0.567 0.0234297 0.002
Genômico arc-cosine Eta5 Eta16 KW CV00 CS11_WW 0.525 0.0245290 0.511 0.0208822 -0.014
Genômico linear Eta1 Eta10 KW CV00 CS11_WW 0.563 0.0179097 0.565 0.0130631 0.002
Fenômico Gaussiano Eta4 Eta14 KW CV00 CS11_WW 0.160 0.0141550 0.153 0.0236371 -0.007
Fenômico arc-cosine Eta6 Eta17 KW CV00 CS11_WW 0.222 0.0454472 0.172 0.0459169 -0.050
Fenômico linear Eta2 Eta11 KW CV00 CS11_WW 0.656 0.0537020 0.541 0.1089787 -0.115
Combinado Gaussiano Eta8 Eta15 KW CV00 CS12_WS 0.619 0.0125596 0.607 0.0129271 -0.012
Combinado arc-cosine Eta9 Eta18 KW CV00 CS12_WS 0.511 0.0392188 0.550 0.0346599 0.039
Combinado linear Eta7 Eta12 KW CV00 CS12_WS 0.553 0.0799328 0.552 0.0729139 -0.001
Genômico Gaussiano Eta3 Eta13 KW CV00 CS12_WS 0.616 0.0174929 0.611 0.0169350 -0.005
Genômico arc-cosine Eta5 Eta16 KW CV00 CS12_WS 0.560 0.0085485 0.569 0.0098365 0.009
Genômico linear Eta1 Eta10 KW CV00 CS12_WS 0.602 0.0156413 0.613 0.0088231 0.011
Fenômico Gaussiano Eta4 Eta14 KW CV00 CS12_WS 0.209 0.0273382 0.212 0.0227339 0.003
Fenômico arc-cosine Eta6 Eta17 KW CV00 CS12_WS 0.180 0.0753962 0.189 0.0409106 0.009
Fenômico linear Eta2 Eta11 KW CV00 CS12_WS 0.600 0.0894934 0.538 0.0973559 -0.062
Combinado Gaussiano Eta8 Eta15 KW CV00 CS12_WW 0.617 0.0102124 0.615 0.0248406 -0.002
Combinado arc-cosine Eta9 Eta18 KW CV00 CS12_WW 0.576 0.0306078 0.554 0.0430405 -0.022
Combinado linear Eta7 Eta12 KW CV00 CS12_WW 0.636 0.0411822 0.614 0.0398958 -0.022
Genômico Gaussiano Eta3 Eta13 KW CV00 CS12_WW 0.600 0.0272165 0.609 0.0237787 0.009
Genômico arc-cosine Eta5 Eta16 KW CV00 CS12_WW 0.591 0.0295687 0.585 0.0195874 -0.006
Genômico linear Eta1 Eta10 KW CV00 CS12_WW 0.601 0.0150357 0.603 0.0329311 0.001
Fenômico Gaussiano Eta4 Eta14 KW CV00 CS12_WW 0.197 0.0414129 0.198 0.0328087 0.002
Fenômico arc-cosine Eta6 Eta17 KW CV00 CS12_WW 0.239 0.0433968 0.256 0.0392577 0.017
Fenômico linear Eta2 Eta11 KW CV00 CS12_WW 0.640 0.0608590 0.602 0.0751970 -0.038

14. Tabelas de comparação entre famílias de kernel

Aqui o script contrasta os kernels linear, Gaussiano e arc-cosine dentro de cada via analítica.

cv12_kernel_family_compare %>%
  mutate( Linear = round(Linear, 3),
   Gaussian = round(Gaussian, 3),
   `Arc-cosine` = round(`Arc-cosine`, 3),
   Delta_Gaussian_vs_Linear = round(Delta_Gaussian_vs_Linear, 3),
   Delta_ArcCos_vs_Linear = round(Delta_ArcCos_vs_Linear, 3),
    Delta_ArcCos_vs_Gaussian = round(Delta_ArcCos_vs_Gaussian, 3) ) %>%
  knitr::kable( caption = "Comparação entre famílias de kernel dentro de cada via analítica em CV1 e CV2.",
    align = "llllcccccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" ) %>%
  kableExtra::scroll_box(width = "100%", height = "320px")
Comparação entre famílias de kernel dentro de cada via analítica em CV1 e CV2.
Trait CV Pathway WeatherStatus Linear Gaussian Arc-cosine Delta_Gaussian_vs_Linear Delta_ArcCos_vs_Linear Delta_ArcCos_vs_Gaussian
GY CV1 Via combinada G + P Com W 0.719 0.723 0.706 0.004 -0.013 -0.017
GY CV1 Via combinada G + P Sem W 0.713 0.717 0.703 0.004 -0.010 -0.014
GY CV1 Via genômica Com W 0.725 0.727 0.714 0.003 -0.011 -0.014
GY CV1 Via genômica Sem W 0.719 0.719 0.711 0.000 -0.008 -0.008
GY CV1 Via fenômica Com W 0.637 0.147 0.177 -0.490 -0.460 0.030
GY CV1 Via fenômica Sem W 0.645 0.134 0.178 -0.510 -0.467 0.043
GY CV2 Via combinada G + P Com W 0.982 0.991 0.970 0.008 -0.012 -0.021
GY CV2 Via combinada G + P Sem W 0.980 0.989 0.966 0.008 -0.014 -0.023
GY CV2 Via genômica Com W 0.984 0.974 0.968 -0.010 -0.016 -0.006
GY CV2 Via genômica Sem W 0.982 0.973 0.964 -0.009 -0.019 -0.009
GY CV2 Via fenômica Com W 0.933 0.949 0.692 0.016 -0.241 -0.257
GY CV2 Via fenômica Sem W 0.967 0.945 0.695 -0.022 -0.272 -0.249
KW CV1 Via combinada G + P Com W 0.708 0.595 0.548 -0.113 -0.160 -0.047
KW CV1 Via combinada G + P Sem W 0.728 0.603 0.555 -0.124 -0.173 -0.048
KW CV1 Via genômica Com W 0.594 0.595 0.555 0.002 -0.038 -0.040
KW CV1 Via genômica Sem W 0.585 0.602 0.555 0.017 -0.030 -0.047
KW CV1 Via fenômica Com W 0.761 0.203 0.243 -0.558 -0.519 0.040
KW CV1 Via fenômica Sem W 0.762 0.218 0.271 -0.544 -0.491 0.054
KW CV2 Via combinada G + P Com W 0.994 0.994 0.978 0.000 -0.016 -0.016
KW CV2 Via combinada G + P Sem W 0.994 0.993 0.977 -0.001 -0.017 -0.016
KW CV2 Via genômica Com W 0.990 0.983 0.975 -0.007 -0.015 -0.008
KW CV2 Via genômica Sem W 0.989 0.982 0.974 -0.007 -0.015 -0.008
KW CV2 Via fenômica Com W 0.986 0.958 0.771 -0.028 -0.215 -0.187
KW CV2 Via fenômica Sem W 0.989 0.955 0.772 -0.034 -0.217 -0.183
cvloo_kernel_family_compare %>%
  mutate( Linear = round(Linear, 3),
   Gaussian = round(Gaussian, 3),
   `Arc-cosine` = round(`Arc-cosine`, 3),
   Delta_Gaussian_vs_Linear = round(Delta_Gaussian_vs_Linear, 3),
   Delta_ArcCos_vs_Linear = round(Delta_ArcCos_vs_Linear, 3),
    Delta_ArcCos_vs_Gaussian = round(Delta_ArcCos_vs_Gaussian, 3) ) %>%
  knitr::kable( caption = "Comparação entre famílias de kernel dentro de cada via analítica em CV0 e CV00.",
    align = "lllllcccccc" ) %>%
  kableExtra::kable_styling( bootstrap_options = c("striped", "hover", "condensed", "responsive"),
   full_width = FALSE,
    position = "left" ) %>%
  kableExtra::scroll_box(width = "100%", height = "320px")
Comparação entre famílias de kernel dentro de cada via analítica em CV0 e CV00.
Trait CV Env_leave Pathway WeatherStatus Linear Gaussian Arc-cosine Delta_Gaussian_vs_Linear Delta_ArcCos_vs_Linear Delta_ArcCos_vs_Gaussian
GY CV0 CS11_WS Via combinada G + P Com W 0.878 0.921 0.906 0.042 0.028 -0.014
GY CV0 CS11_WS Via combinada G + P Sem W 0.884 0.922 0.915 0.037 0.030 -0.007
GY CV0 CS11_WS Via genômica Com W 0.916 0.922 0.924 0.006 0.008 0.002
GY CV0 CS11_WS Via genômica Sem W 0.921 0.923 0.926 0.001 0.004 0.003
GY CV0 CS11_WS Via fenômica Com W 0.600 0.434 0.398 -0.166 -0.201 -0.036
GY CV0 CS11_WS Via fenômica Sem W 0.740 0.460 0.421 -0.280 -0.319 -0.039
GY CV0 CS11_WW Via combinada G + P Com W 0.778 0.891 0.850 0.113 0.072 -0.041
GY CV0 CS11_WW Via combinada G + P Sem W 0.822 0.889 0.848 0.067 0.026 -0.041
GY CV0 CS11_WW Via genômica Com W 0.896 0.896 0.886 0.000 -0.010 -0.010
GY CV0 CS11_WW Via genômica Sem W 0.893 0.894 0.885 0.001 -0.008 -0.009
GY CV0 CS11_WW Via fenômica Com W 0.578 0.318 0.275 -0.259 -0.302 -0.043
GY CV0 CS11_WW Via fenômica Sem W 0.615 0.323 0.310 -0.292 -0.305 -0.013
GY CV0 CS12_WS Via combinada G + P Com W 0.765 0.884 0.855 0.119 0.090 -0.029
GY CV0 CS12_WS Via combinada G + P Sem W 0.794 0.889 0.861 0.095 0.067 -0.028
GY CV0 CS12_WS Via genômica Com W 0.885 0.893 0.883 0.008 -0.001 -0.009
GY CV0 CS12_WS Via genômica Sem W 0.894 0.896 0.884 0.002 -0.011 -0.012
GY CV0 CS12_WS Via fenômica Com W 0.454 0.323 0.257 -0.131 -0.196 -0.065
GY CV0 CS12_WS Via fenômica Sem W 0.634 0.342 0.273 -0.292 -0.361 -0.069
GY CV0 CS12_WW Via combinada G + P Com W 0.887 0.904 0.894 0.017 0.007 -0.009
GY CV0 CS12_WW Via combinada G + P Sem W 0.881 0.902 0.892 0.021 0.011 -0.010
GY CV0 CS12_WW Via genômica Com W 0.909 0.907 0.904 -0.002 -0.005 -0.003
GY CV0 CS12_WW Via genômica Sem W 0.904 0.904 0.902 -0.001 -0.002 -0.001
GY CV0 CS12_WW Via fenômica Com W 0.512 0.350 0.332 -0.161 -0.180 -0.018
GY CV0 CS12_WW Via fenômica Sem W 0.592 0.359 0.347 -0.234 -0.246 -0.012
GY CV00 CS11_WS Via combinada G + P Com W 0.677 0.716 0.715 0.039 0.038 -0.001
GY CV00 CS11_WS Via combinada G + P Sem W 0.666 0.719 0.702 0.053 0.036 -0.017
GY CV00 CS11_WS Via genômica Com W 0.720 0.716 0.735 -0.005 0.015 0.019
GY CV00 CS11_WS Via genômica Sem W 0.710 0.717 0.732 0.007 0.023 0.015
GY CV00 CS11_WS Via fenômica Com W 0.468 0.207 0.160 -0.261 -0.308 -0.047
GY CV00 CS11_WS Via fenômica Sem W 0.547 0.192 0.176 -0.355 -0.371 -0.016
GY CV00 CS11_WW Via combinada G + P Com W 0.597 0.734 0.643 0.137 0.046 -0.091
GY CV00 CS11_WW Via combinada G + P Sem W 0.664 0.734 0.648 0.070 -0.016 -0.086
GY CV00 CS11_WW Via genômica Com W 0.738 0.740 0.725 0.002 -0.014 -0.016
GY CV00 CS11_WW Via genômica Sem W 0.741 0.738 0.724 -0.003 -0.016 -0.013
GY CV00 CS11_WW Via fenômica Com W 0.453 0.192 0.126 -0.261 -0.327 -0.066
GY CV00 CS11_WW Via fenômica Sem W 0.444 0.167 0.128 -0.277 -0.316 -0.039
GY CV00 CS12_WS Via combinada G + P Com W 0.598 0.727 0.620 0.129 0.022 -0.107
GY CV00 CS12_WS Via combinada G + P Sem W 0.617 0.722 0.624 0.105 0.007 -0.098
GY CV00 CS12_WS Via genômica Com W 0.733 0.734 0.690 0.001 -0.044 -0.044
GY CV00 CS12_WS Via genômica Sem W 0.725 0.730 0.693 0.005 -0.033 -0.037
GY CV00 CS12_WS Via fenômica Com W 0.369 0.129 0.101 -0.240 -0.268 -0.028
GY CV00 CS12_WS Via fenômica Sem W 0.517 0.132 0.086 -0.385 -0.431 -0.046
GY CV00 CS12_WW Via combinada G + P Com W 0.672 0.714 0.656 0.042 -0.016 -0.058
GY CV00 CS12_WW Via combinada G + P Sem W 0.674 0.706 0.656 0.032 -0.018 -0.050
GY CV00 CS12_WW Via genômica Com W 0.710 0.713 0.682 0.003 -0.027 -0.031
GY CV00 CS12_WW Via genômica Sem W 0.696 0.701 0.691 0.005 -0.006 -0.011
GY CV00 CS12_WW Via fenômica Com W 0.386 0.114 0.096 -0.272 -0.290 -0.018
GY CV00 CS12_WW Via fenômica Sem W 0.410 0.119 0.098 -0.291 -0.312 -0.021
KW CV0 CS11_WS Via combinada G + P Com W 0.904 0.955 0.934 0.051 0.030 -0.021
KW CV0 CS11_WS Via combinada G + P Sem W 0.928 0.959 0.952 0.031 0.024 -0.007
KW CV0 CS11_WS Via genômica Com W 0.945 0.953 0.955 0.008 0.010 0.002
KW CV0 CS11_WS Via genômica Sem W 0.960 0.960 0.961 0.000 0.001 0.001
KW CV0 CS11_WS Via fenômica Com W 0.708 0.459 0.529 -0.249 -0.179 0.070
KW CV0 CS11_WS Via fenômica Sem W 0.800 0.488 0.514 -0.312 -0.287 0.025
KW CV0 CS11_WW Via combinada G + P Com W 0.780 0.888 0.850 0.108 0.070 -0.038
KW CV0 CS11_WW Via combinada G + P Sem W 0.829 0.886 0.855 0.057 0.026 -0.031
KW CV0 CS11_WW Via genômica Com W 0.889 0.887 0.873 -0.002 -0.016 -0.015
KW CV0 CS11_WW Via genômica Sem W 0.885 0.885 0.874 0.000 -0.011 -0.011
KW CV0 CS11_WW Via fenômica Com W 0.591 0.327 0.429 -0.263 -0.162 0.101
KW CV0 CS11_WW Via fenômica Sem W 0.787 0.331 0.399 -0.455 -0.387 0.068
KW CV0 CS12_WS Via combinada G + P Com W 0.816 0.894 0.880 0.079 0.064 -0.015
KW CV0 CS12_WS Via combinada G + P Sem W 0.797 0.894 0.860 0.097 0.062 -0.034
KW CV0 CS12_WS Via genômica Com W 0.897 0.899 0.889 0.002 -0.009 -0.011
KW CV0 CS12_WS Via genômica Sem W 0.896 0.898 0.888 0.002 -0.008 -0.010
KW CV0 CS12_WS Via fenômica Com W 0.638 0.400 0.407 -0.238 -0.231 0.007
KW CV0 CS12_WS Via fenômica Sem W 0.735 0.410 0.385 -0.325 -0.350 -0.025
KW CV0 CS12_WW Via combinada G + P Com W 0.928 0.948 0.935 0.020 0.007 -0.013
KW CV0 CS12_WW Via combinada G + P Sem W 0.922 0.947 0.938 0.025 0.015 -0.010
KW CV0 CS12_WW Via genômica Com W 0.948 0.949 0.946 0.001 -0.002 -0.003
KW CV0 CS12_WW Via genômica Sem W 0.947 0.947 0.947 0.001 0.000 0.000
KW CV0 CS12_WW Via fenômica Com W 0.746 0.429 0.504 -0.318 -0.242 0.076
KW CV0 CS12_WW Via fenômica Sem W 0.824 0.431 0.514 -0.393 -0.310 0.083
KW CV00 CS11_WS Via combinada G + P Com W 0.608 0.566 0.484 -0.042 -0.125 -0.083
KW CV00 CS11_WS Via combinada G + P Sem W 0.654 0.586 0.508 -0.068 -0.145 -0.078
KW CV00 CS11_WS Via genômica Com W 0.562 0.573 0.548 0.010 -0.015 -0.025
KW CV00 CS11_WS Via genômica Sem W 0.565 0.578 0.544 0.012 -0.021 -0.034
KW CV00 CS11_WS Via fenômica Com W 0.624 0.202 0.249 -0.422 -0.375 0.047
KW CV00 CS11_WS Via fenômica Sem W 0.662 0.218 0.256 -0.444 -0.407 0.038
KW CV00 CS11_WW Via combinada G + P Com W 0.488 0.562 0.451 0.073 -0.037 -0.111
KW CV00 CS11_WW Via combinada G + P Sem W 0.544 0.566 0.460 0.021 -0.085 -0.106
KW CV00 CS11_WW Via genômica Com W 0.565 0.567 0.511 0.002 -0.054 -0.056
KW CV00 CS11_WW Via genômica Sem W 0.563 0.565 0.525 0.001 -0.039 -0.040
KW CV00 CS11_WW Via fenômica Com W 0.541 0.153 0.172 -0.388 -0.369 0.019
KW CV00 CS11_WW Via fenômica Sem W 0.656 0.160 0.222 -0.496 -0.434 0.062
KW CV00 CS12_WS Via combinada G + P Com W 0.552 0.607 0.550 0.055 -0.002 -0.057
KW CV00 CS12_WS Via combinada G + P Sem W 0.553 0.619 0.511 0.066 -0.042 -0.108
KW CV00 CS12_WS Via genômica Com W 0.613 0.611 0.569 -0.001 -0.044 -0.043
KW CV00 CS12_WS Via genômica Sem W 0.602 0.616 0.560 0.014 -0.042 -0.056
KW CV00 CS12_WS Via fenômica Com W 0.538 0.212 0.189 -0.327 -0.349 -0.022
KW CV00 CS12_WS Via fenômica Sem W 0.600 0.209 0.180 -0.391 -0.420 -0.029
KW CV00 CS12_WW Via combinada G + P Com W 0.614 0.615 0.554 0.001 -0.061 -0.061
KW CV00 CS12_WW Via combinada G + P Sem W 0.636 0.617 0.576 -0.019 -0.060 -0.041
KW CV00 CS12_WW Via genômica Com W 0.603 0.609 0.585 0.006 -0.018 -0.024
KW CV00 CS12_WW Via genômica Sem W 0.601 0.600 0.591 -0.001 -0.010 -0.009
KW CV00 CS12_WW Via fenômica Com W 0.602 0.198 0.256 -0.404 -0.346 0.057
KW CV00 CS12_WW Via fenômica Sem W 0.640 0.197 0.239 -0.443 -0.401 0.042

15. Figuras

As figuras finais resumem a capacidade preditiva para o catálogo completo de modelos em CV1/CV2 e CV0/CV00.

cv12_plot_data <- cv12_summary %>%
  mutate( ShortDescription = factor(ShortDescription, levels = model_catalog$ShortDescription) )
lower_limit_cv12 <- min(cv12_plot_data$MeanCorrelation - cv12_plot_data$SDCorrelation, na.rm = TRUE)
upper_limit_cv12 <- max(cv12_plot_data$MeanCorrelation + cv12_plot_data$SDCorrelation, na.rm = TRUE)
p_cv12 <- ggplot(cv12_plot_data, aes(x = ShortDescription, y = MeanCorrelation, fill = Group)) +
  geom_col(width = 0.75, color = "grey30") +
  geom_errorbar( aes( ymin = MeanCorrelation - SDCorrelation, ymax = MeanCorrelation + SDCorrelation ),
   width = 0.20,
    linewidth = 0.35 ) +
  facet_grid(Trait ~ CV) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  coord_cartesian(ylim = c(lower_limit_cv12 - 0.03, upper_limit_cv12 + 0.03)) +
  scale_x_discrete(name = "Descrição do modelo") +
  scale_y_continuous(name = "Correlação preditiva") +
  ggthemes::scale_fill_gdocs(name = "Grupo de comparação") +
  theme_bw() +
  theme( plot.title = element_text(face = "bold", size = 12, hjust = 0.5),
   strip.text = element_text(face = "bold", size = 10),
   axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 7),
   axis.text.y = element_text(size = 9),
   axis.title = element_text(size = 10),
   legend.position = "top",
   legend.title = element_text(size = 9),
    legend.text = element_text(size = 8) ) +
  labs(title = "Capacidade preditiva em CV1 e CV2")
p_cv12

Version Author Date
6b32571 WevertonGomesCosta 2026-04-05
ggsave(file.path(figures_dir, "prediction_cv1_cv2.tiff"),
 plot = p_cv12,
 width = 14,
 height = 8,
 dpi = 300,
  bg = "white")
cvloo_plot_data <- cvloo_summary %>%
  mutate( ShortDescription = factor(ShortDescription, levels = model_catalog$ShortDescription),
    Env_leave = factor(Env_leave, levels = c("CS11_WS", "CS11_WW", "CS12_WS", "CS12_WW")) )
lower_limit_cvloo <- min(cvloo_plot_data$MeanCorrelation - cvloo_plot_data$SDCorrelation, na.rm = TRUE)
upper_limit_cvloo <- max(cvloo_plot_data$MeanCorrelation + cvloo_plot_data$SDCorrelation, na.rm = TRUE)
p_cvloo <- ggplot(cvloo_plot_data, aes(x = ShortDescription, y = MeanCorrelation, fill = Group)) +
  geom_col(width = 0.75, color = "grey30") +
  geom_errorbar( aes( ymin = MeanCorrelation - SDCorrelation, ymax = MeanCorrelation + SDCorrelation ),
   width = 0.20,
   linewidth = 0.35,
    na.rm = TRUE ) +
  facet_grid(Env_leave ~ Trait + CV) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
  coord_cartesian(ylim = c(lower_limit_cvloo - 0.03, upper_limit_cvloo + 0.03)) +
  scale_x_discrete(name = "Descrição do modelo") +
  scale_y_continuous(name = "Correlação preditiva") +
  ggthemes::scale_fill_gdocs(name = "Grupo de comparação") +
  theme_bw() +
  theme( plot.title = element_text(face = "bold", size = 12, hjust = 0.5),
   strip.text = element_text(face = "bold", size = 9),
   axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 6),
   axis.text.y = element_text(size = 8),
   axis.title = element_text(size = 10),
   legend.position = "top",
   legend.title = element_text(size = 9),
    legend.text = element_text(size = 8) ) +
  labs(title = "Capacidade preditiva em CV0 e CV00")
p_cvloo

Version Author Date
6b32571 WevertonGomesCosta 2026-04-05
ggsave(file.path(figures_dir, "prediction_cv0_cv00.tiff"),
 plot = p_cvloo,
 width = 16,
 height = 12,
 dpi = 300,
  bg = "white")

16. Nota final

Esta versão didática está alinhada ao fluxo atual de predição baseado em analysis_prediction_run_outputs.Rmd. Ela espera arquivos nos quais:

  • a repetição e o fold estão codificados tanto na hierarquia de pastas quanto no nome do arquivo;
  • CV0 e CV00 carregam o rótulo do ambiente deixado de fora tanto na hierarquia de pastas quanto no nome do arquivo;
  • os CSVs de predição são lidos recursivamente a partir de output/results/;
  • CV0 e CV00 ainda exigem o filtro Env == Env_leave para os resumos do ambiente deixado de fora.

Depois de executar este arquivo, a próxima etapa no repositório é rodar o script orientado ao manuscrito que consome as tabelas-resumo gravadas em output/tables/.