Trabalho Estatística Computacional I
Caio VAOS
2025.2
O objetivo deste trabalho é apresentar um exemplo prático do estudo de comparação de médias entre grupos de uma população.
Para isso, será empregado o método de análise de variância (ANOVA), avaliando se diferentes grupos apresentam diferenças estatisticamente significativas em suas médias.
Uma empresa de equipamentos esportivos está testando quatro diferentes designs de bolas de golfe (Design1, Design2, Design3 e Design4) para avaliar qual delas proporciona maior distância média ao ser golpeada.
Cada design foi testado em 10 arremessos, medindo a distância atingida em metros.
A base de dados pode ser obtida com os seguintes códigos:
Design <- c(
rep("Design1", 10),
rep("Design2", 10),
rep("Design3", 10),
rep("Design4", 10)
)
Distance <- c(
206.32, 207.94, 206.19, 204.45, 209.65, 203.81, 206.75, 205.68, 204.49, 210.86,
217.08, 221.43, 218.04, 224.13, 211.82, 213.9, 221.28, 229.43, 213.54, 214.51,
226.77, 224.79, 229.75, 228.51, 221.44, 223.85, 223.97, 234.3, 219.5, 233,
230.55, 227.95, 231.84, 224.87, 229.49, 231.1, 221.53, 235.45, 228.35, 225.09
)
golf_data <- data.frame(Design, Distance)A Tabela a seguir apresenta um resumo estatístico das distâncias obtidas para cada design avaliado.
golf_data %>%
group_by(Design) %>%
summarise(
n = n(),
Média = mean(Distance),
Mediana = median(Distance),
Variância = var(Distance),
Mínimo = min(Distance),
Máximo = max(Distance),
IQR = IQR(Distance)
) %>%
kableExtra::kable(
format = "html",
caption = "Resumo estatístico por Design",
digits = 2,
align = "c"
) %>%
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
position = "center"
)| Design | n | Média | Mediana | Variância | Mínimo | Máximo | IQR |
|---|---|---|---|---|---|---|---|
| Design1 | 10 | 206.61 | 206.26 | 5.25 | 203.81 | 210.86 | 2.85 |
| Design2 | 10 | 218.52 | 217.56 | 30.67 | 211.82 | 229.43 | 7.34 |
| Design3 | 10 | 226.59 | 225.78 | 23.18 | 219.50 | 234.30 | 5.56 |
| Design4 | 10 | 228.62 | 228.92 | 16.11 | 221.53 | 235.45 | 5.16 |
Em seguida, o boxplot é utilizado para comparar visualmente a distribuição das distâncias entre os diferentes designs.
ggplot(golf_data, aes(x = Design, y = Distance)) +
geom_boxplot(
fill = "#2FA4E7",
) +
labs(
title = "Distância por Design",
x = "",
y = "Distância (m)"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold",
hjust = 0.5,
color = "#1C6EA4",
size = 16),
strip.text = element_text(size = 11, face = "bold"),
axis.text.x = element_text(face = "bold")
)Pelo boxplot, percebe-se como os dados estão distribuídos em cada grupo.
Observa-se que os Designs 3 e 4 apresentam distribuições bastante próximas, enquanto os demais designs mostram diferenças claras em relação a eles.
No entanto, apenas a inspeção visual não é suficiente para confirmar essas diferenças; por isso, daremos continuidade à análise estatística para verificar formalmente os padrões observados no gráfico.
Assume-se que os diferentes designs são independentes entre si, e que as amostras de distância foram coletadas de forma independente.
Para verificar a suposição de normalidade em cada grupo, utilizei três abordagens complementares:
1. Análise gráfica da distribuição (densidade)
Primeiro, observei a densidade de cada grupo para verificar a forma geral da distribuição:
ggplot(golf_data, aes(x = Distance)) +
geom_density(fill = "#2FA4E7", alpha = 0.6, color = "#1C6EA4", linewidth = 1) +
facet_wrap(~ Design, scales = "free_y") +
labs(
x = "Distância",
y = "Densidade",
title = "Distribuição da Distância por Design"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#1C6EA4"),
strip.text = element_text(size = 11, face = "bold"),
panel.grid.minor = element_blank(),
panel.grid.major.y = element_blank()
)Os gráficos de densidade fornecem uma primeira indicação visual do comportamento das distribuições.
No entanto, como o tamanho amostral é pequeno, a forma observada pode não refletir adequadamente a distribuição populacional.
2. Comparação com a distribuição normal (QQ-Plot)
Em seguida, utilizei QQ-plots para comparar os quantis amostrais com os quantis teóricos de uma distribuição normal:
ggplot(golf_data, aes(sample = Distance)) +
stat_qq_band(fill = "#D4E9F7") +
stat_qq_line(color = "#1C6EA4", linewidth = 1) +
stat_qq_point(color = "black", size = 2) +
facet_wrap(~ Design, scales = "free") +
labs(
x = "Quantis Teóricos",
y = "Quantis Amostrais",
title = "Gráfico QQ por Design"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#1C6EA4"),
strip.text = element_text(size = 11, face = "bold"),
panel.grid.minor = element_blank()
)A maior parte dos pontos se mantém próxima da linha teórica e dentro da margem de erro, indicando boa aderência à distribuição normal.
3. Teste formal de normalidade (Shapiro–Wilk)
Por fim, apliquei o teste de normalidade de Shapiro–Wilk para cada grupo:
## golf_data$Design: Design1
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.93134, p-value = 0.4612
##
## ------------------------------------------------------------
## golf_data$Design: Design2
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.93574, p-value = 0.5067
##
## ------------------------------------------------------------
## golf_data$Design: Design3
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.96582, p-value = 0.8497
##
## ------------------------------------------------------------
## golf_data$Design: Design4
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.98217, p-value = 0.9757
Os valores de p obtidos foram altos (o menor deles igual a 0,46), o que indica que não há evidências estatísticas contra a hipótese de normalidade em nenhum dos grupos.
Portanto, é razoável admitir que as populações podem ser tratadas como normais.
Agora desejo testar a homocedasticidade, isto é, verificar se os grupos possuem variâncias iguais.
Como todos os grupos apresentaram bom ajuste à normalidade, aplico o teste de Bartlett:
##
## Bartlett test of homogeneity of variances
##
## data: Distance by Design
## Bartlett's K-squared = 6.2982, df = 3, p-value = 0.09797
Com nível de significância de 5% e valor de p igual a 0.09797, não rejeito a hipótese nula de variâncias iguais. Assim, aceito a homocedasticidade entre os quatro grupos.
Como todas as suposições foram verificadas (independência, normalidade e homocedasticidade) e validadas, procedo à análise de variância (ANOVA):
## Df Sum Sq Mean Sq F value Pr(>F)
## Design 3 2991.0 997.0 53.03 2.73e-13 ***
## Residuals 36 676.8 18.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
O valor de p obtido \(\approx 2.73 \times e^{-13}\) é muito menor que o nível de significância de 5%. Assim, rejeito a hipótese nula de igualdade das médias entre os designs. Portanto, existe evidência estatística de que ao menos um dos designs apresenta média diferente dos demais.
Para identificar quais grupos diferem entre si, aplico o teste de comparações múltiplas de Bonferroni:
Bonferroni = pairwise.t.test(x = golf_data$Distance,
g = golf_data$Design,
p.adjust.method = "bonferroni")
Bonferroni##
## Pairwise comparisons using t tests with pooled SD
##
## data: golf_data$Distance and golf_data$Design
##
## Design1 Design2 Design3
## Design2 2.7e-06 - -
## Design3 1.7e-11 0.0011 -
## Design4 1.1e-12 4.7e-05 1.0000
##
## P value adjustment method: bonferroni
df_p <- as.data.frame(Bonferroni$p.value) %>%
mutate(Group1 = rownames(.)) %>%
pivot_longer(
cols = -Group1,
names_to = "Group2",
values_to = "p"
) %>%
filter(!is.na(p))
ggplot(df_p, aes(Group1, Group2, fill = p)) +
geom_tile(color = "white") +
geom_text(aes(
label = ifelse(
p < 0.001,
format(p, scientific = TRUE, digits = 2),
sprintf("%.4f", p)
)
),
color = "black", size = 4) +
scale_fill_gradient(
low = "#2FA4E7",
high = "white",
na.value = "white"
) +
labs(
title = "Matriz de p-valor (Bonferroni)",
x = "",
y = ""
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(
hjust = 0.5, face = "bold", color = "#1C6EA4"
),
panel.grid = element_blank()
)Com base nos valores ajustados de p, observo que:
Todas as combinações de designs diferem significativamente entre si, exceto o par Design 3 vs Design 4, cujo p é 1.
Com base nos resultados obtidos — incluindo a verificação das suposições, a ANOVA e as comparações múltiplas com ajuste de Bonferroni — conclui-se que:
Os Designs 3 e 4 não diferem significativamente entre si, apresentando médias de distância estatisticamente iguais.
Todos os demais pares de designs apresentam diferenças significativas, indicando que suas médias de distância são distintas.
Portanto, apenas os Designs 3 e 4 podem ser considerados semelhantes em termos de desempenho, enquanto os demais designs exibem comportamentos estatísticos diferentes.
Determinada empresa está interessada em avaliar a produtividade de seus funcionários de acordo com o local de trabalho. Para isso, foram coletadas pontuações de produtividade (Escore) de colaboradores que atuam em três tipos de ambiente de trabalho:
Espaço de coworking;
Home office; e
Híbrido (uma combinação de presencial e remoto).
Cada colaborador recebeu uma pontuação de produtividade baseada em indicadores de desempenho durante um período de avaliação.
Os resultados obtidos foram:
Tipo <- c(
rep("Coworking", 42),
rep("Home_office", 42),
rep("Hibrido", 44)
)
Escore <- c(
95.43, 87.46, 94.23, 97.02, 94.64, 71.32,
93.90, 71.00, 71.56, 87.58, 74.46, 98.80,
91.68, 74.20, 87.97, 86.68, 88.27, 80.37,
86.44, 72.77, 52.87, 90.43, 92.90, 74.08,
95.36, 65.74, 83.31, 80.58, 98.72, 99.98,
84.59, 87.20, 72.37, 59.57, 78.70, 84.60,
97.18, 96.85, 78.23, 79.23, 70.49, 66.14,
62.79,
64.21, 59.14, 44.01, 78.88, 73.60, 66.38,
62.46, 82.66, 86.51, 97.06, 63.61, 82.37,
70.26, 65.00, 63.20, 78.86, 86.76, 61.33,
68.09, 89.91, 69.05, 54.72, 84.91, 77.74,
79.97, 65.56, 45.73, 84.07, 69.44, 70.66,
85.04, 65.64, 63.21, 54.94, 63.95, 81.27,
60.71, 65.71, 74.84, 72.83, 72.03, 68.62,
54.28,
93.09, 71.42, 70.34, 59.75, 61.21, 72.65,
80.22, 99.59, 86.50, 90.13, 84.61, 85.24,
62.33, 91.65, 81.74, 97.98, 82.12, 78.21,
66.00, 74.30, 67.03, 75.72, 84.26, 82.79,
61.38, 55.22, 85.31, 86.78, 66.29, 76.81,
71.48, 74.75, 69.44, 76.68, 71.36, 92.43,
82.00, 85.01, 64.15, 91.37, 84.48, 91.60
)
Dados_Trabalho <- data.frame(Tipo, Escore)O objetivo desta análise é investigar se existem diferenas significativas nas médias de produtividade entre os três tipos de ambiente de trabalho.
A tabela a seguir apresenta um resumo estatístico dos escores obtidos em cada modalidade:
Dados_Trabalho %>%
group_by(Tipo) %>%
summarise(
n = n(),
Média = mean(Escore),
Mediana = median(Escore),
Variância = var(Escore),
Mínimo = min(Escore),
Máximo = max(Escore),
IQR = IQR(Escore)
) %>%
kableExtra::kable(
format = "html",
caption = "Resumo estatístico por modalide de trabalho",
digits = 2,
align = "c"
) %>%
kableExtra::kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
position = "center"
)| Tipo | n | Média | Mediana | Variância | Mínimo | Máximo | IQR |
|---|---|---|---|---|---|---|---|
| Coworking | 42 | 83.21 | 85.52 | 135.44 | 52.87 | 99.98 | 19.54 |
| Hibrido | 44 | 77.46 | 77.51 | 132.85 | 54.28 | 99.59 | 16.02 |
| Home_office | 42 | 70.69 | 69.25 | 134.90 | 44.01 | 97.06 | 16.39 |
Em seguida, utilizamos o boxplot para comparar visualmente a distribuição dos escores entre os três ambientes de trabalho:
ggplot(Dados_Trabalho, aes(x = Tipo, y = Escore)) +
geom_boxplot(
fill = "#2FA4E7",
) +
labs(
title = "Escore por Modalidade de Trabalho",
x = "",
y = "Escore"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold",
hjust = 0.5,
color = "#1C6EA4",
size = 16),
strip.text = element_text(size = 11, face = "bold"),
axis.text.x = element_text(face = "bold")
)Com base no boxplot, observa-se:
o grupo Home office apresenta valores mais baixos, enquanto o grupo Coworking tende a apresentar escores mais elevados. Já o grupo Híbrido situa-se entre os dois.
No entanto, a inspeção visual não é suficiente para concluir se as médias diferem estatisticamente. Portanto, daremos continuidade à análise estatística formal.
Assume-se que as observações são independentes dentro de cada grupo e que as modalidades de trabalho também são independentes entre si.
Para verificar a suposição de normalidade em cada grupo, foram utilizadas três abordagens complementares:
1. Análise gráfica da distribuição (densidade)
Primeiro, observei a densidade de cada grupo para verificar a forma geral da distribuição:
ggplot(Dados_Trabalho, aes(x = Escore)) +
geom_density(fill = "#2FA4E7", alpha = 0.6, color = "#1C6EA4", linewidth = 1) +
facet_wrap(~ Tipo, scales = "free_y") +
labs(
x = "Escore",
y = "Densidade",
title = "Distribuição do Escore por Ambiente"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#1C6EA4"),
strip.text = element_text(size = 11, face = "bold"),
panel.grid.minor = element_blank(),
panel.grid.major.y = element_blank()
)Os gráficos de densidade fornecem uma primeira indicação visual do comportamento das distribuições.
2. Comparação com a distribuição normal (QQ-Plot)
Em seguida, utilizei QQ-plots para comparar os quantis amostrais com os quantis teóricos de uma distribuição normal:
ggplot(Dados_Trabalho, aes(sample = Escore)) +
stat_qq_band(fill = "#D4E9F7") +
stat_qq_line(color = "#1C6EA4", linewidth = 1) +
stat_qq_point(color = "black", size = 2) +
facet_wrap(~ Tipo, scales = "free") +
labs(
x = "Quantis Teóricos",
y = "Quantis Amostrais",
title = "Gráfico QQ por Ambiente"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#1C6EA4"),
strip.text = element_text(size = 11, face = "bold"),
panel.grid.minor = element_blank()
)No grupo Coworking observa-se uma dispersão dos pontos em relação à linha de referência, indicando divergência da normalidade. Já nos grupos Home office e Híbrido, os pontos apresentam alinhamento mais próximo ao esperado para uma distribuição normal.
3. Teste formal de normalidade (Shapiro–Wilk)
Por fim, apliquei o teste de normalidade de Shapiro–Wilk para cada modalidade:
## Dados_Trabalho$Tipo: Coworking
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.95185, p-value = 0.07525
##
## ------------------------------------------------------------
## Dados_Trabalho$Tipo: Hibrido
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.97839, p-value = 0.5704
##
## ------------------------------------------------------------
## Dados_Trabalho$Tipo: Home_office
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.978, p-value = 0.5851
Os valores de p obtidos para os grupos Home office e Híbrido foram aceitáveis, indicando ausência de evidências contra a normalidade. Já o grupo Coworking apresentou p mais baixo, de 0.07525, que ainda assim é maior que o nível de significância de 5%.
Portanto, considerando todas as evidências assumo a normalidade dos três grupos.
Agora desejo testar a homocedasticidade, isto é, verificar se os grupos possuem variâncias iguais.
Utilizo o teste de Levene, que é mais adequado quando há suspeita de violação da normalidade em algum dos grupos, pois ele é mais robusto a desvios da normalidade do que o teste de Bartlett.
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.0397 0.9611
## 125
O teste apresentou um valor de p igual a 0.9611, indicando forte evidência a favor da homogeneidade das variâncias.
Assim, conclui-se que as variâncias dos três grupos podem ser consideradas iguais.
Com todas as suposições verificadas — independência, normalidade (ainda que com pequena ressalva no grupo Coworking, mas tolerável para ANOVA devido à sua robustez) e homocedasticidade — dou continuidade à análise de variância.
## Df Sum Sq Mean Sq F value Pr(>F)
## Tipo 2 3299 1649.3 12.27 1.36e-05 ***
## Residuals 125 16796 134.4
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
O valor de p obtido \(\approx 1.36 \times e^{-5}\) é menor que o nível de significância de 5%. Assim, rejeito a hipótese nula de igualdade das médias entre os escores das modalidades de trabalho. Portanto, existe evidência estatística de que ao menos uma das modalidades apresenta média diferente das demais.
Para identificar quais grupos diferem entre si, aplico o teste de comparações múltiplas de Tukey HSD:
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Escore ~ Tipo, data = Dados_Trabalho)
##
## $Tipo
## diff lwr upr p adj
## Hibrido-Coworking -5.750087 -11.68148 0.1813094 0.0595474
## Home_office-Coworking -12.518810 -18.51878 -6.5188402 0.0000070
## Home_office-Hibrido -6.768723 -12.70012 -0.8373269 0.0209989
Com base nos valores ajustados de p, observo que:
todos têm médias diferentes, exceto o par Híbrido–Coworking, que apresenta um p-valor pequeno, porém ainda maior que o nível de significância adotado.
tuk_df <- as.data.frame(tuk$Tipo) |> mutate( contrast = rownames(tuk$Tipo), contrast = factor(contrast, levels = rev(contrast)) )
ggplot(tuk_df, aes(x = diff, y = contrast)) +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") +
geom_errorbarh(
aes(xmin = lwr, xmax = upr),
height = 0.25,
color = "#1C6EA4",
linewidth = 1
) +
geom_point(size = 3, color = "#2FA4E7") +
geom_text(
aes(label = contrast, y = as.numeric(contrast) + 0.25),
x = min(tuk_df$lwr) - 0.02 * diff(range(tuk_df$diff)),
hjust = 0,
size = 4,
color = "black"
) +
scale_y_discrete(position = "right") +
labs(
title = "Intervalos de Confiança – Teste de Tukey HSD",
x = "Diferença entre Médias",
y = ""
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
hjust = 0.5,
color = "#1C6EA4",
size = 16
),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
panel.grid.minor = element_blank()
)A partir desse gráfico, observo que apenas o par Híbrido–Coworking possui um intervalo de confiança que inclui o valor 0, indicando ausência de diferença significativa entre as médias destes dois ambientes. Para os demais pares, os intervalos não cruzam o zero, confirmando diferenças estatisticamente significativas.
Com base nos resultados obtidos — incluindo a verificação das suposições, a ANOVA e as comparações múltiplas de Tukey — conclui-se que:
Apenas o par Híbrido–Coworking apresenta médias estatisticamente iguais. Embora o p-valor seja relativamente pequeno, ele ainda é maior que o nível de significância adotado, indicando ausência de diferença significativa entre esses dois ambientes.
Para os demais pares de comparação, os testes apontaram diferenças estatisticamente significativas nas médias de produtividade, reforçando que o tipo de ambiente de trabalho influencia o desempenho dos colaboradores na maior parte dos casos analisados.