UNIVERSIDADE ESTADUAL DA PARAÍBA Curso de Tecnologia em Ciência de Dados
Disciplina: Modelagem Estatística
Professor: Ana Patrícia Bastos


# Transformar variáveis categóricas em fatores e tratar valores ausentes
dados <- dados %>%
  mutate(
    estadocivil = as.factor(estadocivil),
    Instrucao = as.factor(Instrucao),
    regiao = as.factor(regiao),
    numerodefilhos = ifelse(is.na(numerodefilhos), 0, numerodefilhos)
  )
# Exibir as primeiras linhas do conjunto de dados
kable(head(dados), caption = "Primeiras Linhas do Conjunto de Dados") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Primeiras Linhas do Conjunto de Dados
Funcio estadocivil Instrucao numerodefilhos salario idade regiao
1 solteiro fundamental 0 4.00 26 interior
2 casado fundamental 1 4.56 32 capital
3 casado fundamental 2 5.25 36 capital
4 solteiro medio 0 5.73 20 outro
5 solteiro fundamental 0 6.26 40 outro
6 casado fundamental 0 6.66 28 interior

Modelo de Regressão Linear Simples

# Ajustar o modelo
modelo_linear_simples <- lm(salario ~ idade, data = dados)

# Obter os coeficientes
coeficientes <- summary(modelo_linear_simples)$coefficients

# Ajustar o nome da coluna que apresenta problemas
colnames(coeficientes)[4] <- "P-value"

# Exibir a tabela com `kable`
kable(coeficientes, caption = "Coeficientes - Regressão Linear Simples") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Coeficientes - Regressão Linear Simples
Estimate Std. Error t value P-value
(Intercept) 2.5659446 3.8311207 0.6697634 0.5075320
idade 0.2474104 0.1087904 2.2741931 0.0293839
# Gráfico: Idade vs Salário
ggplot(dados, aes(x = idade, y = salario)) +
  geom_point(color = "blue") +
  geom_smooth(method = "lm", se = FALSE, color = "red", size = 1) +
  labs(title = "Relação entre Idade e Salário", x = "Idade", y = "Salário") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'

Modelo de Regressão Linear Múltipla

# Ajustar o modelo de Regressão Linear Múltipla
modelo_linear <- lm(salario ~ estadocivil + Instrucao + numerodefilhos + idade + regiao, data = dados)

# Obter os coeficientes do modelo
coeficientes_linear <- summary(modelo_linear)$coefficients

# Renomear a coluna com caracteres especiais
colnames(coeficientes_linear)[4] <- "P-value"

# Exibir a tabela com `kable`
kable(coeficientes_linear, caption = "Coeficientes - Regressão Linear Múltipla") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Coeficientes - Regressão Linear Múltipla
Estimate Std. Error t value P-value
(Intercept) -4.7110604 3.2727090 -1.4394987 0.1610963
estadocivilsolteiro -1.1395170 1.3684900 -0.8326820 0.4120704
Instrucaomedio 4.5784770 1.1433450 4.0044581 0.0004152
Instrucaosuperior 9.7843218 1.4833572 6.5960660 0.0000004
numerodefilhos -0.0583482 0.6026795 -0.0968146 0.9235633
idade 0.3551234 0.0879481 4.0378744 0.0003796
regiaointerior 0.5947570 1.2131638 0.4902528 0.6277748
regiaooutro -0.0175651 1.1983905 -0.0146573 0.9884096

Modelo Logístico

# Ajustar o modelo logístico
modelo_logistico <- glm(estadocivil ~ Instrucao + numerodefilhos + idade + regiao + salario, 
                        data = dados, 
                        family = binomial)
## Warning: glm.fit: probabilidades ajustadas numericamente 0 ou 1 ocorreu
# Obter os coeficientes do modelo logístico
coef_logistica <- summary(modelo_logistico)$coefficients

# Calcular Odds Ratios
odds_ratios <- exp(coef(modelo_logistico))

# Combinar os coeficientes e os Odds Ratios
tabela_logistica <- cbind(coef_logistica, Odds_Ratios = odds_ratios)

# Renomear a coluna problemática
colnames(tabela_logistica)[4] <- "P-value"

# Exibir a tabela com `kable`
kable(tabela_logistica, 
      caption = "Coeficientes e Odds Ratios - Regressão Logística") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Coeficientes e Odds Ratios - Regressão Logística
Estimate Std. Error z value P-value Odds_Ratios
(Intercept) 13.363432 6674.0374881 0.0020023 0.9984024 6.363040e+05
Instrucaomedio 3.879191 3.5450234 1.0942639 0.2738393 4.838506e+01
Instrucaosuperior 11.550252 8.8998160 1.2978079 0.1943533 1.038032e+05
numerodefilhos -51.209598 9425.5968654 -0.0054330 0.9956651 0.000000e+00
idade 0.833869 0.6504725 1.2819436 0.1998624 2.302209e+00
regiaointerior -26.235678 6674.0349087 -0.0039310 0.9968635 0.000000e+00
regiaooutro -21.703716 6674.0333494 -0.0032520 0.9974053 0.000000e+00
salario -1.796368 1.3095948 -1.3716979 0.1701575 1.659003e-01

Modelo GLM

# Ajustar o modelo GLM
modelo_glm <- glm(numerodefilhos ~ Instrucao + idade + salario + regiao, 
                  data = dados, 
                  family = poisson)

# Obter os coeficientes do modelo GLM
coef_glm <- summary(modelo_glm)$coefficients

# Renomear a coluna problemática
colnames(coef_glm)[4] <- "P-value"

# Exibir a tabela com `kable`
kable(coef_glm, 
      caption = "Coeficientes - Modelo GLM (Poisson)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Coeficientes - Modelo GLM (Poisson)
Estimate Std. Error z value P-value
(Intercept) -4.3089643 1.5108263 -2.8520581 0.0043437
Instrucaomedio 0.5802743 0.5994843 0.9679558 0.3330665
Instrucaosuperior 0.3566729 0.9222463 0.3867436 0.6989460
idade 0.0993242 0.0428613 2.3173428 0.0204851
salario 0.0172249 0.0666810 0.2583186 0.7961611
regiaointerior 0.2675794 0.4243517 0.6305604 0.5283280
regiaooutro -0.2847222 0.4878757 -0.5835957 0.5594924
# Gráfico: Número de Filhos por Instrução
ggplot(dados, aes(x = Instrucao, y = numerodefilhos)) +
  geom_boxplot(fill = "lightblue", color = "darkblue") +
  labs(title = "Distribuição do Número de Filhos por Nível de Instrução", 
       x = "Nível de Instrução", 
       y = "Número de Filhos") +
  theme_minimal()