Testes estatísticos

Os testes estatísticos são ferramentas utilizadas para tomar decisões com base em dados, avaliando hipóteses e determinando se as diferenças ou relações observadas são estatisticamente significativas ou se podem ter ocorrido por acaso.

Podemos utilizar uma enorme variedade de testes para analisar nossos dados. A escolha do melhor teste depende do tipo de dados a serem analisados, a distribuição dos dados, dos pressupostos atingidos ou não atingidos, entre outros fatores.

Os testes podem ser divididos de forma geral entre paramétricos e não paramétricos.

Testes paramétricos

Pressupõem que os resíduos do modelo seguem uma distribuição normal, e apresentam homogeneidade de variâncias.

Teste T

Compara médias de dois grupos.
Pode ser utilizado em vários tipos

Teste T para amostras independentes: 2 grupos não relacionados.

if(!require(readxl)) install.packages("readxl")
Carregando pacotes exigidos: readxl
Warning: pacote 'readxl' foi compilado no R versão 4.4.2
library(readxl)
if(!require(tidyr)) install.packages("tidyr")
Carregando pacotes exigidos: tidyr
Warning: pacote 'tidyr' foi compilado no R versão 4.4.3
library(tidyr)
if(!require(dplyr)) install.packages("dplyr")
Carregando pacotes exigidos: dplyr
Warning: pacote 'dplyr' foi compilado no R versão 4.4.3

Anexando pacote: 'dplyr'
Os seguintes objetos são mascarados por 'package:stats':

    filter, lag
Os seguintes objetos são mascarados por 'package:base':

    intersect, setdiff, setequal, union
library(dplyr)

mg<- read_excel("dados-diversos.xlsx",
                       sheet = "magnesio")

mg2 <- mg |>  
  pivot_wider(names_from = trat, values_from = comp) |> 
    select(-rep)


tmg2 <- t.test(mg2$Mg2, mg2$control)

Teste T pareado: Mesmos indivíduos em dois momentos.

Pacote rstatix

Descrição: Funções relacionadas ao grupo “tidy” para estatística descritiva e testes. Uso: Realizar testes como Wilcoxon ou Kruskal-Wallis em pipelines (%>%).

if(!require(rstatix)) install.packages("rstatix")
Carregando pacotes exigidos: rstatix
Warning: pacote 'rstatix' foi compilado no R versão 4.4.2

Anexando pacote: 'rstatix'
O seguinte objeto é mascarado por 'package:stats':

    filter
library(rstatix)

escala <- read_excel("dados-diversos.xlsx",
                       sheet = "escala")

t_test(acuracia ~ assessment, 
       data = escala, 
       paired = T)
# A tibble: 1 × 8
  .y.      group1 group2     n1    n2 statistic    df       p
* <chr>    <chr>  <chr>   <int> <int>     <dbl> <dbl>   <dbl>
1 acuracia Aided1 Unaided    10    10      4.43     9 0.00166

Teste T para uma amostra: Compara média da amostra com um valor fixo

diversos <- read_excel("dados-diversos.xlsx")

teste_t <- t.test(diversos$ImageJ, mu = 500)
print(teste_t)

    One Sample t-test

data:  diversos$ImageJ
t = -172.55, df = 69, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 500
95 percent confidence interval:
 12.82394 23.96006
sample estimates:
mean of x 
   18.392 

Regressão Linear

Modela a relação entre uma variável dependente (contínua) e uma ou mais variáveis independentes (contínuas).
Objetivo: Prever ou explicar o comportamento da variável resposta. Para isso, usaremos a função “lm”, nativa do R.

fungcamp<- read_excel("dados-diversos.xlsx",
                       sheet = "fungicida_campo")

linearmodel <- lm(PROD ~ FER, data = fungcamp)
summary(linearmodel)

Call:
lm(formula = PROD ~ FER, data = fungcamp)

Residuals:
    Min      1Q  Median      3Q     Max 
-983.83 -182.07   27.37  261.10  591.92 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5286.09      91.66  57.672  < 2e-16 ***
FER           -49.60      11.28  -4.396 0.000127 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 363.2 on 30 degrees of freedom
Multiple R-squared:  0.3918,    Adjusted R-squared:  0.3715 
F-statistic: 19.32 on 1 and 30 DF,  p-value: 0.0001274
# Identificar o valor dos coeficientes beta-0 e beta-1
print(linearmodel)

Call:
lm(formula = PROD ~ FER, data = fungcamp)

Coefficients:
(Intercept)          FER  
     5286.1        -49.6  

ANOVA (Análise de Variância)

Compara médias de três ou mais grupos para verificar diferenças estatísticas.

micelial <- read_excel("dados-diversos.xlsx",
                       sheet = "micelial")

anova <- aov(tcm ~ especie, data = micelial)

summary(anova)
            Df Sum Sq Mean Sq F value   Pr(>F)    
especie      4 1.4696  0.3674   19.63 2.03e-07 ***
Residuals   25 0.4679  0.0187                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
print(anova)
Call:
   aov(formula = tcm ~ especie, data = micelial)

Terms:
                  especie Residuals
Sum of Squares  1.4695800 0.4679167
Deg. of Freedom         4        25

Residual standard error: 0.1368089
Estimated effects may be unbalanced

ANCOVA (Análise de Covariância)

Combina ANOVA e regressão linear.
O objetivo é ajustar o efeito de variáveis contínuas (covariáveis) ao comparar grupos

curve <- read_excel("dados-diversos.xlsx",
                       sheet = "curve")

ancova <- aov(severity ~ Irrigation + day + Irrigation*day, data = curve)

summary(ancova)
               Df Sum Sq Mean Sq  F value Pr(>F)    
Irrigation      1 0.0006  0.0006    0.557  0.458    
day             1 1.3360  1.3360 1151.037 <2e-16 ***
Irrigation:day  1 0.0007  0.0007    0.628  0.432    
Residuals      56 0.0650  0.0012                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Quando a interação não for significativa, deve-se retirá-la do modelo e roda-lo novamente.

ancova <- aov(severity ~ Irrigation + day, data = curve)

summary(ancova)
            Df Sum Sq Mean Sq  F value Pr(>F)    
Irrigation   1 0.0006  0.0006    0.561  0.457    
day          1 1.3360  1.3360 1158.607 <2e-16 ***
Residuals   57 0.0657  0.0012                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ANOVA bifatorial

A ANOVA bifatorial (ou ANOVA Two-Way) é um teste estatístico que avalia o efeito de dois fatores categóricos independentes sobre uma variável contínua dependente, além de verificar se há interação entre os fatores.

sensi <- read_excel("dados-diversos.xlsx",
                       sheet = "sensibilidade_fungicidas")
New names:
• `` -> `...8`
• `` -> `...9`
modsensi <- aov(germination ~ state * dose, data = sensi)
summary(modsensi)
             Df Sum Sq Mean Sq F value Pr(>F)    
state         1     18      18   0.613  0.434    
dose          5  81188   16238 548.446 <2e-16 ***
state:dose    5    215      43   1.451  0.207    
Residuals   228   6750      30                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Testes não paramétricos

São testes que não exigem suposições rígidas sobre a distribuição dos dados.

Kruskal-Wallis

ANOVA não paramétrica para comparar medianas de três ou mais grupos independentes.

if(!require(datasets)) install.packages("datasets")
library(datasets)

insect <- InsectSprays

kruskal.test(count ~ spray, data = insect)

    Kruskal-Wallis rank sum test

data:  count by spray
Kruskal-Wallis chi-squared = 54.691, df = 5, p-value = 1.511e-10

O pacote agricolae tem teste kruskal já mostrando os grupos que diferem

Pacote agricolae

Descrição: Apresenta funções estatísticas relacionadas a experimentos agrícolas.
Uso: ANOVA, testes de médias (Duncan, LSD), delineamentos experimentais.

if(!require(agricolae)) install.packages("agricolae")
Carregando pacotes exigidos: agricolae
Warning: pacote 'agricolae' foi compilado no R versão 4.4.3
library(agricolae)

kruskal(insect$count, insect$spray, group = T, console = T)

Study: insect$count ~ insect$spray
Kruskal-Wallis test's
Ties or no Ties

Critical Value: 54.69134
Degrees of freedom: 5
Pvalue Chisq  : 1.510845e-10 

insect$spray,  means of the ranks

  insect.count  r
A     52.16667 12
B     54.83333 12
C     11.45833 12
D     25.58333 12
E     19.33333 12
F     55.62500 12

Post Hoc Analysis

t-Student: 1.996564
Alpha    : 0.05
Minimum Significant Difference: 8.462804 

Treatments with the same letter are not significantly different.

  insect$count groups
F     55.62500      a
B     54.83333      a
A     52.16667      a
D     25.58333      b
E     19.33333     bc
C     11.45833      c

Teste de Wilcoxon

Versão não paramétrica para comparar duas amostras pareadas (dados não normais).
Versões:
- Wilcoxon signed-rank: Amostras dependentes.

escala <- read_excel("dados-diversos.xlsx",
                       sheet = "escala")

unaided <- escala |> 
  filter(assessment == "Unaided") |> 
  select(acuracia) |> 
  pull()

aided <- escala |> 
  filter(assessment == "Aided1") |> 
  select(acuracia) |> 
  pull()

wilcox.test(unaided, aided)

    Wilcoxon rank sum exact test

data:  unaided and aided
W = 0, p-value = 1.083e-05
alternative hypothesis: true location shift is not equal to 0
  • Wilcoxon rank-sum (Mann-Whitney U): Amostras independentes.
wilcox.test(unaided, aided, paired = F)

    Wilcoxon rank sum exact test

data:  unaided and aided
W = 0, p-value = 1.083e-05
alternative hypothesis: true location shift is not equal to 0

GLM (Modelos Lineares Generalizados)*

Estende a regressão linear para variáveis resposta não normais.
Componentes:

Família de distribuições:
- Gaussiana (normal): Para dados contínuos.
- Binomial: Para proporções/binários
- Poisson: Para contagens
- Gamma: Para dados contínuos assimétricos

Função de ligação: Conecta preditores à resposta (ex.: logit para binomial).

glm <- glm(PROD ~ FER, data = fungcamp)

summary(glm)

Call:
glm(formula = PROD ~ FER, data = fungcamp)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5286.09      91.66  57.672  < 2e-16 ***
FER           -49.60      11.28  -4.396 0.000127 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for gaussian family taken to be 131911.9)

    Null deviance: 6506243  on 31  degrees of freedom
Residual deviance: 3957358  on 30  degrees of freedom
AIC: 472.02

Number of Fisher Scoring iterations: 2