library(tidyverse)
library(here)
library(GGally)
library(broom)
library(modelr)
library(hrbrthemes)
library(pscl)

theme_set(theme_ipsum_rc())

O speed dating consiste em juntar várias pessoas em um local e separá-las em casais, para que se conheçam e conversem durante uma quantidade curta de tempo. Após este tempo acabar, os casais são refeitos, até que todos tenham se conhecido.

Os dados que utilizaremos, possuem informações sobre encontros relâmpagos de 4 minutos envolvendo 310 jovens americanos. Com eles, buscaremos identificar quais fatores tem mais influência em um possível match entre os casais.

dados = read_csv(here("speed-dating/speed-dating2.csv")) %>% 
  mutate_all(~replace(., is.na(.), 0)) %>% 
  mutate(dec = ifelse(str_detect(tolower(dec), "yes"), 1, 0)) %>% 
  mutate(dec = as.factor(dec))

Utilizaremos as variáveis que referem-se apenas às avaliações de uma pessoa sobre outra pessoa que encontrou. As variáveis selecionadas indicam como uma pessoa avalia outra em relação a atração, diversão, inteligência e se gostou dela. Uma forma de ver como essas variáveis relacionam-se entre si e com nossa variável resposta é através de um correlograma.

dados %>% 
  select(attr,
         fun,
         intel,
         like,
         dec) %>% 
  ggpairs(progress = FALSE)

Observamos no gráfico acima que os valores das variáveis selecionadas são maiores nos casos em que dec indica um match, o que é um bom indicativo de que os fatores associados à essas variáveis influenciam na ocorrência do match.

Vejamos agora, em termos de Regressão Logística, se essas variáveis realmente influenciam no match, e como elas influenciam.

set.seed(131)

modelo = glm(formula = dec ~ attr + fun + intel + like,
             data = dados,
             family = "binomial")
             
tidy(modelo,
     conf.int = TRUE,
     exponentiate = TRUE)

Exponenciamos os valores dos coeficientes para que melhor se adequem ao modelo de regressão logística. Com isso, devemos mudar a forma de interpretar os intervalos de confiança dos coeficientes. Normalmente é necessário verificar se o zero está presente nesses intervalos. Agora, devemos procurar o número 1, já que este é o resultado de todo número elevado à 0.

Observamos que nenhum dos coeficientes possui o número 1 em seu intervalo de confiança, e todos são valores positivos. Então todas as variáveis utilizadas possuem um efeito signficativo positivo sobre a variável dec. Contudo, as variáveis attr e like são as mais fortemente significativas, pois seus valores são de 1.449 ([1.376, 1.528] com 95% de confiança) e 1.922 ([1.8, 2.056] com 95% de confiança) respectivamente. As variáveis fun e intel possuem efeito mais moderado, com valores de 1.082 ([1.034, 1.133] com 95% de confiança) e 0.871 ([0.827, 0.915] com 95% de confiança) respectivamente.

Não é possível definir um R² para o modelo, pois utilizamos regressão logística. Porém, para explicar quanto dos dados observados são explicados pelo nosso modelo, podemos utilizar um pseudo R².

pseudo_r2 <- pR2(modelo)
## fitting null model for pseudo-r2
pseudo_r2
##           llh       llhNull            G2      McFadden          r2ML 
## -2356.5513763 -3338.8632511  1964.6237497     0.2942055     0.3293287 
##          r2CU 
##     0.4433747

Utilizando o R² de McFadden, o modelo explica 29.42% dos dados observados.

De acordo com o que foi observado nos resultados e pelo valor dos coeficientes do modelo, a variável like possui maior influência sobre dec. Ou seja, quanto mais p1 gostar de p2, maiores as chances do match acontecer e p1 querer reencontrar p2.