atividade = read_projectdata()

dados = atividade %>%
  filter(!is.na(seguidores), 
         n_retweet > 0,
         engaj_total > 0, 
         seguidores > 0,
         segue > 0,
         n_proprio > 0,
         engaj_mediano > 0
         )

atividade2 = dados %>% 
  mutate(seguidores_log = log10(seguidores), 
         n_proprio_log = log10(n_proprio), 
         n_retweet_log = log10(n_retweet))

Sua tarefa é agora criar dois modelos usando regressão linear múltipla, com as transformações que forem necessárias nas variáveis, para responder:

obs.: Por “características”, queremos dizer: qual a casa (senado/câmara) do parlamentar, quantas pessoas ele segue, por quantas ele é seguido, quanto ele tuíta e quanto ele retuíta.

  1. Qual a relação entre as características da atuação do parlamentar e o engajamento total que ele obtém no twitter?
modelo_engaj_total = lm(log10(engaj_total) ~ log10(n_retweet) + 
              casa + 
              log10(seguidores) +
              log10(n_proprio),
                   data = dados)

tidy(modelo_engaj_total)
## # A tibble: 5 x 5
##   term              estimate std.error statistic  p.value
##   <chr>                <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)         0.0174    0.223     0.0781 9.38e- 1
## 2 log10(n_retweet)    0.835     0.0757   11.0    8.59e-24
## 3 casasenado         -0.0377    0.106    -0.356  7.22e- 1
## 4 log10(seguidores)   0.517     0.0568    9.11   1.46e-17
## 5 log10(n_proprio)    0.495     0.101     4.89   1.69e- 6
glance(modelo_engaj_total)
## # A tibble: 1 x 11
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <int>  <dbl> <dbl> <dbl>
## 1     0.701         0.697 0.715      167. 1.67e-73     5  -312.  636.  658.
## # … with 2 more variables: deviance <dbl>, df.residual <int>
dados %>% 
  ggplot(aes(x = n_retweet, y = engaj_total)) + 
  geom_point(alpha = 0.4) + 
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_log10() +
  scale_y_log10()

dados %>%
  ggplot(aes(x = seguidores, y = engaj_total)) + 
  geom_point(alpha = 0.4) + 
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_log10() + 
  scale_y_log10()

dados %>%
  ggplot(aes(x = n_proprio, y = engaj_total)) + 
  geom_point(alpha = 0.4) + 
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_log10() + 
  scale_y_log10()

#para_plotar_modelo = atividade2 %>% 
#  data_grid(n_proprio_log = seq_range(n_proprio_log, 10), # Crie um vetor de 10 valores no range
#            n_retweet_log = seq_range(n_retweet_log, 3), # todos na média
#            casa = c("câmara", "senado")) %>% 
#  add_predictions(modelo)

#glimpse(para_plotar_modelo)


#ggplot(data = atividade2, aes(x = n_proprio_log)) + 
#  geom_point(aes(y = seguidores_log)) + 
#  geom_line(data = para_plotar_modelo, aes(y = pred, group =  n_retweet_log, color = n_retweet_log), size = 1.5) + 
#  facet_wrap(~ casa)

Quatro variáveis que poderiam afetar o engajamento total foram analisadas, no entanto foram escolhidas apenas três. Uma vez que pode-se observar que o quanto um parlamentar segue não afetará o seu engajamento total.

dados_refinados = dados %>% 
  mutate(log_seguidores = log10(seguidores),
         log_n_proprio = log10(n_proprio),
         log_n_retweet = log10(n_retweet),
         log_engaj_total = log10(engaj_total)) %>% 
  filter(log_n_proprio != -Inf,
         log_seguidores != -Inf,
         log_n_retweet != - Inf,
         log_engaj_total != -Inf)

modelo = lm(log_engaj_total ~ log_n_proprio + log_n_retweet + log_seguidores, 
   data = dados_refinados)
tidy(modelo)
## # A tibble: 4 x 5
##   term           estimate std.error statistic  p.value
##   <chr>             <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)      0.0246    0.222      0.111 9.12e- 1
## 2 log_n_proprio    0.493     0.101      4.88  1.72e- 6
## 3 log_n_retweet    0.840     0.0739    11.4   5.76e-25
## 4 log_seguidores   0.512     0.0551     9.30  3.67e-18
glance(modelo)
## # A tibble: 1 x 11
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <int>  <dbl> <dbl> <dbl>
## 1     0.701         0.698 0.714      224. 1.09e-74     4  -312.  634.  652.
## # … with 2 more variables: deviance <dbl>, df.residual <int>

Modelo obtido com a regressão linear múltipla de log_n_proprio, log_n_retweet e log_seguidores na tentativa de explicar a variável engajamento total:

log10(Engajamento Total) = -0.003 + 0.47 * log10(n_proprio) + 0.51 * log10(seguidores) + 0.85 * log10(n_retweets) R² = 0.70 , aproximadamente. Na equação acima a variável n_retweets é a que, em específico, melhor explica os dados, já que seu coeficiente de multiplicação obtido (0.85) foi o maior entre os demais, logo, ela irá ter uma maior influência no crescimento do engajamento total.

E para o R², obtivemos o valor de 0.69, o que nos diz que as variáveis combinadas numa regressão linear múltipla irão explicar cerca de 70% da variável engajamento total. Isto nos da uma boa taxa de precisão.

  1. Qual a relação entre as características da atuação do parlamentar e o engajamento mediano que ele obtém no twitter?
dados_refinados = dados_refinados %>%
  mutate(log_engaj_mediano = log10(engaj_mediano)) %>%
  filter(log_engaj_mediano != -Inf)


modelo_dois <- lm(log_engaj_mediano ~ log_n_proprio + log_n_retweet + log_seguidores , 
          data = dados_refinados)

tidy(modelo_dois)
## # A tibble: 4 x 5
##   term           estimate std.error statistic  p.value
##   <chr>             <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)      -1.38     0.185      -7.44 1.16e-12
## 2 log_n_proprio    -0.193    0.0844     -2.28 2.32e- 2
## 3 log_n_retweet     0.261    0.0618      4.23 3.19e- 5
## 4 log_seguidores    0.679    0.0461     14.8  5.21e-37
glance(modelo_dois)
## # A tibble: 1 x 11
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <int>  <dbl> <dbl> <dbl>
## 1     0.525         0.520 0.597      105. 5.45e-46     4  -260.  530.  548.
## # … with 2 more variables: deviance <dbl>, df.residual <int>

O seguinte modelo foi obtido a partir desta variável:

log10(Engajamento Total) = -1.37 - 0.19 * log10(n_proprio) + 0.67 * log10(seguidores) + 0.26 * log10(n_retweets) R² = 0.5251772 É notável que para a variável Engajamento mediano, as características utilizadas a descrevem em 52%, isto indica que por mais que seja um bom cenário, possivelmente ainda há a necessidade de encontrar melhores variáveis para descrever esse engajamento.