library(readr)
library(ggplot2)
library(leaps)
df <- read.csv("/home/joaolaf/Área de Trabalho/eleicoes2014.csv",fileEncoding = "latin1")
colnames(df)[13] <- "recursos_pessoas_fisicas"

Para tratar os dados, vamos olhar primeiro as colunas que contém na ao longo dos seus dados. Esses dados são erros na hora de se montar o csv e, por isso, não é de bom uso para nós. Podemos arrumar isso substituindo esses valores NA, setando esses números para a média de cada coluna em que esses valores se encontram.

media_partidos <- mean(df$recursos_de_partidos, na.rm = TRUE)
df$recursos_de_partidos[is.na(df$recursos_de_partidos)] <- media_partidos

media_comites <- mean(df$recursos_de_outros_candidatos.comites, na.rm = TRUE)
df$recursos_de_outros_candidatos.comites[is.na(df$recursos_de_outros_candidatos.comites)] <- media_comites

media_proprios <- mean(df$recursos_proprios, na.rm = TRUE)
df$recursos_proprios[is.na(df$recursos_proprios)] <- media_proprios

media_fisicas <- mean(df$recursos_pessoas_fisicas, na.rm = TRUE)
df$recursos_pessoas_fisicas[is.na(df$recursos_pessoas_fisicas)] <- media_fisicas

media_juridicas <- mean(df$recursos_de_pessoas_juridicas, na.rm = TRUE)
df$recursos_de_pessoas_juridicas[is.na(df$recursos_de_pessoas_juridicas)] <- media_juridicas

  1. Um modelo de regressão múltipla com todas as variáveis é plausível para explicar a variação em y (número de votos)? Justifique sua resposta.

:

Levando em consideração que muitas campanhas são ganhas com muito envolvimento de dinheiro, pelo menos aqui no Brasil, vou considerar as variáveis numéricas e relacionadas a dinheiro como sendo as variáveis que irão ser estudadas para sabermos se elas vão nos apresentar um bom modelo ou não.

data <- lm(votos~ recursos_de_partidos + quantidade_doacoes + quantidade_doadores + total_receita + media_receita + recursos_de_outros_candidatos.comites + recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + recursos_proprios + quantidade_despesas + quantidade_fornecedores + total_despesa + media_despesa,df)
summary(data)
## 
## Call:
## lm(formula = votos ~ recursos_de_partidos + quantidade_doacoes + 
##     quantidade_doadores + total_receita + media_receita + recursos_de_outros_candidatos.comites + 
##     recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + 
##     recursos_proprios + quantidade_despesas + quantidade_fornecedores + 
##     total_despesa + media_despesa, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -312908   -6759   -1939    2783 1243441 
## 
## Coefficients:
##                                         Estimate Std. Error t value
## (Intercept)                            1.014e+04  1.541e+03   6.580
## recursos_de_partidos                  -3.562e-02  4.247e-03  -8.387
## quantidade_doacoes                    -1.532e+01  2.641e+01  -0.580
## quantidade_doadores                    2.723e+02  3.851e+01   7.072
## total_receita                          7.302e-02  8.776e-03   8.321
## media_receita                          3.836e-01  5.144e-02   7.458
## recursos_de_outros_candidatos.comites  5.651e-02  7.659e-03   7.379
## recursos_pessoas_fisicas              -3.323e-02  8.932e-03  -3.720
## recursos_de_pessoas_juridicas         -2.877e-02  4.402e-03  -6.535
## recursos_proprios                     -5.011e-02  5.568e-03  -9.001
## quantidade_despesas                    4.952e+01  4.281e+00  11.568
## quantidade_fornecedores               -5.558e+01  6.163e+00  -9.018
## total_despesa                         -2.688e-02  7.441e-03  -3.613
## media_despesa                          2.083e+00  3.954e-01   5.267
##                                       Pr(>|t|)    
## (Intercept)                           5.29e-11 ***
## recursos_de_partidos                   < 2e-16 ***
## quantidade_doacoes                    0.561883    
## quantidade_doadores                   1.78e-12 ***
## total_receita                          < 2e-16 ***
## media_receita                         1.07e-13 ***
## recursos_de_outros_candidatos.comites 1.92e-13 ***
## recursos_pessoas_fisicas              0.000202 ***
## recursos_de_pessoas_juridicas         7.12e-11 ***
## recursos_proprios                      < 2e-16 ***
## quantidade_despesas                    < 2e-16 ***
## quantidade_fornecedores                < 2e-16 ***
## total_despesa                         0.000306 ***
## media_despesa                         1.45e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 32590 on 4138 degrees of freedom
## Multiple R-squared:  0.4838, Adjusted R-squared:  0.4822 
## F-statistic: 298.3 on 13 and 4138 DF,  p-value: < 2.2e-16

Para esses valores, podemos tirar alguams conclusões sobre nossa análise. Primeiro de tudo, vemos que a variável F-statistic tem um valor alto, que é 298.3.Essa variável indica a adequabilidade do modelo, ou seja, ela é um preditor que mede se as variáveis estudadas possam ser boas ou não. Quando esse valor é maior do que 1, é muito provável e normal que algum dos valores vão predizer bem essa regressão.

Outras variáveis que podemos observar são a R-squared: 0.4838 e a Adjusted R-squared: 0.4822. O R-squared define o quanto um modelo é explicativo com aqueles dados.Nesses dados, com esse valor de R, temos que 48.38% da variável dependente, que é o voto, pode ser explicada pelas variáveis presentes no modelo.Já o adjusted R-squared significa a mesma coisa, mas é ajustado para combater tendências de variáveis, sendo menor.

Podemos observar também a estatística do p-valor. Esse dado nos mostra a probabilidade de que o objeto que contém o valor seja tão grande ou maior do que a estatística analisada. Geralmente, probabilidades menores do que 5% nos mostram isso. Nas métricas apresentadas, a linha “Signif. codes” mostra a importância das variáveis em função de seu p-valor para o modelo. Ou seja, todas essas variáveis, menos quantidade_doacoes, são bons valores para a análise.

  1. Todas as variáveis são úteis para o modelo de regressão? Há variáveis redudantes? Justifique sua resposta em ambos os casos.

Para esse questionamento, teremos que fazer uma seleção de variáveis, que consiste em selecionar as melhores variáveis para predizer o sistema. Para isso, iremos usar a função regsubsets, que lista os K melhores modelos, segundo o critério de menor soma de quadrados residual.

rs = summary(regsubsets(votos ~recursos_de_partidos + quantidade_doacoes + quantidade_doadores + total_receita + media_receita + recursos_de_outros_candidatos.comites + recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + recursos_proprios + quantidade_despesas + quantidade_fornecedores + total_despesa + media_despesa,nvmax = NULL,data = df))

rs
## Subset selection object
## Call: regsubsets.formula(votos ~ recursos_de_partidos + quantidade_doacoes + 
##     quantidade_doadores + total_receita + media_receita + recursos_de_outros_candidatos.comites + 
##     recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + 
##     recursos_proprios + quantidade_despesas + quantidade_fornecedores + 
##     total_despesa + media_despesa, nvmax = NULL, data = df)
## 13 Variables  (and intercept)
##                                       Forced in Forced out
## recursos_de_partidos                      FALSE      FALSE
## quantidade_doacoes                        FALSE      FALSE
## quantidade_doadores                       FALSE      FALSE
## total_receita                             FALSE      FALSE
## media_receita                             FALSE      FALSE
## recursos_de_outros_candidatos.comites     FALSE      FALSE
## recursos_pessoas_fisicas                  FALSE      FALSE
## recursos_de_pessoas_juridicas             FALSE      FALSE
## recursos_proprios                         FALSE      FALSE
## quantidade_despesas                       FALSE      FALSE
## quantidade_fornecedores                   FALSE      FALSE
## total_despesa                             FALSE      FALSE
## media_despesa                             FALSE      FALSE
## 1 subsets of each size up to 13
## Selection Algorithm: exhaustive
##           recursos_de_partidos quantidade_doacoes quantidade_doadores
## 1  ( 1 )  " "                  " "                " "                
## 2  ( 1 )  " "                  " "                " "                
## 3  ( 1 )  " "                  " "                "*"                
## 4  ( 1 )  " "                  " "                "*"                
## 5  ( 1 )  " "                  " "                "*"                
## 6  ( 1 )  " "                  " "                "*"                
## 7  ( 1 )  " "                  " "                "*"                
## 8  ( 1 )  " "                  " "                "*"                
## 9  ( 1 )  "*"                  " "                "*"                
## 10  ( 1 ) "*"                  " "                "*"                
## 11  ( 1 ) "*"                  " "                "*"                
## 12  ( 1 ) "*"                  " "                "*"                
## 13  ( 1 ) "*"                  "*"                "*"                
##           total_receita media_receita
## 1  ( 1 )  "*"           " "          
## 2  ( 1 )  "*"           " "          
## 3  ( 1 )  "*"           " "          
## 4  ( 1 )  "*"           "*"          
## 5  ( 1 )  " "           "*"          
## 6  ( 1 )  "*"           "*"          
## 7  ( 1 )  "*"           "*"          
## 8  ( 1 )  "*"           "*"          
## 9  ( 1 )  "*"           "*"          
## 10  ( 1 ) "*"           "*"          
## 11  ( 1 ) "*"           "*"          
## 12  ( 1 ) "*"           "*"          
## 13  ( 1 ) "*"           "*"          
##           recursos_de_outros_candidatos.comites recursos_pessoas_fisicas
## 1  ( 1 )  " "                                   " "                     
## 2  ( 1 )  "*"                                   " "                     
## 3  ( 1 )  "*"                                   " "                     
## 4  ( 1 )  "*"                                   " "                     
## 5  ( 1 )  "*"                                   " "                     
## 6  ( 1 )  "*"                                   " "                     
## 7  ( 1 )  "*"                                   " "                     
## 8  ( 1 )  "*"                                   " "                     
## 9  ( 1 )  "*"                                   " "                     
## 10  ( 1 ) "*"                                   " "                     
## 11  ( 1 ) "*"                                   "*"                     
## 12  ( 1 ) "*"                                   "*"                     
## 13  ( 1 ) "*"                                   "*"                     
##           recursos_de_pessoas_juridicas recursos_proprios
## 1  ( 1 )  " "                           " "              
## 2  ( 1 )  " "                           " "              
## 3  ( 1 )  " "                           " "              
## 4  ( 1 )  " "                           " "              
## 5  ( 1 )  " "                           " "              
## 6  ( 1 )  " "                           " "              
## 7  ( 1 )  " "                           " "              
## 8  ( 1 )  " "                           "*"              
## 9  ( 1 )  "*"                           "*"              
## 10  ( 1 ) "*"                           "*"              
## 11  ( 1 ) "*"                           "*"              
## 12  ( 1 ) "*"                           "*"              
## 13  ( 1 ) "*"                           "*"              
##           quantidade_despesas quantidade_fornecedores total_despesa
## 1  ( 1 )  " "                 " "                     " "          
## 2  ( 1 )  " "                 " "                     " "          
## 3  ( 1 )  " "                 " "                     " "          
## 4  ( 1 )  " "                 " "                     " "          
## 5  ( 1 )  "*"                 "*"                     " "          
## 6  ( 1 )  "*"                 "*"                     " "          
## 7  ( 1 )  "*"                 "*"                     " "          
## 8  ( 1 )  "*"                 "*"                     " "          
## 9  ( 1 )  "*"                 "*"                     " "          
## 10  ( 1 ) "*"                 "*"                     " "          
## 11  ( 1 ) "*"                 "*"                     " "          
## 12  ( 1 ) "*"                 "*"                     "*"          
## 13  ( 1 ) "*"                 "*"                     "*"          
##           media_despesa
## 1  ( 1 )  " "          
## 2  ( 1 )  " "          
## 3  ( 1 )  " "          
## 4  ( 1 )  " "          
## 5  ( 1 )  " "          
## 6  ( 1 )  " "          
## 7  ( 1 )  "*"          
## 8  ( 1 )  "*"          
## 9  ( 1 )  " "          
## 10  ( 1 ) "*"          
## 11  ( 1 ) "*"          
## 12  ( 1 ) "*"          
## 13  ( 1 ) "*"

Por padrão, temos que o K no qual falamos no início da questão é 13, tendo em vista que no parâmetro nvmax, botamos NULL para não existir limite de predição, mostrando a lista dos 13 melhores modelos.

Para continuarmos a mostrar as melhores variáveis, vamos ver qual tem o maior adjusted R-squared e selecioná-las:

which.max(rs$adjr2)
## [1] 12
rs$which[12,]
##                           (Intercept) 
##                                  TRUE 
##                  recursos_de_partidos 
##                                  TRUE 
##                    quantidade_doacoes 
##                                 FALSE 
##                   quantidade_doadores 
##                                  TRUE 
##                         total_receita 
##                                  TRUE 
##                         media_receita 
##                                  TRUE 
## recursos_de_outros_candidatos.comites 
##                                  TRUE 
##              recursos_pessoas_fisicas 
##                                  TRUE 
##         recursos_de_pessoas_juridicas 
##                                  TRUE 
##                     recursos_proprios 
##                                  TRUE 
##                   quantidade_despesas 
##                                  TRUE 
##               quantidade_fornecedores 
##                                  TRUE 
##                         total_despesa 
##                                  TRUE 
##                         media_despesa 
##                                  TRUE

Vendo essas informações, temos que apenas uma variável(quantidade_doacoes) não prediz bem o modelo.

  1. No caso de haver variáveis pouco explicativas e/ou redudantes, construa um novo modelo sem essas variáveis e o compare ao modelo com todas as variáveis (e.g. em termos de R2 e RSE).

Como vimos na questão anterior, apenas uma variável não predizia bem o modelo. Para este caso, vamos tirar essa variável e fazer um novo estudo:

data <- lm(votos~ recursos_de_partidos + quantidade_doadores + total_receita + media_receita + recursos_de_outros_candidatos.comites + recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + recursos_proprios + quantidade_despesas + quantidade_fornecedores + total_despesa + media_despesa,df)
summary(data)
## 
## Call:
## lm(formula = votos ~ recursos_de_partidos + quantidade_doadores + 
##     total_receita + media_receita + recursos_de_outros_candidatos.comites + 
##     recursos_pessoas_fisicas + recursos_de_pessoas_juridicas + 
##     recursos_proprios + quantidade_despesas + quantidade_fornecedores + 
##     total_despesa + media_despesa, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -311377   -6747   -1922    2805 1244886 
## 
## Coefficients:
##                                         Estimate Std. Error t value
## (Intercept)                            9.990e+03  1.519e+03   6.575
## recursos_de_partidos                  -3.553e-02  4.244e-03  -8.372
## quantidade_doadores                    2.547e+02  2.354e+01  10.817
## total_receita                          7.291e-02  8.773e-03   8.311
## media_receita                          3.925e-01  4.910e-02   7.995
## recursos_de_outros_candidatos.comites  5.590e-02  7.586e-03   7.369
## recursos_pessoas_fisicas              -3.293e-02  8.916e-03  -3.693
## recursos_de_pessoas_juridicas         -2.837e-02  4.349e-03  -6.524
## recursos_proprios                     -4.999e-02  5.563e-03  -8.986
## quantidade_despesas                    4.910e+01  4.217e+00  11.642
## quantidade_fornecedores               -5.492e+01  6.057e+00  -9.067
## total_despesa                         -2.728e-02  7.408e-03  -3.683
## media_despesa                          2.080e+00  3.954e-01   5.261
##                                       Pr(>|t|)    
## (Intercept)                           5.48e-11 ***
## recursos_de_partidos                   < 2e-16 ***
## quantidade_doadores                    < 2e-16 ***
## total_receita                          < 2e-16 ***
## media_receita                         1.67e-15 ***
## recursos_de_outros_candidatos.comites 2.06e-13 ***
## recursos_pessoas_fisicas              0.000224 ***
## recursos_de_pessoas_juridicas         7.67e-11 ***
## recursos_proprios                      < 2e-16 ***
## quantidade_despesas                    < 2e-16 ***
## quantidade_fornecedores                < 2e-16 ***
## total_despesa                         0.000233 ***
## media_despesa                         1.51e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 32580 on 4139 degrees of freedom
## Multiple R-squared:  0.4838, Adjusted R-squared:  0.4823 
## F-statistic: 323.2 on 12 and 4139 DF,  p-value: < 2.2e-16

Diferente da nossa primeira análise, podemos ver que o valor-p se apresenta forte em todas as amostras, mostrando que esse é um modelo mais forte, visto desse parâmetro.

Outra amostra que podemos pegar é o valor F-statistic. Esse valor, como já sabemos, se ela for maior do que 1, vai nos dar a informação de que,em qualquer estudo, é muito provável que alguma das variáveis venha a fazer sentido na predição. No nosso caso, esse valor é de 323.2, sendo maior do que a da primeira análise.

Já quando vamos ver o R-squared e o adjusted R-squared não teremos nenhuma surpresa. Como na questão anterior, tínhamos uma variável que não predizia bem o modelo. Essa variável foi retirada do estudo. Como ela não significava muita coisa, os valores de R² e R² ajustado não mudaram, já que a variável que saiu não era importante.

Assim como os valores de R² e R² ajustado, o valor do RSE também não mudou.

4.Analise plots de resíduos e verifique se há tendências nos erros.

ggplot(df,aes(x=votos,y=quantidade_doacoes)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=quantidade_doadores)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=total_receita)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=media_receita)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=recursos_de_outros_candidatos.comites)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=recursos_de_partidos)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=recursos_pessoas_fisicas)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=recursos_de_pessoas_juridicas)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=recursos_proprios)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=quantidade_despesas)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=quantidade_fornecedores)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=total_despesa)) + geom_point(size = 2,shape =23 )

ggplot(df,aes(x=votos,y=media_despesa)) + geom_point(size = 2,shape =23 )

Nesse tipo de análise, podemos falar sobre a predição do modelo. Cada plot desse, sendo cada um uma variável em relação a votos, mostra a o estudo de como as variáveis irão predizer a regressão. Nesses casos, podemos observar que, em todos os modelos, existe um certo montante concentrado. Esse montante mostra que, naquela variável, a dispersão é pequena e tem pouca tendência a erros

  1. Quais variáveis conseguem explicar melhor o número de votos? Justifique sua resposta.

Para selecionar as variáveis que vão ser estudadas, vamos pegar os menores p-valores do estudo que, na teoria, seriam as variáveis que melhor explicariam o modelo.Vamos partir da questão 1:

Total Receita

total_data <- lm(votos~ total_receita,df)
summary(total_data)
## 
## Call:
## lm(formula = votos ~ total_receita, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -200492   -7188   -6572   -3524 1431317 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   7.292e+03  5.879e+02   12.40   <2e-16 ***
## total_receita 4.384e-02  8.701e-04   50.38   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 35670 on 4150 degrees of freedom
## Multiple R-squared:  0.3795, Adjusted R-squared:  0.3794 
## F-statistic:  2539 on 1 and 4150 DF,  p-value: < 2.2e-16

Recursos de partidos

recursos_data <- lm(votos~ recursos_de_partidos,df)
summary(recursos_data)
## 
## Call:
## lm(formula = votos ~ recursos_de_partidos, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -252026  -16359   -7311   -3478 1512299 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          6.571e+03  7.381e+02   8.902   <2e-16 ***
## recursos_de_partidos 5.491e-02  1.885e-03  29.126   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 41270 on 4150 degrees of freedom
## Multiple R-squared:  0.1697, Adjusted R-squared:  0.1695 
## F-statistic: 848.3 on 1 and 4150 DF,  p-value: < 2.2e-16

Recursos proprios

proprios_data <- lm(votos~ recursos_proprios,df)
summary(proprios_data)
## 
## Call:
## lm(formula = votos ~ recursos_proprios, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -157073  -16459  -14039   -6999 1509201 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       1.488e+04  7.283e+02   20.43   <2e-16 ***
## recursos_proprios 5.325e-02  4.985e-03   10.68   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 44680 on 4150 degrees of freedom
## Multiple R-squared:  0.02675,    Adjusted R-squared:  0.02652 
## F-statistic: 114.1 on 1 and 4150 DF,  p-value: < 2.2e-16

Apenas para enfatizar, os p-valores das 3 variáveis acima realmente são bons, vendo assim que elas são, na teoria, umas das melhores variáveis para predizer o estudo.

Agora poderemos analisar as demais variáveis. O R-squared da primeira variável, que é total_receita, tem o valor de 0.3795, ou seja, ela sozinha explica 37% do estudo, quase 40%. Podemos ver, juntamente com seu p-valor, que ela é realmente uma boa variável para se fazer um estudo sobre esse modelo.

As demais variáveis não são tão surpreendentes quando falamos sobre o R-squared: O valor dessa variável em recursos_de_partidos é de 16%; Já o valor dessa variável em recursos_proprios é maior, totalizando 26%.

Conclusão

Para essa amostra, bons valores para R-squared e adjusted R-squared foram apresentados, vendo que o estudo pode ser bem predito a partir de alguns valores, que foram mostrados acima.

Outra valor que nos ajudou ao longo desse estudo foi o p-valor. Ela nos mostrou quais as variáveis que mais se encaixariam no nosso estudo e nos ajudou a formar a maioria das conclusões.

O único ponto preocupando é o RSE. Essa variável mede o erro padrão naquele estudo. Em todos os nosso estudos esses números deram muito altos, mostrando assim que esse estudo pode não ser tão bom como as duas variáveis acima mostram.