Bloco inicial baseado no seu script.
Lê CSV comsep=";"edec=",", remove 2 colunas específicas, e define os fatores.
#### ANAVAS CLIMA (baseado no script_3.R)
dados_2 <- read.table(params$data_path, header = TRUE, sep = ";", dec = ",")
# Remove colunas (se existirem)
cols_drop <- c("Pressão.de.vapor.de.saturação..kPa.", "Pressão.atual.de.vapor.de.água..kPa.")
for(cd in cols_drop){
if(cd %in% names(dados_2)) dados_2[[cd]] <- NULL
}
# Fatores
dados_2$Ambiente <- as.factor(dados_2$Ambiente)
dados_2$Estação <- as.factor(dados_2$Estação)
dados_2$Repetição <- as.factor(dados_2$Repetição) # não será usada no modelo (DIC)
str(dados_2)
## 'data.frame': 450 obs. of 9 variables:
## $ Ambiente : Factor w/ 3 levels "AD","FL","PM": 3 3 3 3 3 3 3 3 3 3 ...
## $ Estação : Factor w/ 3 levels "EMC","ET","FEC": 3 3 3 3 3 3 3 3 3 3 ...
## $ Repetição : Factor w/ 60 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Temperatura.média.do.ar...C. : num 26.1 26.6 27.8 28.4 28.3 ...
## $ Temperatura.máxima.do.ar...C. : num 30 30.9 30.9 30.6 30.5 ...
## $ Temperatura.mínima.do.ar...C. : num 23.6 23.6 24.4 26.6 26.1 ...
## $ Amplitude.térmica.do.ar...C. : num 6.41 7.34 6.51 4.06 4.48 4.4 5.71 4.89 7.1 7.62 ...
## $ UH.... : num 84.6 84.2 79.9 77 75.7 ...
## $ Déficit.de.pressão.de.vapor.de.água..kPa.: num 0.52 0.55 0.75 0.89 0.94 0.98 0.9 0.55 0.45 0.55 ...
# Evita problemas de versão do dplyr (where()) e/ou conflitos de select()
# Seleção robusta via base R:
resp_vars <- names(dados_2)[vapply(dados_2, is.numeric, logical(1))]
resp_vars
## [1] "Temperatura.média.do.ar...C."
## [2] "Temperatura.máxima.do.ar...C."
## [3] "Temperatura.mínima.do.ar...C."
## [4] "Amplitude.térmica.do.ar...C."
## [5] "UH...."
## [6] "Déficit.de.pressão.de.vapor.de.água..kPa."
Modelo solicitado (DIC, sem efeito de repetição/bloco):
Observação: essa escrita é equivalente a variável ~ Ambiente * Estação (efeitos principais + interação).
tab_amb_all <- do.call(rbind, tabelas_amb)
tab_est_all <- do.call(rbind, tabelas_est)
tab_amb_wide <- tab_amb_all %>%
dplyr::mutate(val = paste0(media_sd, " (", letra, ")")) %>%
dplyr::select(var, Ambiente, val) %>%
tidyr::pivot_wider(names_from = Ambiente, values_from = val)
tab_est_wide <- tab_est_all %>%
dplyr::mutate(val = paste0(media_sd, " (", letra, ")")) %>%
dplyr::select(var, Estação, val) %>%
tidyr::pivot_wider(names_from = Estação, values_from = val)
tabela_final <- res_anova %>%
dplyr::select(variavel, sig_Ambiente, sig_Estacao, sig_Interacao) %>%
dplyr::rename(var = variavel) %>%
dplyr::left_join(tab_amb_wide, by = "var") %>%
dplyr::left_join(tab_est_wide, by = "var")
tabela_final
## var sig_Ambiente sig_Estacao
## 1 Temperatura.média.do.ar...C. *** ***
## 2 Temperatura.máxima.do.ar...C. *** ***
## 3 Temperatura.mínima.do.ar...C. *** ***
## 4 Amplitude.térmica.do.ar...C. *** **
## 5 UH.... *** ***
## 6 Déficit.de.pressão.de.vapor.de.água..kPa. *** ***
## sig_Interacao AD FL
## 1 *** 28.730 $\\pm$ 1.047 (c) 28.003 $\\pm$ 1.093 (b)
## 2 *** 36.347 $\\pm$ 1.630 (b) 30.605 $\\pm$ 1.298 (a)
## 3 ns 24.170 $\\pm$ 1.417 (a) 25.255 $\\pm$ 1.159 (b)
## 4 *** 12.177 $\\pm$ 1.813 (c) 5.350 $\\pm$ 1.205 (b)
## 5 * 78.253 $\\pm$ 4.859 (b) 83.484 $\\pm$ 5.052 (c)
## 6 * 0.869 $\\pm$ 0.221 (b) 0.623 $\\pm$ 0.189 (a)
## PM EMC ET
## 1 27.711 $\\pm$ 0.698 (a) 28.193 $\\pm$ 0.660 (b) 28.243 $\\pm$ 1.140 (b)
## 2 30.252 $\\pm$ 0.558 (a) 32.603 $\\pm$ 2.633 (b) 32.676 $\\pm$ 3.550 (b)
## 3 25.698 $\\pm$ 1.255 (c) 25.364 $\\pm$ 1.099 (b) 25.391 $\\pm$ 1.366 (b)
## 4 4.554 $\\pm$ 1.221 (a) 7.239 $\\pm$ 3.429 (a) 7.285 $\\pm$ 4.144 (a)
## 5 75.689 $\\pm$ 3.709 (a) 77.090 $\\pm$ 3.199 (a) 78.329 $\\pm$ 5.436 (b)
## 6 0.909 $\\pm$ 0.162 (c) 0.877 $\\pm$ 0.131 (b) 0.842 $\\pm$ 0.235 (b)
## FEC
## 1 27.869 $\\pm$ 1.410 (a)
## 2 31.447 $\\pm$ 2.609 (a)
## 3 23.693 $\\pm$ 1.360 (a)
## 4 7.754 $\\pm$ 3.352 (b)
## 5 84.873 $\\pm$ 5.951 (c)
## 6 0.563 $\\pm$ 0.222 (a)
cat("\\n% --- Tabela LaTeX (copie a partir daqui) ---\\n")
% — Tabela LaTeX (copie a partir daqui) —
kable(tabela_final,
format = "latex",
booktabs = TRUE,
escape = FALSE,
caption = "Médias $\\pm$ desvios (com letras do Tukey) e significâncias da ANAVA (ns, *, **, ***).") %>%
kable_styling(latex_options = c("hold_position", "scale_down")) %>%
print()
cat("\\n% --- fim da tabela ---\\n")
% — fim da tabela —
# Se o output for HTML, mostra tabela HTML.
# Se for LaTeX/PDF, mostra tabela LaTeX.
fmt <- if (knitr::is_latex_output()) "latex" else "html"
tab <- knitr::kable(
tabela_final,
format = fmt,
booktabs = TRUE,
escape = FALSE,
caption = "Médias $\\pm$ desvios (com letras do Tukey) e significâncias da ANAVA (ns, *, **, ***)."
)
if (fmt == "latex") {
tab <- kableExtra::kable_styling(tab, latex_options = c("hold_position", "scale_down"))
} else {
tab <- kableExtra::kable_styling(tab, full_width = FALSE)
}
tab
| var | sig_Ambiente | sig_Estacao | sig_Interacao | AD | FL | PM | EMC | ET | FEC |
|---|---|---|---|---|---|---|---|---|---|
| Temperatura.média.do.ar…C. | *** | *** | *** | 28.730 \(\pm\) 1.047 (c) | 28.003 \(\pm\) 1.093 (b) | 27.711 \(\pm\) 0.698 (a) | 28.193 \(\pm\) 0.660 (b) | 28.243 \(\pm\) 1.140 (b) | 27.869 \(\pm\) 1.410 (a) |
| Temperatura.máxima.do.ar…C. | *** | *** | *** | 36.347 \(\pm\) 1.630 (b) | 30.605 \(\pm\) 1.298 (a) | 30.252 \(\pm\) 0.558 (a) | 32.603 \(\pm\) 2.633 (b) | 32.676 \(\pm\) 3.550 (b) | 31.447 \(\pm\) 2.609 (a) |
| Temperatura.mínima.do.ar…C. | *** | *** | ns | 24.170 \(\pm\) 1.417 (a) | 25.255 \(\pm\) 1.159 (b) | 25.698 \(\pm\) 1.255 (c) | 25.364 \(\pm\) 1.099 (b) | 25.391 \(\pm\) 1.366 (b) | 23.693 \(\pm\) 1.360 (a) |
| Amplitude.térmica.do.ar…C. | *** | ** | *** | 12.177 \(\pm\) 1.813 (c) | 5.350 \(\pm\) 1.205 (b) | 4.554 \(\pm\) 1.221 (a) | 7.239 \(\pm\) 3.429 (a) | 7.285 \(\pm\) 4.144 (a) | 7.754 \(\pm\) 3.352 (b) |
| UH…. | *** | *** |
|
78.253 \(\pm\) 4.859 (b) | 83.484 \(\pm\) 5.052 (c) | 75.689 \(\pm\) 3.709 (a) | 77.090 \(\pm\) 3.199 (a) | 78.329 \(\pm\) 5.436 (b) | 84.873 \(\pm\) 5.951 (c) |
| Déficit.de.pressão.de.vapor.de.água..kPa. | *** | *** |
|
0.869 \(\pm\) 0.221 (b) | 0.623 \(\pm\) 0.189 (a) | 0.909 \(\pm\) 0.162 (c) | 0.877 \(\pm\) 0.131 (b) | 0.842 \(\pm\) 0.235 (b) | 0.563 \(\pm\) 0.222 (a) |
# Converte p-valor em símbolos (ns, *, **, ***)
p_to_sig <- function(p){
if (is.na(p)) return(NA_character_)
if (p < 0.001) return("***")
if (p < 0.01) return("**")
if (p < 0.05) return("*")
return("ns")
}
# Formata tabela de ANOVA de um objeto aov()
anova_table <- function(fit){
an <- anova(fit)
# Monta data.frame com colunas essenciais
out <- data.frame(
Fonte = rownames(an),
GL = an[["Df"]],
F = an[["F value"]],
p = an[["Pr(>F)"]],
stringsAsFactors = FALSE
)
# Remove linha de resíduos se quiser (opcional)
# out <- out[out$Fonte != "Residuals", ]
out$sig <- vapply(out$p, p_to_sig, character(1))
# Formata números (sem destruir NA)
out$F <- ifelse(is.na(out$F), NA, sprintf("%.3f", out$F))
out$p <- ifelse(is.na(out$p), NA, sprintf("%.4f", out$p))
out
}
fmt <- if (knitr::is_latex_output()) "latex" else "html"
for (v in resp_vars){
form <- as.formula(paste0("`", v, "` ~ `Ambiente` * `Estação`"))
fit <- aov(form, data = dados_2)
tabA <- anova_table(fit)
cat("\n\n")
cat("## ", v, "\n\n", sep="")
k <- knitr::kable(
tabA,
format = fmt,
booktabs = TRUE,
escape = FALSE,
caption = paste0("ANOVA para: ", v, " (modelo: ", v, " ~ Ambiente * Estação)")
)
if (fmt == "latex") {
k <- kableExtra::kable_styling(k, latex_options = c("hold_position", "scale_down"))
} else {
k <- kableExtra::kable_styling(k, full_width = FALSE)
}
print(k)
}
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 65.139 | 0.0000 | *** |
| Estação | 2 | 7.091 | 0.0009 | *** |
| Ambiente:Estação | 4 | 49.509 | 0.0000 | *** |
| Residuals | 441 | NA | NA | NA |
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 1644.939 | 0.0000 | *** |
| Estação | 2 | 48.214 | 0.0000 | *** |
| Ambiente:Estação | 4 | 27.972 | 0.0000 | *** |
| Residuals | 441 | NA | NA | NA |
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 77.509 | 0.0000 | *** |
| Estação | 2 | 85.459 | 0.0000 | *** |
| Ambiente:Estação | 4 | 0.494 | 0.7398 | ns |
| Residuals | 441 | NA | NA | NA |
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 1447.671 | 0.0000 | *** |
| Estação | 2 | 4.833 | 0.0084 | ** |
| Ambiente:Estação | 4 | 14.854 | 0.0000 | *** |
| Residuals | 441 | NA | NA | NA |
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 193.538 | 0.0000 | *** |
| Estação | 2 | 156.656 | 0.0000 | *** |
| Ambiente:Estação | 4 | 2.929 | 0.0207 |
|
| Residuals | 441 | NA | NA | NA |
| Fonte | GL | F | p | sig |
|---|---|---|---|---|
| Ambiente | 2 | 159.637 | 0.0000 | *** |
| Estação | 2 | 142.813 | 0.0000 | *** |
| Ambiente:Estação | 4 | 2.434 | 0.0467 |
|
| Residuals | 441 | NA | NA | NA |