MBA em Análise de Dados

Disciplina: EF00009 – ANÁLISE DE DADOS II
Professor: Dr. Edward Costa
Local: Universidade Federal do Ceará – UFC

Introdução

Esta prova utiliza a base de dados Affairs, disponível no pacote AER. A base é proveniente de um estudo publicado na revista Psychology Today com dados coletados por meio de uma pesquisa realizada por pesquisadores da Universidade de Fairleigh Dickinson, nos Estados Unidos.

O objetivo da base é investigar os fatores associados à infidelidade conjugal em casamentos heterossexuais. A variável resposta é uma medida binária indicando se a pessoa teve ou não casos extraconjugais. Essa base é particularmente útil para o estudo de modelos de resposta discreta (como MPL, Logit e Probit), pois a variável dependente é dicotômica (0/1).

Significado Econômico das Variáveis

As seguintes variáveis foram selecionadas para a análise por sua relevância teórica e empírica na decisão de comportamento conjugal:

  • had.affair: Variável dependente binária (1 = teve caso extraconjugal; 0 = não teve).
    • Interpretação econômica: Decisão de se envolver em um caso pode estar relacionada a fatores individuais, conjugais e contextuais.
  • age: Idade do respondente.
    • Interpretação: Idade pode afetar estabilidade emocional, insatisfação, ou maturidade conjugal.
  • yearsmarried: Anos de casamento.
    • Interpretação: Tempo de união pode ter relação não linear com a chance de infidelidade — tanto acomodação quanto desgaste podem ocorrer.
  • religiousness: Grau de religiosidade, variando de 1 (nada religioso) a 5 (muito religioso).
    • Interpretação: Valores religiosos podem influenciar normas morais e autocontrole.
  • education: Anos de educação formal.
    • Interpretação: Pode refletir tanto normas culturais quanto independência econômica.
  • rating: Avaliação subjetiva do relacionamento, variando de 1 (muito ruim) a 5 (excelente).
    • Interpretação: Quanto melhor avaliado o casamento, menor deve ser a probabilidade de infidelidade.

Carregando pacotes

pacman::p_load(AER,margins,pscl, ggplot2, dplyr)

Carregando a base

data("Affairs")
Affairs$had.affair <- ifelse(Affairs$affairs > 0, 1, 0)
head(Affairs)

PARTE 1 – MODELO DE PROBABILIDADE LINEAR (MPL)

Questão 1. Estime um Modelo de Probabilidade Linear (MPL).

model_mpl <- lm(had.affair ~ age + yearsmarried + religiousness + education + rating, data = Affairs)
summary(model_mpl)
## 
## Call:
## lm(formula = had.affair ~ age + yearsmarried + religiousness + 
##     education + rating, data = Affairs)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.64317 -0.27031 -0.15786  0.09216  1.04353 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.700401   0.142464   4.916 1.14e-06 ***
## age           -0.006554   0.002928  -2.238 0.025578 *  
## yearsmarried   0.017364   0.004906   3.540 0.000432 ***
## religiousness -0.053415   0.014875  -3.591 0.000357 ***
## education      0.008689   0.007186   1.209 0.227104    
## rating        -0.090010   0.015930  -5.651 2.48e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4124 on 595 degrees of freedom
## Multiple R-squared:  0.1011, Adjusted R-squared:  0.09357 
## F-statistic: 13.39 on 5 and 595 DF,  p-value: 2.193e-12

Questão 2. Interprete os coeficientes estimados. Qual variável tem maior impacto linear na probabilidade de infidelidade?

A análise do modelo de probabilidade linear (MPL) revela como as variáveis explicativas estão linearmente associadas à probabilidade de infidelidade. Os coeficientes estimados nos permitem quantificar o impacto de cada fator. Primeiramente, com um coeficiente de -0.006554, a idade (age) demonstra que, a cada ano de vida, a probabilidade de ter um caso diminui em aproximadamente 0.65%, um efeito que, embora pequeno, é estatisticamente significativo.

No entanto, a duração do casamento parece ter um efeito oposto. O coeficiente de yearsmarried, com um valor de 0.017364, sugere que a cada ano adicional de casamento, a probabilidade de infidelidade aumenta em cerca de 1.74%, e essa é uma associação altamente significativa. Por outro lado, fatores como a religiosidade e a satisfação no relacionamento atuam como inibidores. O aumento de uma unidade na escala de religiosidade (religiousness) está associado a uma redução de 5.34% na probabilidade de infidelidade, e este é um efeito robusto. Da mesma forma, uma avaliação mais alta do relacionamento conjugal (rating) tem um impacto ainda mais pronunciado, reduzindo a probabilidade de ter um caso em cerca de 9% a cada ponto na escala.

Diante disso, ao compararmos as magnitudes dos coeficientes, a variável com o maior impacto linear sobre a probabilidade de infidelidade é o rating. Embora o efeito de anos de casamento seja significativo, a avaliação da qualidade do relacionamento (rating) se destaca por ter um coeficiente substancialmente maior em termos absolutos (-0.090010), indicando que um relacionamento bem avaliado é o fator mais fortemente associado à diminuição da probabilidade de infidelidade neste modelo. A educação, por sua vez, não apresentou um efeito estatisticamente significativo, sugerindo que, na presença das outras variáveis, ela não é um preditor relevante de infidelidade no contexto do nosso modelo.

Questão 3. Quais são os principais problemas do MPL com variável binária?

O Modelo de Probabilidade Linear (MPL), embora intuitivamente simples, apresenta problemas significativos quando aplicado a variáveis dependentes binárias. A limitação mais notável e grave, por exemplo, é a capacidade do modelo de gerar previsões de probabilidade que ficam fora do intervalo válido de 0 a 1. Isso ocorre porque a natureza linear do modelo não restringe suas previsões, o que pode resultar em valores como -0.2 ou 1.3, que são, por definição, probabilidades sem sentido.

Além disso, o MPL enfrenta a questão da heteroscedasticidade dos erros, o que compromete a validade das inferências estatísticas. A variância do termo de erro neste modelo não é constante; na verdade, ela varia com os valores previstos das variáveis explicativas. Como consequência, a violação dessa suposição de homoscedasticidade, crucial para os Mínimos Quadrados Ordinários, torna os erros padrão estimados incorretos e, por sua vez, invalida os testes de significância (p-valores), levando a conclusões potencialmente erradas sobre a relevância das variáveis.

Finalmente, outro problema do MPL é a sua premissa de um efeito marginal constante. Este modelo assume que o impacto de uma mudança em uma variável explicativa sobre a probabilidade do evento é sempre o mesmo, independentemente do nível em que essa variável se encontra. Essa suposição, no entanto, raramente reflete a realidade de fenômenos sociais e econômicos.

Questão 4. Sugira dois modelos alternativos que corrijam os problemas do MPL.

Por essa razão, modelos alternativos como o Logit e o Probit, são mais adequados, pois eles capturam de forma mais realista a ideia de que o efeito marginal é mais forte no meio da distribuição e mais fraco nos seus extremos. Ambos são modelos de escolha discreta projetados especificamente para a análise de variáveis dependentes binárias.

O modelo Logit resolve os problemas do MPL utilizando uma função logística (uma curva em “S”) para modelar a relação entre as variáveis explicativas e a probabilidade de ocorrência do evento. Essa função transforma a combinação linear dos preditores em um valor que é garantido estar no intervalo de 0 a 1. Dessa forma, ele corrige o problema das probabilidades fora do intervalo. O modelo Logit é amplamente utilizado e tem a vantagem de ser fácil de interpretar quando se analisa a razão de chances (odds ratio).

Por sua vez o modelo Probit é muito semelhante ao Logit. Ele também usa uma curva em “S” para garantir que as probabilidades preditas estejam no intervalo de 0 a 1. A principal diferença é que ele utiliza a função de distribuição acumulada da distribuição normal padrão para realizar essa transformação. Embora os coeficientes do Probit sejam um pouco mais difíceis de interpretar diretamente do que os do Logit, os efeitos marginais calculados a partir dos dois modelos são frequentemente muito parecidos na prática.


PARTE 2 – MODELOS LOGIT E PROBIT

Questão 5. Estime um modelo Logit.

model_logit <- glm(had.affair ~ age + yearsmarried + religiousness + education + rating, 
                   data = Affairs, family = binomial("logit"))
summary(model_logit)
## 
## Call:
## glm(formula = had.affair ~ age + yearsmarried + religiousness + 
##     education + rating, family = binomial("logit"), data = Affairs)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    1.19258    0.83184   1.434 0.151669    
## age           -0.03931    0.01775  -2.215 0.026788 *  
## yearsmarried   0.10433    0.02933   3.557 0.000375 ***
## religiousness -0.32140    0.08959  -3.587 0.000334 ***
## education      0.05477    0.04233   1.294 0.195676    
## rating        -0.48069    0.09038  -5.318 1.05e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 675.38  on 600  degrees of freedom
## Residual deviance: 613.67  on 595  degrees of freedom
## AIC: 625.67
## 
## Number of Fisher Scoring iterations: 4

Questão 6. Estime um modelo Probit.

model_probit <- glm(had.affair ~ age + yearsmarried + religiousness + education + rating, 
                    data = Affairs, family = binomial("probit"))
summary(model_probit)
## 
## Call:
## glm(formula = had.affair ~ age + yearsmarried + religiousness + 
##     education + rating, family = binomial("probit"), data = Affairs)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    0.67797    0.48621   1.394 0.163199    
## age           -0.02179    0.01026  -2.124 0.033700 *  
## yearsmarried   0.05926    0.01704   3.478 0.000504 ***
## religiousness -0.18329    0.05178  -3.540 0.000400 ***
## education      0.02975    0.02467   1.206 0.227896    
## rating        -0.28036    0.05316  -5.274 1.33e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 675.38  on 600  degrees of freedom
## Residual deviance: 614.46  on 595  degrees of freedom
## AIC: 626.46
## 
## Number of Fisher Scoring iterations: 4

Questão 7. Compare os coeficientes dos modelos Logit e Probit.

Primeiramente, ao examinarmos os resultados, notamos que o sinal e a significância estatística de cada coeficiente são consistentes entre os dois modelos. Por exemplo, em ambos os casos, as variáveis age, religiousness e rating possuem coeficientes negativos e altamente significativos. Isso indica que, à medida que a idade de uma pessoa, seu nível de religiosidade ou a sua satisfação no relacionamento aumentam, a probabilidade de ter um caso de infidelidade diminui. Por outro lado, a variável yearsmarried apresenta um coeficiente positivo e estatisticamente significativo em ambos os modelos, sugerindo que um casamento mais longo está associado a uma maior probabilidade de infidelidade.

A principal diferença entre os modelos reside na magnitude dos coeficientes. O coeficiente de yearsmarried no Logit (0.10433) é cerca de 1.76 vezes maior que o do Probit (0.05926), e uma relação similar é observada para as demais variáveis significativas, como religiousness e rating. Essa disparidade de escala se deve ao fato de que o modelo Logit usa uma função de distribuição logística, enquanto o Probit usa a função de distribuição normal acumulada, resultando em diferentes escalas para os coeficientes.

Questão 8. Calcule e compare os efeitos marginais.

margins_logit <- margins(model_logit)
summary(margins_logit)
margins_probit <- margins(model_probit)
summary(margins_probit)

Questão 9. O que justifica as diferenças entre os efeitos marginais dos modelos Logit e Probit?

As diferenças entre os efeitos marginais dos modelos Logit e Probit são justificadas pela forma como cada modelo transforma a combinação linear das variáveis explicativas em probabilidade, em uma função cumulativa de probabilidade (CDF). Embora a forma geral (a curva em “S”) seja a mesma, as distribuições subjacentes são diferentes: O Logit utiliza a função logística, que tem caudas mais grossas (ou “achatadas”) do que a distribuição normal. Por sua vez o Probit utiliza a função de distribuição normal acumulada, que tem caudas mais finas.

Essa pequena diferença na forma da curva faz com que os efeitos marginais sejam ligeiramente diferentes, especialmente para valores das variáveis explicativas que resultam em probabilidades preditas muito próximas de 0 ou 1. No entanto, para a maioria dos valores no meio da distribuição (onde a curva é mais íngreme), os efeitos marginais dos dois modelos são muito parecidos.

Em suma, as diferenças são sutis e se devem à escolha da distribuição de probabilidade subjacente (logística vs. normal). Na prática, ambos os modelos levam a conclusões qualitativas e quantitativas muito semelhantes em relação aos efeitos marginais.


Questão 10. Compare desempenho usando Pseudo-R², AIC, BIC.

pR2(model_logit)
## fitting null model for pseudo-r2
##           llh       llhNull            G2      McFadden          r2ML 
## -306.83463876 -337.68849143   61.70770534    0.09136779    0.09757983 
##          r2CU 
##    0.14457488
pR2(model_probit)
## fitting null model for pseudo-r2
##           llh       llhNull            G2      McFadden          r2ML 
## -307.22773820 -337.68849143   60.92150645    0.09020371    0.09639856 
##          r2CU 
##    0.14282470
AIC(model_mpl); BIC(model_mpl)
## [1] 648.7618
## [1] 679.552
AIC(model_logit); BIC(model_logit)
## [1] 625.6693
## [1] 652.0608
AIC(model_probit); BIC(model_probit)
## [1] 626.4555
## [1] 652.847

PARTE 4 – INTERPRETAÇÃO E REFLEXÃO

Questão 11. Interprete o efeito da variável rating nos três modelos.

Em primeiro lugar, ao analisar o Pseudo-R2 de McFadden, que mede a proporção da variação explicada pelo modelo, o modelo Logit com 0.0914 tem um desempenho ligeiramente superior ao Probit, com 0.0902. Além disso, quando consideramos os critérios de informação (AIC e BIC), que penalizam modelos com mais variáveis para evitar o sobreajuste, a superioridade do modelo Logit se torna ainda mais evidente. Com os valores de AIC e BIC mais baixos (625.67 e 652.06, respectivamente), o modelo Logit é considerado o que melhor se ajusta aos dados, seguido de perto pelo Probit (AIC de 626.46 e BIC de 652.85). Em contrapartida, o MPL com um AIC e um BIC significativamente mais altos (648.76 e 679.55, respectivamente) apresenta o pior desempenho, o que confirma as desvantagens teóricas desse modelo.

A interpretação do efeito da variável rating, que mede a satisfação no relacionamento, é crucial e consistente nos três modelos, apesar das diferenças de escala. No Modelo de Probabilidade Linear (MPL), o coeficiente de -0.090010 indica que, a cada aumento de uma unidade na avaliação do relacionamento, a probabilidade de ter um caso diminui linearmente em 9%. Por outro lado, a interpretação muda nos modelos Logit e Probit. No modelo Logit, o coeficiente de -0.48069 significa que o log-odds de infidelidade diminui em 0.48 com o aumento de uma unidade no rating, o que se traduz em uma menor probabilidade. De forma análoga, no modelo Probit, o coeficiente de -0.28036 indica que o índice latente subjacente (o z-score) diminui com o aumento da satisfação no relacionamento, novamente apontando para uma menor probabilidade de infidelidade. Em suma, independentemente da metodologia utilizada, todos os modelos convergem para a mesma conclusão: uma avaliação mais alta da qualidade do relacionamento está fortemente e significativamente associada a uma menor probabilidade de infidelidade.

Questão 12. Quando preferir Logit/Probit ao MPL?

Deve-se preferir os modelos Logit ou Probit em vez do Modelo de Probabilidade Linear (MPL) em praticamente todos os cenários onde a variável dependente é binária, pois eles corrigem os principais problemas do MPL.

As razões para essa preferência são:

Validade das Probabilidades: Logit e Probit, por meio de suas funções de transformação (a curva em “S”), garantem que as probabilidades preditas estejam sempre dentro do intervalo de [0, 1]. Isso resolve o problema principal do MPL, que pode gerar probabilidades negativas ou maiores que um.

Correção da Heteroscedasticidade: Os modelos Logit e Probit tratam a variância do termo de erro de maneira mais adequada, o que resolve o problema de heteroscedasticidade presente no MPL. Isso garante que os erros padrão e os testes de significância sejam mais confiáveis.

Efeitos Marginais mais Realistas: Logit e Probit modelam uma relação não-linear entre as variáveis explicativas e a probabilidade do evento. Eles assumem que o efeito marginal de um preditor sobre a probabilidade não é constante, mas sim maior no meio da distribuição e menor nos extremos. Essa é uma suposição muito mais realista para muitos fenômenos observados no mundo real.

Em suma, embora o MPL seja mais fácil de interpretar diretamente, a sua falta de rigor estatístico e a possibilidade de gerar previsões ilógicas fazem com que o Logit e o Probit sejam a escolha padrão e mais robusta na maioria dos casos.

Questão 13. Por que o efeito marginal de religiousness pode ser diferente entre os modelos?

O efeito marginal de uma variável como religiousness pode ser diferente entre os modelos Logit e Probit porque, ao contrário do Modelo de Probabilidade Linear (MPL), o efeito marginal nesses modelos não é constante. Em vez disso, o impacto de uma mudança em uma variável na probabilidade de infidelidade depende dos valores das outras variáveis no modelo.

A principal razão para essa diferença reside nas funções de distribuição de probabilidade subjacentes que cada modelo utiliza. Enquanto o modelo Logit se baseia na função de distribuição logística para transformar as variáveis em probabilidades, o Probit utiliza a função de distribuição normal acumulada. Apesar de ambas as funções terem o mesmo formato de curva em “S”, a forma exata de suas distribuições é ligeiramente diferente. A função logística tem caudas mais grossas e um pico mais alto, enquanto a distribuição normal é um pouco mais “fina”.

Como o efeito marginal é calculado a partir da inclinação (derivada) da curva em um determinado ponto, a pequena diferença na forma dessas curvas de distribuição faz com que as inclinações sejam distintas em pontos correspondentes. Isso, por sua vez, leva a valores de efeitos marginais ligeiramente diferentes entre os modelos Logit e Probit, mesmo que eles estejam modelando o mesmo fenômeno. No entanto, é importante ressaltar que essas diferenças costumam ser pequenas e, na maioria dos casos, as conclusões qualitativas sobre o impacto da variável são as mesmas em ambos os modelos.


Extra

Questão 14. Gere um gráfico comparando as curvas de probabilidade logit e probit?

# extraindo os coeficientes dos modelos logit e probit
coef_logit <- coef(model_logit)
coef_probit <- coef(model_probit)

# criando uma nova base de dados para a visualizacao
nd <- data.frame(
  rating = seq(min(Affairs$rating), max(Affairs$rating), by = 0.01),
  age = mean(Affairs$age),
  yearsmarried = mean(Affairs$yearsmarried),
  religiousness = mean(Affairs$religiousness),
  education = mean(Affairs$education)
)

# calculando as probabilidades preditas para ambos os modelos
nd$prob_logit <- predict(model_logit, nd, type = "response")
nd$prob_probit <- predict(model_probit, nd, type = "response")

# organizar os dados para o grafico (formato longo)
plot <- nd %>%
  select(rating, prob_logit, prob_probit) %>%
  tidyr::pivot_longer(
    cols = starts_with("prob"),
    names_to = "model_type",
    values_to = "probability"
  ) %>%
  mutate(
    model_type = ifelse(model_type == "prob_logit", "Logit", "Probit")
  )

# gerando o gráfico com as duas curvas
ggplot(plot, aes(x = rating, y = probability, color = model_type)) +
  geom_line(size = 1.2) +
  labs(
    title = "Comparação das Curvas de Probabilidade (Logit vs. Probit)",
    subtitle = "Probabilidade de Ter um Caso em Função da Qualidade do Relacionamento ('rating')",
    x = "Qualidade do Relacionamento (rating)",
    y = "Probabilidade de Ter um Caso",
    color = "Modelo"
  ) +
  scale_color_manual(values = c("Logit" = "darkblue", "Probit" = "red")) +
  theme_minimal() +
  theme(legend.position = "bottom")