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.
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.
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.