Regressão Logística na Eleição

Silvio Cesar
3 min readAug 21, 2018

--

Prevendo se o candidato será eleito ou não a partir do histórico de gastos de candidatos eleitos e não.

Em uma base temos candidatos eleitos e não e suas despesas/investimento feito na campanha.

Analisando essa base pode-se criar um modelo que irá indicar a probabilidade de um novo candidato ser eleito ou não de acordo com o valor investido na campanha.

Análise com R

Efetuando a leitura da base:

setwd(“C:\\Users\\silvio\\Desktop\\Udemy\\Formacao Cientista de Dados\\”)

# Leitura do dataset eleicao.csv

eleicaoAnterior <- read.csv(file=”Eleicao.csv”, header=TRUE, sep=”;”)

Base eleiçãoAnterior (SITUACAO: 0 — Não eleito 1 — Eleito)

Plotando o gráfico gerado a partir da Situação (variável dependente) em função da Despesa (variável independente):

plot(eleicaoAnterior$DESPESAS,eleicaoAnterior$SITUACAO, pch=20)

Analisando algumas características da base com summary:

Verificando se existe correlação entre Situação e Despesas:

Acima de 0.7 é considerada alta correlação entre os fatores.

Criando o modelo de regressão logística:

modelo=glm(SITUACAO ~ DESPESAS, data = eleicaoAnterior, family=’binomial’)

Plotando novamente o dataset e alterando a forma e cor dos pontos:

plot(eleicaoAnterior$DESPESAS,eleicaoAnterior$SITUACAO, col=’red’, pch=15)

No mesmo gráfico gerado, plotar os pontos ajustados através do modelo:

points(eleicaoAnterior$DESPESAS,modelo$fitted,pch=4)

Pode-se observar acima que a partir de um determinado valor a probabilidade de que o candidato se eleja é grande, próximo a 100%.

Nova Base de dados

Numa nova base de dados, com novos candidatos numa eleição, avaliar a probabilidade dos mesmos serem eleitos em função dos valores investidos.

# Leitura do dataset NovosCandidatos.csv

novaEleicao <- read.csv(file=”NovosCandidatos.csv”, header=TRUE, sep=”;”)

Aplicar o modelo obtido para verificar a probabilidade de cada candidato:

Uma nova coluna chamada Resultado é criada para guardar o valor previsto.

novaEleicao$’Resultado(%)’ = 100* (predict(modelo, newdata=novaEleicao,type=’response’ ))

Resultado final:

Este estudo faz parte do curso Formação Cientista de Dados (Udemy) do prof Fernando Amaral que estou fazendo.

--

--