Carregamento e Preparação dos Dados

Primeiro, carregamos o conjunto de dados do arquivo Excel e preparamos a variável sexo como um fator, que é o tipo de dado correto em R para uma variável categórica.

dados <- read_excel("dados_94_alunos.xlsx")
dados$sexo <- as.factor(dados$sexo)
head(dados)
## # A tibble: 6 × 7
##      id turma sexo  altura  peso idade n_irmaos
##   <dbl> <chr> <fct>  <dbl> <dbl> <dbl>    <dbl>
## 1     1 A     1        166    58   245        2
## 2     2 C     1        169    61   237        1
## 3     3 C     1        155    60   255        1
## 4     4 C     0        172    83   284        0
## 5     5 C     1        162    62   310        1
## 6     6 B     1        160    48   227        3

Análise 1: Regressão Linear (Variável Resposta: peso)

O bjetivo é modelar a variável quantitativa peso em função das outras covariáveis.

Modelagem e Seleção do Melhor Modelo

Começamos com um modelo linear completo e usamos o método ‘step()’ (baseado no critério AIC) para selecionar o modelo mais parcimonioso e com melhor ajuste.No nosso caso, o resultado do comando step() foi o próprio modelo completo. Como todos os p-valores são menores que o nível de significância padrão de 0.05, confirmamos a decisão do step().

ml_peso <- lm(peso ~ altura + idade + sexo, data = dados)
ml_peso <- step(ml_peso, direction = "backward", trace = 0)
summary(ml_peso)
## 
## Call:
## lm(formula = peso ~ altura + idade + sexo, data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -15.514  -6.746  -2.165   3.992  38.649 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -41.44286   32.89815  -1.260  0.21102   
## altura        0.58778    0.18361   3.201  0.00189 **
## idade         0.05286    0.01992   2.653  0.00942 **
## sexo1        -7.19632    3.39600  -2.119  0.03684 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.5 on 90 degrees of freedom
## Multiple R-squared:  0.4318, Adjusted R-squared:  0.4128 
## F-statistic:  22.8 on 3 and 90 DF,  p-value: 4.57e-11

Diagnóstico de Resíduos

  • O modelo parece adequado em termos de linearidade e homocedasticidade.
  • A suposição de normalidade dos resíduos foi atendida de forma satisfatória
  • A suposição de variância constante dos erros (homocedasticidade) foi confirmada
  • Não há outliers influentes que comprometam a validade do nosso modelo.
par(mfrow=c(2, 2))
plot(ml_peso)

par(mfrow=c(1, 1))

Gráficos Exploratórios

  • Peso vs. Altura: Esta é a relação mais evidente de todas. A visualização confirma que a altura é um preditor fundamental para o peso
  • Peso vs. Idade: Visualmente, a idade parece ter uma relação positiva, porém fraca, com o peso
  • Peso vs. Sexo: A clara separação entre as duas distribuições de peso confirma que o sexo é uma variável importante para diferenciar o peso
par(mfrow=c(1, 3))

plot(dados$altura, dados$peso, main = "Peso vs. Altura", xlab = "Altura", ylab = "Peso", pch = 19)
abline(lm(peso ~ altura, data = dados), col = "red", lwd = 2)

plot(dados$idade, dados$peso, main = "Peso vs. Idade", xlab = "Idade", ylab = "Peso", pch = 19)
abline(lm(peso ~ idade, data = dados), col = "red", lwd = 2)

boxplot(peso ~ sexo, data = dados, main = "Peso vs. Sexo", xlab = "Sexo", ylab = "Peso")

par(mfrow=c(1, 1))

Análise 2: Regressão Logística (Variável Resposta: sexo)

Com base na análise de significância, o modelo final escolhido utiliza altura e peso como preditores.

mlogit_sexo <- glm(sexo ~ altura + peso, 
                   data = dados, 
                   family = binomial(link = "logit"))

summary(mlogit_sexo)
## 
## Call:
## glm(formula = sexo ~ altura + peso, family = binomial(link = "logit"), 
##     data = dados)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) 81.38394   18.84766   4.318 1.57e-05 ***
## altura      -0.43835    0.10462  -4.190 2.79e-05 ***
## peso        -0.09863    0.04180  -2.360   0.0183 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 129.246  on 93  degrees of freedom
## Residual deviance:  41.085  on 91  degrees of freedom
## AIC: 47.085
## 
## Number of Fisher Scoring iterations: 7

Odds Ratio

Analisamos o resumo do modelo e calculamos a Razão de Chances (Odds Ratio) para facilitar a interpretação dos coeficientes.

  • Para cada aumento de 1 cm na altura, a chance de um indivíduo pertencer ao sexo feminino é multiplicada por 0.645. Dito de outra forma, a chance diminui em 35.5%
  • Para cada aumento de 1 kg no peso, a chance de o indivíduo ser do sexo feminino é multiplicada por 0.906. Isso equivale a uma redução de 9.4% na chance
razao_chances <- exp(coef(mlogit_sexo))
knitr::kable(razao_chances, col.names = c("Odds Ratio"), caption = "Razão de Chances para o Modelo Logístico")
Razão de Chances para o Modelo Logístico
Odds Ratio
(Intercept) 2.211027e+35
altura 6.451015e-01
peso 9.060821e-01

Diagnóstico de Resíduos

  • Não há evidência de falta de ajuste do modelo.
  • A suposição de normalidade dos resíduos, embora não seja tão rígida quanto na regressão linear, é satisfeita de forma adequada.
  • A variância dos resíduos parece ser constante.
  • Não há outliers influentes que estejam distorcendo os resultados do modelo.
par(mfrow=c(2, 2))
plot(mlogit_sexo)

par(mfrow=c(1, 1))

Análise Gráfica

  • Probabilidade de Sexo vs. Altura: Este gráfico é a confirmação visual de que a altura é um preditor muito poderoso e eficaz para classificar o sexo neste conjunto de dados. A clareza da separação e a inclinação da curva indicam uma forte associação.
  • Probabilidade de Sexo vs. Peso: Este gráfico confirma que o peso também é um preditor útil e estatisticamente significativo. Contudo, a maior sobreposição dos dados e a inclinação mais suave da curva sugerem que seu poder de separação, embora relevante, pode ser um pouco menor do que o da altura.
dados$sexo_num <- as.numeric(dados$sexo) - 1

p1 <- ggplot(dados, aes(x = altura, y = sexo_num)) +
  geom_point(position = position_jitter(width=0, height=0.05), alpha=0.5) +
  stat_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) +
  labs(title = "Probabilidade de Sexo vs. Altura", y = "Probabilidade (Sexo)")

p2 <- ggplot(dados, aes(x = peso, y = sexo_num)) +
  geom_point(position = position_jitter(width=0, height=0.05), alpha=0.5) +
  stat_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) +
  labs(title = "Probabilidade de Sexo vs. Peso", y = "Probabilidade (Sexo)")

p1

p2

Tabela de Predição Simulada

Para entender melhor o modelo, criamos uma tabela que mostra como a probabilidade estimada e o logit mudam para diferentes valores de altura, mantendo o peso fixo na média.

  • Para um indivíduo de baixa estatura e peso médio, o modelo está extremamente confiante de que ele pertence ao sexo feminino.
  • Para um indivíduo alto e de peso médio, o modelo está extremamente confiante de que ele pertence ao sexo masculino
alturas_simuladas <- seq(min(dados$altura), max(dados$altura), by = 1)
peso_medio <- mean(dados$peso)
dados_para_predicao <- data.frame(altura = alturas_simuladas, peso = peso_medio)

prob_estimada <- predict(mlogit_sexo, newdata = dados_para_predicao, type = "response")

resultado <- data.frame(
  Altura_Simulada = alturas_simuladas,
  Probabilidade_Estimada = prob_estimada
)
resultado$Probabilidade_Complementar <- 1 - resultado$Probabilidade_Estimada
resultado$Log_Razao_de_Chances <- log(resultado$Probabilidade_Estimada / resultado$Probabilidade_Complementar)

knitr::kable(head(resultado), caption = "Início da Tabela de Predição")
Início da Tabela de Predição
Altura_Simulada Probabilidade_Estimada Probabilidade_Complementar Log_Razao_de_Chances
150 0.9998769 0.0001231 9.002372
151 0.9998092 0.0001908 8.564024
152 0.9997042 0.0002958 8.125677
153 0.9995416 0.0004584 7.687329
154 0.9992896 0.0007104 7.248981
155 0.9988992 0.0011008 6.810633
knitr::kable(tail(resultado), caption = "Fim da Tabela de Predição")
Fim da Tabela de Predição
Altura_Simulada Probabilidade_Estimada Probabilidade_Complementar Log_Razao_de_Chances
39 188 0.0004735 0.9995265 -7.654840
40 189 0.0003055 0.9996945 -8.093188
41 190 0.0001971 0.9998029 -8.531536
42 191 0.0001272 0.9998728 -8.969883
43 192 0.0000820 0.9999180 -9.408231
44 193 0.0000529 0.9999471 -9.846579

Conclusão

Este trabalho realizou uma análise estatística abrangente sobre um conjunto de dados de 94 alunos, com o duplo objetivo de modelar tanto uma variável quantitativa (peso) quanto uma variável categórica binária (sexo), utilizando as ferramentas de regressão apropriadas para cada tarefa.

A análise para a predição do peso, através da Regressão Linear, revelou que as variáveis altura, idade e sexo são, em conjunto, preditores estatisticamente significativos. O modelo final se mostrou robusto, explicando aproximadamente 41.3% da variabilidade no peso dos alunos e satisfazendo todas as suposições fundamentais, conforme validado pela análise de resíduos. Isso confirma que o modelo linear é uma ferramenta eficaz e confiável para estimar valores numéricos.

Por outro lado, para a tarefa de classificação do sexo, a Regressão Logística foi a abordagem correta e se provou muito poderosa. O modelo final, utilizando altura e peso como preditores, demonstrou uma alta capacidade de discriminação entre as categorias. A análise gráfica e dos Odds Ratios deixou claro o forte impacto, principalmente da altura, na probabilidade de um indivíduo ser de um determinado sexo. Os diagnósticos do modelo logístico também foram positivos, validando sua adequação.

Finalmente, este estudo respondeu à questão sobre qual modelo seria “melhor”. A conclusão é que a escolha do modelo não se baseia em qual é superior em um sentido abstrato, mas sim em qual ferramenta é apropriada para a pergunta de pesquisa. * Para responder “Quanto?” (prever peso), o modelo linear é o correto. * Para responder “Qual categoria?” (classificar sexo), o modelo logístico é o correto.

Em suma, a análise demonstrou com sucesso a aplicação de dois modelos estatísticos fundamentais, revelou as relações significativas entre as características físicas dos alunos e reforçou o princípio de que a escolha da técnica analítica deve ser sempre guiada pela natureza dos dados e pelos objetivos da investigação.