###################################
## Q1 — Comprimento vs. Local    ##
## Autora: Victória Souza        ##
###################################
# 0) Ler dados e preparar fator -------------------------------------------
dados <- read.table("questao1.txt", header = TRUE, dec = ".")
# Garante que "local" é fator e na ordem A-D
dados$local <- factor(dados$local, levels = c("A","B","C","D"))
# Visão geral
dados
##    local comprimento
## 1      A        3.20
## 2      A        2.60
## 3      A        2.80
## 4      A        3.30
## 5      A        3.72
## 6      A        2.90
## 7      A        3.00
## 8      A        3.06
## 9      A        2.50
## 10     A        3.90
## 11     A        2.50
## 12     A        3.32
## 13     A        3.65
## 14     A        3.15
## 15     A        4.10
## 16     A        3.30
## 17     A        3.45
## 18     A        3.10
## 19     A        3.15
## 20     A        2.80
## 21     A        2.90
## 22     A        1.95
## 23     A        3.60
## 24     A        3.35
## 25     B        2.33
## 26     B        2.95
## 27     B        2.60
## 28     B        3.65
## 29     B        2.55
## 30     B        2.35
## 31     B        2.95
## 32     B        3.00
## 33     B        3.75
## 34     B        3.15
## 35     B        3.20
## 36     B        2.53
## 37     B        3.32
## 38     B        2.53
## 39     B        2.90
## 40     B        3.20
## 41     B        4.22
## 42     B        2.42
## 43     B        2.73
## 44     B        2.45
## 45     B        3.41
## 46     B        3.13
## 47     B        3.42
## 48     B        3.25
## 49     C        3.25
## 50     C        2.71
## 51     C        3.15
## 52     C        2.89
## 53     C        2.71
## 54     C        3.30
## 55     C        3.25
## 56     C        3.22
## 57     C        2.83
## 58     C        4.63
## 59     C        1.73
## 60     C        2.76
## 61     C        4.21
## 62     C        2.12
## 63     C        4.43
## 64     C        2.91
## 65     C        2.30
## 66     C        2.74
## 67     C        2.94
## 68     C        2.60
## 69     C        2.74
## 70     C        2.56
## 71     C        3.90
## 72     C        2.51
## 73     D        2.35
## 74     D        2.47
## 75     D        3.83
## 76     D        3.40
## 77     D        3.41
## 78     D        1.54
## 79     D        3.82
## 80     D        2.71
## 81     D        2.94
## 82     D        3.62
## 83     D        2.13
## 84     D        3.16
## 85     D        2.45
## 86     D        3.45
## 87     D        3.14
## 88     D        2.15
## 89     D        2.46
## 90     D        2.72
## 91     D        2.99
## 92     D        3.26
## 93     D        3.68
## 94     D        3.20
## 95     D        3.10
## 96     D        2.89
summary(dados)
##  local   comprimento   
##  A:24   Min.   :1.540  
##  B:24   1st Qu.:2.600  
##  C:24   Median :3.000  
##  D:24   Mean   :3.027  
##         3rd Qu.:3.320  
##         Max.   :4.630
str(dados)
## 'data.frame':    96 obs. of  2 variables:
##  $ local      : Factor w/ 4 levels "A","B","C","D": 1 1 1 1 1 1 1 1 1 1 ...
##  $ comprimento: num  3.2 2.6 2.8 3.3 3.72 2.9 3 3.06 2.5 3.9 ...
# 1) Homogeneidade de variâncias ------------------------------------------
# Teste de Levene
car::leveneTest(comprimento ~ local, data = dados, center = median)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.6166  0.606
##       92

Interpretação: Teste de Levene (homocedasticidade): F(3,92)=0,617; p=0,606. P-value > 0,05, ou seja, não rejeita H0 (os dados são homocedasticos).

# 2) ANOVA de 1 fator ------------------------------------------------------
resultado.anova <- aov(comprimento ~ local, data = dados)

# 3) Normalidade dos resíduos ---------------------------------------------
# Teste formal
shapiro.test(residuals(resultado.anova))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(resultado.anova)
## W = 0.98813, p-value = 0.5476

Interpretação: Shapiro–Wilk nos resíduos (normalidade): W=0,988; p=0,548. P-value > 0,05, ou seja, não rejeita H0 (os dados são normais).

# QQ-plot dos resíduos
qqnorm(residuals(resultado.anova)); qqline(residuals(resultado.anova), lty = 2)

Interpretação: Figura 1: Os pontos seguem próximo à linha tracejada reta. Dados tendem à normalidade.

# Densidade + QQ-plot com objeto lm (mesmo ajuste; para confirmar visualmente)
lm1 <- lm(comprimento ~ local, data = dados)
plot(density(residuals(lm1)))

Interpretação: Figura 2: A curva de densidade é próxima ao formato de sino, centrada próximo de 0 e com simetria nas caudas. Padrão compatível com características que indicam normalidade.

plot(lm1, which = 3) 

Interpretação:: Figura 3: A linha LOESS (vermelha) está quase horizontal e o espalhamento dos resíduos padronizados é parecido ao longo dos valores ajustados, indicando variância constante. Homocedasticidade atendida.

qqnorm(residuals(lm1)); qqline(residuals(lm1), lty = 2)

# 4) Resultado da ANOVA + Tukey -------------------------------------------
summary(resultado.anova)
##             Df Sum Sq Mean Sq F value Pr(>F)
## local        3  0.446  0.1485   0.455  0.714
## Residuals   92 30.016  0.3263
TukeyHSD(resultado.anova)  # (executado por completude)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = comprimento ~ local, data = dados)
## 
## $local
##            diff        lwr       upr     p adj
## B-A -0.13791667 -0.5693650 0.2935317 0.8369801
## C-A -0.12125000 -0.5526984 0.3101984 0.8826096
## D-A -0.18458333 -0.6160317 0.2468650 0.6785304
## C-B  0.01666667 -0.4147817 0.4481150 0.9996275
## D-B -0.04666667 -0.4781150 0.3847817 0.9920411
## D-C -0.06333333 -0.4947817 0.3681150 0.9806130

Interpretação: ANOVA e Tukey: F(3,92)=0,455; p=0,714. P-value > 0,05, ou seja, comprimento sem diferença significativa entre locais. Como a ANOVA já não havia detectado diferenças significativas, Tukey apenas corrobora que não há diferença par a par.

# 5) Saída compacta -------------------------------------------------------
tab <- anova(resultado.anova)
p   <- summary(resultado.anova)[[1]][["Pr(>F)"]][1]
Fv  <- summary(resultado.anova)[[1]][["F value"]][1]
df1 <- tab$Df[1]; df2 <- tab$Df[2]
cat(sprintf("ANOVA 1 via: F(%d,%d) = %.3f, p = %.3f\n", df1, df2, Fv, p))
## ANOVA 1 via: F(3,92) = 0.455, p = 0.714
# 6) Gráficos de comparação -----------------------------------------------

# (a) Linha com IC (média ± IC95%)
if (!requireNamespace("sciplot", quietly = TRUE)) install.packages("sciplot")
sciplot::lineplot.CI(local, comprimento, data = dados, las = 1,
                     xlab = "Local", ylab = "Comprimento")

Interpretação: Figura 4: Os Intervalos de Confiança (95%) dos quatro locais se sobrepõem amplamente, não há evidência visual de diferenças.

# (b) Boxplot + pontos individuais (jitter)
boxplot(comprimento ~ local, data = dados, las = 1,
        xlab = "Local", ylab = "Comprimento", main = "Comprimento por local")
stripchart(comprimento ~ local, data = dados, vertical = TRUE,
           method = "jitter", pch = 19, add = TRUE)

Interpretação: Figura 5: A distribuição dos comprimentos é semelhante entre A–D, sem deslocamentos claros de mediana.