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()
