Exercícios resolvidos

Author

Dennison Carvalho

Qui-quadrado

  1. Distribuição de frequência conjunta do número de espécies da fauna terrestre brasileira ameaçada de extinção, por grupos taxonômicos e biomas. Brasil, 2008
amaz = c(85,20,6)
cer = c(16,48,15)
caa = c(10,25,1)
mataa = c(38,112,3)
pant = c(14,23,15)
pampas = c(5,20,17)
a_cost = c(8,16,6)

# t1_bioma = rbind(amaz,cer,caa,mataa,pant,pampas,a_cost)

t1_bioma = matrix(rbind(c(amaz,cer,caa,mataa,pant,pampas,a_cost)),7,3,byrow=TRUE)

dimnames(t1_bioma) = list("Bioma"=c("ama", "cer", "caa", "mataa", "pant", "pampas", "a_cost"),"Grupos taxonômicos"=c("Mam", "Aves", "Rép"))
t1_bioma
        Grupos taxonômicos
Bioma    Mam Aves Rép
  ama     85   20   6
  cer     16   48  15
  caa     10   25   1
  mataa   38  112   3
  pant    14   23  15
  pampas   5   20  17
  a_cost   8   16   6

Solução:

1.1 Hipóteses

\(H_{0}: \text{não existe relação entre bioma e grupos taxonômicos (variáveis independentes).}\)

\(H_{0}: \text{existe relação entre bioma e grupos taxonômicos (variáveis dependentes).}\)

1.2 Teste Qui-quadrado

A função chisq.test() é usada para fazer os testes Qui-quadrado de aderência, independência e homogeneidade. Note que, apesar de o teste apresentar resultado significativo (valor-p < 0,05)o R mostra um aviso de que pode haver um erro.

teste.chi1 = chisq.test(t1_bioma)
Warning in chisq.test(t1_bioma): Aproximação do qui-quadrado pode estar
incorreta
print(teste.chi1)

    Pearson's Chi-squared test

data:  t1_bioma
X-squared = 176.36, df = 12, p-value < 2.2e-16

Verificando os valores esperados, nota-se que existem células com valores menores que 5. Provavelmente isto deve estar acarretando erros no teste. Se a tabela fosse 2x2, poderíamos usar a correção de continuidade (chisq.test(t1_bioma, correct = TRUE)) e rodar novamente o teste.

teste.chi1$expected # valores esperados
        Grupos taxonômicos
Bioma         Mam     Aves       Rép
  ama    38.83897 58.25845 13.902584
  cer    27.64215 41.46322  9.894632
  caa    12.59642 18.89463  4.508946
  mataa  53.53479 80.30219 19.163022
  pant   18.19483 27.29225  6.512922
  pampas 14.69583 22.04374  5.260437
  a_cost 10.49702 15.74553  3.757455

Neste caso, como a tabela não é 2x2, uma solução seria recategorizar os dados, ou, retirar a variável répteis.

Obs.: seria importante consultar um especialista para oipniar sobre a retirada desta variável, ou a recategorização dos biomas que apresentaram valores esperados inferiores a 5 (cerrado e áreas costeiras).

Cada vez que inserimos um objeto no R, este pode ser acessado usando colchetes [,] ao lado do nome do objeto. Desta forma, vamos acessar os dados destes exercício, porém, retirando a variável répteis.

t2_bioma = t1_bioma[,-3] # todas as linhas da tabela t1_bioma sem a coluna 3
t2_bioma
        Grupos taxonômicos
Bioma    Mam Aves
  ama     85   20
  cer     16   48
  caa     10   25
  mataa   38  112
  pant    14   23
  pampas   5   20
  a_cost   8   16

Perceba que agora temos uma tabela 7x2 e não há valores esperados inferiores a 5. Desta forma, seguindo novamente com o teste Qui-quadrado, podemos concluir com 95% de confiabilidade que há fortes evidências contra a hipótese de nulidade (valor-p <0,05), ou seja, existe dependência entre a variável bioma e grupos taxonômicos.

teste.chi2 = chisq.test(t2_bioma)
teste.chi2$expected
        Grupos taxonômicos
Bioma     Mam Aves
  ama    42.0 63.0
  cer    25.6 38.4
  caa    14.0 21.0
  mataa  60.0 90.0
  pant   14.8 22.2
  pampas 10.0 15.0
  a_cost  9.6 14.4
print(teste.chi2)

    Pearson's Chi-squared test

data:  t2_bioma
X-squared = 99.405, df = 6, p-value < 2.2e-16

Anova 1 fator

  1. Considere as seguintes dosimetrias de mercúrio no sangue (ppb) de grupos expostos em garimpos da Amazônia Legal (Ferrari et al., Revista de Saúde Ocupacional, v.20, n.75, p.54-60, 1992).
    gar = c(24, 19, 25, 23, 13)
    rib = c(16, 8, 10, 7, 15)
    ind = c(28, 30, 19, 23, 22)
    cont = c(12, 6, 8, 7, 9)

    # dados
    y.dosi = c(gar,rib,ind,cont) # Variável resposta
    x.dosi = rep(c("Garimpeiros","Ribeirinhos","Índios","Controle"),each=5) # Variável explicativa(categórica)
    dados.dosi = data.frame(y.dosi,x.dosi) # formato de banco de dados
    # gar: Garimpeiros
    # rib: Ribeirinhos
    # ind: Índios
    # cont: Controle
    dados.dosi
   y.dosi      x.dosi
1      24 Garimpeiros
2      19 Garimpeiros
3      25 Garimpeiros
4      23 Garimpeiros
5      13 Garimpeiros
6      16 Ribeirinhos
7       8 Ribeirinhos
8      10 Ribeirinhos
9       7 Ribeirinhos
10     15 Ribeirinhos
11     28      Índios
12     30      Índios
13     19      Índios
14     23      Índios
15     22      Índios
16     12    Controle
17      6    Controle
18      8    Controle
19      7    Controle
20      9    Controle
    # gar: Garimpeiros
    # rib: Ribeirinhos
    # ind: Índios
    # cont: Controle

Verificar, considerando o nível de significância 5%, as diferenças entre as respostas médias dos grupos. Caso não sejam diferentes, faça o teste de comparação múltiplas para verificar quais tratamentos diferem entre si.

Solução:

2.1 Hipóteses

\(H_{0}: \mu_{1}=\mu_{2}=\mu_{3}=\mu_{4}\)

\(H_{0}: \text{pelo menos umas das médias }\mu_{i}\;\text{é diferente das demais.}\)

2.2 Normalidade dos dados

\(H_{0}: \text{os dados são provenientes de uma população Normal}\)

\(H_{0}: \text{c.c.}\)

Para todas as variáveis, o valor-p do teste de normalidade Shapiro-Wilk foi maior que o nível de significância. Portanto, não rejeitamos a hipótese nula de normalidade.

# teste de normalidade
shapiro.test(gar)

    Shapiro-Wilk normality test

data:  gar
W = 0.87105, p-value = 0.2707
shapiro.test(rib)

    Shapiro-Wilk normality test

data:  rib
W = 0.88096, p-value = 0.3137
shapiro.test(ind)

    Shapiro-Wilk normality test

data:  ind
W = 0.94487, p-value = 0.7005
shapiro.test(cont)

    Shapiro-Wilk normality test

data:  cont
W = 0.94273, p-value = 0.6853

2.3 Teste de homogeneidade das variâncias

\(H_{0}: \sigma_{1}^{2} = \sigma_{2}^{2} = \sigma_{2}^{3} = \sigma_{4}^{2}; \text{(variâncias homogêneas)}\)

\(H_{1}: \text{c.c.}\)

Como o valor-p é maior que o nível de significância (\(\alpha=0,05\)), não rejeitamos a hipótesde de que as variâncias são homogêneas.

#teste de homogeneidade das variâncias
bartlett.test(y.dosi ~ x.dosi,dados.dosi)

    Bartlett test of homogeneity of variances

data:  y.dosi by x.dosi
Bartlett's K-squared = 2.0415, df = 3, p-value = 0.5638

2.4 Anova

Como o valor-p foi altamente significativo (valor-p < 0,00), pode-se concluir com 95% de confiabilidade que as médias de mercúrio no sangue é diferente entre os grupos em estudo.

m.dosi = lm(y.dosi ~ x.dosi,dados.dosi)
anova.dosi = anova(m.dosi)
print(anova.dosi)
Analysis of Variance Table

Response: y.dosi
          Df Sum Sq Mean Sq F value    Pr(>F)    
x.dosi     3  871.2 290.400  17.468 2.662e-05 ***
Residuals 16  266.0  16.625                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.5 Teste de Tukey

Como rejeiramos a hipótese de nulidade, afirmando que há diferenças significativas entre as médias de mercúrio no sague de cada grupo, podemos verificar, a partid do teste de Tukey, quais grupos de fato diferem dois a dois.

Note que, apenas os pares “Ribeirinho e Controle” e “Índios e Garimpeiros” não apresentaram diferenças significativas entre suas dosimetria de mercúrio no sangue.

# Tukey
anovaT.dosi = aov(m.dosi)
tukey.dosi = TukeyHSD(anovaT.dosi)
print(tukey.dosi)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = m.dosi)

$x.dosi
                         diff        lwr       upr     p adj
Garimpeiros-Controle     12.4   5.022118 19.777882 0.0009980
Índios-Controle          16.0   8.622118 23.377882 0.0000678
Ribeirinhos-Controle      2.8  -4.577882 10.177882 0.7028505
Índios-Garimpeiros        3.6  -3.777882 10.977882 0.5194925
Ribeirinhos-Garimpeiros  -9.6 -16.977882 -2.222118 0.0090072
Ribeirinhos-Índios      -13.2 -20.577882 -5.822118 0.0005391
plot(tukey.dosi)

  1. Exemplo: As famosas cocadeiras baianas costumam produzir suas próprias quitandas. Para isso, elas cumprem a difícil tarefa de quebrar dezenas de cocos por dia. Querendo evitar trabalho desnecessário, elas desejam quebrar apenas aqueles frutos que contêm uma grande quantidade de polpa. Portanto, procedem da seguinte maneira: furam o coco, medem sua quantidade de água e, com base em sua experiência, decidem se vale a pena quebrá-lo. Como esse procedimento é impreciso, as trabalhadoras desejam a nossa ajuda. Considerando os dados apresentados na tabela abaixo, vamos ajustar um modelo adequado para predizer o volume de polpa de frutos de coco (Y) a partir de sua quantidade de água (X).
# inserindo os dados
polpa=c(9.02,13.10,14.76,21.54,15.62,18.34,20.23,8.88,14.06,23.59,16.62,21.93,10.56,12.28,20.68,9.53,13.73,5.73,15.08,21.57)

agua=c(17.87,13.75,12.72,6.98,11.01,10.48,10.19,19.11,12.72,0.45,10.67,1.59,14.91,14.14,9.40,16.23,12.74,20.64,12.34,6.44)
# colocando os dados no formato dataframe
coco = data.frame(polpa,agua)
coco
   polpa  agua
1   9.02 17.87
2  13.10 13.75
3  14.76 12.72
4  21.54  6.98
5  15.62 11.01
6  18.34 10.48
7  20.23 10.19
8   8.88 19.11
9  14.06 12.72
10 23.59  0.45
11 16.62 10.67
12 21.93  1.59
13 10.56 14.91
14 12.28 14.14
15 20.68  9.40
16  9.53 16.23
17 13.73 12.74
18  5.73 20.64
19 15.08 12.34
20 21.57  6.44

Solução:

3.1 Normalidade dos dados

Como o valor-p é maior que o nível de significância (\(\alpha = 0,05\)) em ambas variáveis, concluímos que os dados são Normais.

shapiro.test(agua)

    Shapiro-Wilk normality test

data:  agua
W = 0.96005, p-value = 0.5449
shapiro.test(polpa)

    Shapiro-Wilk normality test

data:  polpa
W = 0.9598, p-value = 0.5399

Regressão linear simples

3.2 Gráfico de dispersão e \(\rho\)

Pode-se observar a partir do gráfico de dispersão que há uma tendência negativa, ou seja, quanto maior o volume de água, menor o volume da polpa. Isto se confirma com o teste de correlação linear de Pearson, em que \(r \approx -0,95\) indica uma forte correlação negativa e significativa (valor-p < 0,05) entre as variáveis em questão.

library(ggplot2) # carrega o pacote

ggplot(coco, aes(y = polpa, x = agua))+
  geom_point()+
  xlab("Volume de água") + 
  ylab("Volume de polpa") 

cor.test(agua,polpa)

    Pearson's product-moment correlation

data:  agua and polpa
t = -12.29, df = 18, p-value = 3.433e-10
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9784843 -0.8642575
sample estimates:
       cor 
-0.9452613 

3.3 Ajuste do modelo

Verifica-se que as estimativas dos parâmetros são significativas (\(\hat{\beta}_{0}= 26,36\) e \(\hat{\beta}_{1}= -0,94\), ambos com valor-p < 0,05). O valor negativo no \(\hat{\beta}_{1}\) indica que a cada unidade de x (água) diminui em -0,94 unidade de y (polpa). Observa-se ainda que 88,76% da variabilidade do volume da polpa é explicada pelo volume da água de um coco (\(R^{2}_{ajustado} = 0,8876\)).

### ajuste

ajuste.coco = lm(polpa ~ agua, coco)
summary(ajuste.coco)

Call:
lm(formula = polpa ~ agua, data = coco)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.9375 -0.8953 -0.3369  0.6817  3.4497 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 26.36272    0.97590   27.01 5.09e-16 ***
agua        -0.94037    0.07652  -12.29 3.43e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.722 on 18 degrees of freedom
Multiple R-squared:  0.8935,    Adjusted R-squared:  0.8876 
F-statistic:   151 on 1 and 18 DF,  p-value: 3.433e-10

Pode-se concluir com 95% de confiabilidade que o volume de água é importante para o modelo \(y=26,36-0,94x\) (valor-p = 3,433\(\times 10^{-10}\)). Podemos então predizer o volume do coco a partir do volume de água. Por exemplo, dado que o volume de água de um coco qualquer é de 25 cm\(^{2}\), temos que o volume da polpa é de:

ajuste.coco$coefficients[1]+ajuste.coco$coefficients[2]*25
(Intercept) 
   2.853414