📘 Curso de Estatística com R para Experimentação Agrícola

Autor

Marlenildo Melo

Data de Publicação

21 de agosto de 2025

Apresentação do Curso

Este material serve como guia para o curso Estatística com R para Experimentação Agrícola.
Cada aula contém explicações teóricas resumidas e códigos práticos para serem executados no RStudio.

Estrutura do Curso

Módulo 1 – Introdução ao R e Organização de Dados (Semanas 1-2)

Objetivo: Familiarizar o aluno com R, RStudio e a preparação correta dos dados.

Aula 1: Apresentação do curso + Instalação do R e RStudio

  • O que é R e RStudio
  • Instalação passo a passo
  • Estrutura do RStudio (console, script, environment, plots, packages)

Aula 2: Primeiros passos no R

  • Comandos básicos
  • Operadores aritméticos e lógicos
  • Criando e manipulando objetos

Aula 3: Instalação e uso de pacotes

  • install.packages(), library()
  • Pacotes úteis: tidyverse, readxl, agricolae, emmeans, broom, ggplot2
  • Como procurar ajuda e documentação

Aula 4: Organização de dados

  • Como estruturar dados no Excel (linhas = observações, colunas = variáveis)
  • Importação de arquivos (.csv, .xlsx, .txt)
  • Uso de read.csv(), readxl::read_excel(), read.table()
  • Verificação e limpeza dos dados (head(), str(), summary())

Módulo 2 – Manipulação e Exploração de Dados (Semanas 3-4)

Objetivo: Aprender a organizar, transformar e explorar dados antes da análise.

Aula 5: tidyverse para manipulação

  • dplyr: select(), filter(), mutate(), summarise(), group_by()
  • tidyr: pivot_longer(), pivot_wider()

Aula 6: Estatística descritiva

  • Médias, desvios-padrão, erro-padrão
  • Tabelas resumo com dplyr
  • Visualizações iniciais: histogramas, boxplots, gráficos de barras

Aula 7: Gráficos com ggplot2

  • Estrutura do ggplot2
  • Gráficos básicos aplicados a dados de experimentação agrícola
  • Personalização de gráficos

Aula 8: Introdução aos delineamentos experimentais

  • Delineamentos básicos: DIC, DBC
  • Estrutura dos dados em experimentação agrícola
  • Preparação dos dados no Excel para cada delineamento

Módulo 3 – Análise de Variância (ANOVA) (Semanas 5-8)

Objetivo: Ensinar a rodar ANOVA, verificar pressupostos e interpretar resultados, utilizando diferentes pacotes.

Aula 9: ANOVA em DIC

  • Funções base: aov()
  • ANOVA com ExpDes.pt (dic())
  • ANOVA com easyanova

Aula 10: ANOVA em DBC

  • Funções base: aov()
  • ANOVA com ExpDes.pt (dbc())
  • Comparação da saída entre pacotes

Aula 11: Testes de pressupostos

  • Normalidade dos resíduos: shapiro.test(), rstatix::shapiro_test()
  • Homogeneidade: bartlett.test(), car::leveneTest(), rstatix::levene_test()
  • Interpretação prática

Aula 12: Testes de comparação de médias

  • TukeyHSD() (base R)
  • ExpDes.pt (já integrado à ANOVA)
  • emmeans + cld()
  • rstatix::t_test() e rstatix::anova_test()

Aula 13: ANOVA em esquemas fatoriais

  • Dois fatores com aov()
  • Dois fatores com ExpDes.pt::fat2.dic() e fat2.dbc()
  • Interpretação das interações

Aula 14: ANOVA em parcela subdividida

  • Estrutura de dados
  • ExpDes.pt::psub2.dbc() (ou funções equivalentes)
  • Modelos mistos com lme4::lmer()

Aula 15: Como reportar resultados da ANOVA

  • broom::tidy() para organizar tabelas
  • Exportação de resultados com rstatix (get_anova_table())
  • Apresentação de médias e letras com agricolae, emmeans e ExpDes.pt

Aula 16: Exercícios práticos comparando pacotes

  • Mesmos dados analisados em aov(), ExpDes.pt, easyanova e rstatix
  • Discussão: qual usar em cada situação

Módulo 4 – Regressão e Modelos (Semanas 9-11)

Objetivo: Introduzir regressão e aplicações em experimentação agrícola.

Aula 17: Introdução à regressão linear

  • Conceito, ajuste com lm()
  • Gráficos de regressão no ggplot2

Aula 18: Regressão polinomial

  • lm(y ~ poly(x, 2))
  • Aplicações em curvas de dose, tempo, crescimento

Aula 19: Seleção de modelos

  • Critérios AIC e BIC
  • Comparação de modelos

Aula 20: Regressão não linear

  • nls()
  • Ajuste de curvas de resposta à dose

Aula 21: Regressão logística (ex.: dados de presença/ausência)

  • glm(family = binomial)
  • Exemplos em fitossanidade e sobrevivência

Aula 22: Exercícios práticos de regressão com dados agrícolas


Módulo 5 – Encerramento e Projeto Final (Semana 12)

Objetivo: Consolidar o aprendizado com aplicações práticas.

Aula 23: Como estruturar um relatório científico no R

  • Uso do RMarkdown
  • Exportar para Word e PDF
  • Organização dos resultados

Aula 24: Projeto final

Cada aluno analisa um banco de dados de experimentação agrícola.

Entrega de relatório com:

  • Estrutura dos dados
  • ANOVA + testes de médias ou regressão
  • Gráficos e tabelas
  • Interpretação

📅 Cronograma Resumido (Atualizado)

  • Semanas 1-2: R, RStudio, pacotes, organização/importação de dados
  • Semanas 3-4: Manipulação de dados, gráficos, delineamentos
  • Semanas 5-8: ANOVA com base R, ExpDes.pt, easyanova e rstatix
  • Semanas 9-11: Regressão (linear, polinomial, não linear, logística)
  • Semana 12: Relatórios e Projeto Final



Exemplos de Códigos

🔹 Módulo 1 – Introdução ao R e Organização de Dados

Aula 1 – Instalação e primeiros passos

  • Instale o R e o RStudio em seu computador.
  • Conheça os principais painéis do RStudio:
    • Console (execução de comandos)
    • Source (script)
    • Environment/History (objetos)
    • Plots/Packages/Help
# Verificando versão do R
version
               _                                
platform       x86_64-w64-mingw32               
arch           x86_64                           
os             mingw32                          
crt            ucrt                             
system         x86_64, mingw32                  
status                                          
major          4                                
minor          5.1                              
year           2025                             
month          06                               
day            13                               
svn rev        88306                            
language       R                                
version.string R version 4.5.1 (2025-06-13 ucrt)
nickname       Great Square Root                
# Operações simples
2 + 2
[1] 4
10/3
[1] 3.333333
sqrt(25)
[1] 5

Aula 2 – Objetos no R

# Criando objetos
x <- 5
y <- 10
soma <- x + y
soma
[1] 15

Aula 3 – Pacotes

# Carregando pacotes
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.2     ✔ tibble    3.3.0
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.1.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(ExpDes.pt)
library(easyanova)
library(rstatix)

Anexando pacote: 'rstatix'

O seguinte objeto é mascarado por 'package:stats':

    filter

Aula 4 – Importação de Dados

# Importando CSV
# dados_csv <- read.csv("meus_dados.csv", sep = ";", dec = ",")

# Importando Excel
# dados_excel <- readxl::read_excel("meus_dados.xlsx")

# Visualizando
# head(dados_csv)
# summary(dados_csv)

🔹 Módulo 2 – Manipulação e Exploração de Dados

Aula 5 – Manipulação com dplyr

# Exemplo fictício
dados <- data.frame(
  tratamento = rep(c("T1","T2","T3"), each=4),
  repeticao = rep(1:4, 3),
  produtividade = c(30,32,28,31, 35,36,34,37, 25,27,26,28)
)

# Selecionar colunas e filtrar
dados %>% select(tratamento, produtividade) %>% filter(produtividade > 30)
  tratamento produtividade
1         T1            32
2         T1            31
3         T2            35
4         T2            36
5         T2            34
6         T2            37
# Resumo estatístico
dados %>% group_by(tratamento) %>% summarise(
  media = mean(produtividade),
  sd = sd(produtividade)
)
# A tibble: 3 × 3
  tratamento media    sd
  <chr>      <dbl> <dbl>
1 T1          30.2  1.71
2 T2          35.5  1.29
3 T3          26.5  1.29

Aula 6 – Estatística Descritiva e Gráficos

# Histograma
ggplot(dados, aes(x = produtividade)) +
  geom_histogram(binwidth = 2, fill="skyblue", color="black")

# Boxplot
ggplot(dados, aes(x = tratamento, y = produtividade)) +
  geom_boxplot(fill="orange")


🔹 Módulo 3 – Análise de Variância (ANOVA)

Aula 9 – ANOVA em DIC

# ANOVA usando aov()
modelo <- aov(produtividade ~ tratamento, data = dados)
summary(modelo)
            Df Sum Sq Mean Sq F value   Pr(>F)    
tratamento   2 163.50   81.75   39.24 3.59e-05 ***
Residuals    9  18.75    2.08                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ANOVA usando ExpDes.pt
dic(trat = dados$tratamento, resp = dados$produtividade, quali = TRUE, mcomp = "tukey")
------------------------------------------------------------------------
Quadro da analise de variancia
------------------------------------------------------------------------
           GL     SQ     QM    Fc      Pr>Fc
Tratamento  2 163.50 81.750 39.24 3.5934e-05
Residuo     9  18.75  2.083                 
Total      11 182.25                        
------------------------------------------------------------------------
CV = 4.69 %

------------------------------------------------------------------------
Teste de normalidade dos residuos ( Shapiro-Wilk ) 
Valor-p:  0.5375769 
De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
------------------------------------------------------------------------

------------------------------------------------------------------------
Teste de homogeneidade de variancia 
valor-p:  0.8663487 
De acordo com o teste de bartlett a 5% de significancia, as variancias podem ser consideradas homogeneas.
------------------------------------------------------------------------

Teste de Tukey
------------------------------------------------------------------------
Grupos Tratamentos Medias
a    T2      35.5 
 b   T1      30.25 
  c      T3      26.5 
------------------------------------------------------------------------
# ANOVA usando easyanova
easyanova::ea1(dados[-2],design = 1,plot = 2)

$`Analysis of variance`
           df type I SS mean square F value    p>F
treatments  2    163.50     81.7500   39.24 <0.001
Residuals   9     18.75      2.0833       -      -

$Means
  treatment  mean     sd    sem min max tukey snk duncan t scott_knott
1        T2 35.50 1.2910 0.7217  34  37     a   a      a a           a
2        T1 30.25 1.7078 0.7217  28  32     b   b      b b           b
3        T3 26.50 1.2910 0.7217  25  28     c   c      c c           c

$`Multiple comparison test`
     pair contrast p(tukey) p(snk) p(duncan)   p(t)
1 T2 - T1     5.25   0.0016 0.0006    0.0006 0.0006
2 T2 - T3     9.00   0.0000 0.0000    0.0000 0.0000
3 T1 - T3     3.75   0.0128 0.0051    0.0051 0.0051

$`Residual analysis`
$`Residual analysis`$`residual analysis`
                             values
p.value Shapiro-Wilk test    0.5376
p.value Bartlett test        0.8663
coefficient of variation (%) 4.6900
first value most discrepant  3.0000
second value most discrepant 2.0000
third value most discrepant  8.0000

$`Residual analysis`$residuals
    1     2     3     4     5     6     7     8     9    10    11    12 
-0.25  1.75 -2.25  0.75 -0.50  0.50 -1.50  1.50 -1.50  0.50 -0.50  1.50 

$`Residual analysis`$`standardized residuals`
         1          2          3          4          5          6          7 
-0.1914854  1.3403980 -1.7233688  0.5744563 -0.3829708  0.3829708 -1.1489125 
         8          9         10         11         12 
 1.1489125 -1.1489125  0.3829708 -0.3829708  1.1489125 

Aula 11 – Testes de Pressupostos

# Normalidade
shapiro.test(residuals(modelo))

    Shapiro-Wilk normality test

data:  residuals(modelo)
W = 0.94298, p-value = 0.5376
dados |> group_by(tratamento) |> rstatix::shapiro_test(produtividade)
# A tibble: 3 × 4
  tratamento variable      statistic     p
  <chr>      <chr>             <dbl> <dbl>
1 T1         produtividade     0.971 0.850
2 T2         produtividade     0.993 0.972
3 T3         produtividade     0.993 0.972
# Homogeneidade
bartlett.test(produtividade ~ tratamento, data = dados)

    Bartlett test of homogeneity of variances

data:  produtividade by tratamento
Bartlett's K-squared = 0.28694, df = 2, p-value = 0.8663
rstatix::levene_test(produtividade ~ tratamento, data = dados)
Warning in leveneTest.default(y = y, group = group, ...): group coerced to
factor.
# A tibble: 1 × 4
    df1   df2 statistic     p
  <int> <int>     <dbl> <dbl>
1     2     9     0.158 0.856

Aula 12 – Comparações de Médias

# Tukey no R base
TukeyHSD(modelo)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = produtividade ~ tratamento, data = dados)

$tratamento
       diff        lwr        upr     p adj
T2-T1  5.25   2.400421  8.0995788 0.0015767
T3-T1 -3.75  -6.599579 -0.9004212 0.0127984
T3-T2 -9.00 -11.849579 -6.1504212 0.0000269
# Emmeans
library(emmeans)
Welcome to emmeans.
Caution: You lose important information if you filter this package's results.
See '? untidy'
emmeans(modelo, pairwise ~ tratamento)
$emmeans
 tratamento emmean    SE df lower.CL upper.CL
 T1           30.2 0.722  9     28.6     31.9
 T2           35.5 0.722  9     33.9     37.1
 T3           26.5 0.722  9     24.9     28.1

Confidence level used: 0.95 

$contrasts
 contrast estimate   SE df t.ratio p.value
 T1 - T2     -5.25 1.02  9  -5.144  0.0016
 T1 - T3      3.75 1.02  9   3.674  0.0128
 T2 - T3      9.00 1.02  9   8.818  <.0001

P value adjustment: tukey method for comparing a family of 3 estimates 
# rstatix
dados %>% anova_test(produtividade ~ tratamento)
ANOVA Table (type II tests)

      Effect DFn DFd     F        p p<.05   ges
1 tratamento   2   9 39.24 3.59e-05     * 0.897
dados %>% tukey_hsd(produtividade ~ tratamento)
# A tibble: 3 × 9
  term       group1 group2 null.value estimate conf.low conf.high     p.adj
* <chr>      <chr>  <chr>       <dbl>    <dbl>    <dbl>     <dbl>     <dbl>
1 tratamento T1     T2              0     5.25     2.40     8.10  0.00158  
2 tratamento T1     T3              0    -3.75    -6.60    -0.900 0.0128   
3 tratamento T2     T3              0    -9      -11.8     -6.15  0.0000269
# ℹ 1 more variable: p.adj.signif <chr>

Aula 13 – ANOVA Fatorial

# Exemplo com dois fatores
dados2 <- expand.grid(
  adubacao = c("A1","A2"),
  cultivar = c("C1","C2","C3"),
  rep = 1:4
)
set.seed(123)
dados2$produtividade <- rnorm(24, mean=30, sd=3)

# ANOVA
modelo2 <- aov(produtividade ~ adubacao * cultivar, data = dados2)
summary(modelo2)
                  Df Sum Sq Mean Sq F value Pr(>F)
adubacao           1   2.09   2.089   0.217  0.647
cultivar           2   1.07   0.536   0.056  0.946
adubacao:cultivar  2  13.72   6.861   0.712  0.504
Residuals         18 173.43   9.635               
# ExpDes.pt
fat2.dic(fator1 = dados2$adubacao, fator2 = dados2$cultivar, resp = dados2$produtividade, quali = c(TRUE,TRUE), mcomp = "tukey")
------------------------------------------------------------------------
Legenda:
FATOR 1:  F1 
FATOR 2:  F2 
------------------------------------------------------------------------


Quadro da analise de variancia
------------------------------------------------------------------------
        GL      SQ QM      Fc   Pr>Fc
F1       1   2.089  3 0.21680 0.64708
F2       2   1.073  2 0.05566 0.94602
F1*F2    2  13.723  4 0.71212 0.50391
Residuo 18 173.435  5                
Total   23 190.319  1                
------------------------------------------------------------------------
CV = 10.36 %

------------------------------------------------------------------------
Teste de normalidade dos residuos (Shapiro-Wilk)
valor-p:  0.6606527 
De acordo com o teste de Shapiro-Wilk a 5% de significancia, os residuos podem ser considerados normais.
------------------------------------------------------------------------

Interacao nao significativa: analisando os efeitos simples
------------------------------------------------------------------------
F1
De acordo com o teste F, as medias desse fator sao estatisticamente iguais.
------------------------------------------------------------------------
  Niveis   Medias
1     A1 30.26899
2     A2 29.67895
------------------------------------------------------------------------
F2
De acordo com o teste F, as medias desse fator sao estatisticamente iguais.
------------------------------------------------------------------------
  Niveis   Medias
1     C1 29.67946
2     C2 30.16574
3     C3 30.07672
------------------------------------------------------------------------

🔹 Módulo 4 – Regressão

Aula 17 – Regressão Linear

# Exemplo: dose x produtividade
dose <- c(0,50,100,150,200)
prod <- c(20, 28, 35, 40, 38)
dados_reg <- data.frame(dose, prod)

modelo_reg <- lm(prod ~ dose, data = dados_reg)
summary(modelo_reg)

Call:
lm(formula = prod ~ dose, data = dados_reg)

Residuals:
   1    2    3    4    5 
-2.6  0.6  2.8  3.0 -3.8 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 22.60000    2.77128   8.155  0.00386 **
dose         0.09600    0.02263   4.243  0.02398 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.578 on 3 degrees of freedom
Multiple R-squared:  0.8571,    Adjusted R-squared:  0.8095 
F-statistic:    18 on 1 and 3 DF,  p-value: 0.02398
# Gráfico
ggplot(dados_reg, aes(x=dose, y=prod)) +
  geom_point() +
  geom_smooth(method="lm", se=FALSE, color="red")
`geom_smooth()` using formula = 'y ~ x'


🔹 Módulo 5 – Relatórios e Projeto Final

Aula 23 – Relatórios com RMarkdown

  • Este próprio arquivo é um exemplo.
  • Pode ser exportado em HTML, Word ou PDF.

✅ Projeto Final

Analise um conjunto de dados agrícolas (real ou fornecido):
- Estruture os dados no Excel/CSV.
- Importe para o R.
- Realize ANOVA (com aov(), ExpDes.pt, easyanova e rstatix).
- Teste pressupostos.
- Se necessário, ajuste modelos de regressão.
- Gere gráficos com ggplot2.
- Organize os resultados em relatório RMarkdown.



Quem Sou

Engenheiro Agrônomo, Doutor em Fitotecnia

Linktree

marlenildo@gmail.com

(84) 98752-1095



Links Úteis: - Apresentação do Curso - Conteúdo do Curso (Estrutura e Códigos) - Quem Sou