library(dslabs)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(viridisLite)
library(viridis)
library(RColorBrewer)
library(ggplot2)

data("polls_us_election_2016")

#Mis variasbles son:

#Columna Tipo de variable Categoría #State Cualitativa Nominal #Startdate Cuantitativa Continua #Enddate Cuantitativa Continua #Pollster Cualitativa Nominal #Grade Cualitativa Ordinal #Samplesize Cuantitativa Discreta #Population Cualitativa Nominal Rawpoll_clinton Cuantitativa Continua Rawpoll_trump Cuantitativa Continua #Rawpoll_johnson Cuantitativa Continua #Rawpoll_mcmullin Cuantitativa Continua #Adjpoll_clinton Cuantitativa Continua #Adjpoll_trump Cuantitativa Continua #Adjpoll_johnson Cuantitativa Continua #Adjpoll_mcmullin Cuantitativa Continua

Creación de nueva tabla

data_election <- polls_us_election_2016 %>%
  group_by(state) %>%
  summarise(
    encuestas_por_estado = n(),
    promedio_tamano_muestra = mean(samplesize, na.rm = TRUE),
    promedio_apoyo_clinton = mean(adjpoll_clinton, na.rm = TRUE),
    promedio_apoyo_trump = mean(adjpoll_trump, na.rm = TRUE),
    promedio_apoyo_johnson = mean(adjpoll_johnson, na.rm = TRUE),
    promedio_apoyo_mcmullin = mean(adjpoll_mcmullin, na.rm = TRUE)
  )


data_election
## # A tibble: 57 × 7
##    state      encuestas_por_estado promedio_tamano_mues…¹ promedio_apoyo_clinton
##    <fct>                     <int>                  <dbl>                  <dbl>
##  1 Alabama                      43                   631.                   33.2
##  2 Alaska                       38                   322.                   35.6
##  3 Arizona                      79                   876.                   42.2
##  4 Arkansas                     45                   399.                   36.4
##  5 California                   71                  1453.                   55.3
##  6 Colorado                     80                   906.                   43.8
##  7 Connectic…                   44                   550.                   48.9
##  8 Delaware                     40                   251.                   46.2
##  9 District …                   26                   201.                   71.8
## 10 Florida                     148                  1120.                   45.7
## # ℹ 47 more rows
## # ℹ abbreviated name: ¹​promedio_tamano_muestra
## # ℹ 3 more variables: promedio_apoyo_trump <dbl>, promedio_apoyo_johnson <dbl>,
## #   promedio_apoyo_mcmullin <dbl>

Tabla con los 15 mejores estados.

top_15_states <- data_election %>%
  arrange(desc(encuestas_por_estado)) %>% 
  slice(1:15)  

top_15_states
## # A tibble: 15 × 7
##    state      encuestas_por_estado promedio_tamano_mues…¹ promedio_apoyo_clinton
##    <fct>                     <int>                  <dbl>                  <dbl>
##  1 U.S.                       1106                  2305.                   44.9
##  2 Florida                     148                  1120.                   45.7
##  3 North Car…                  125                   908.                   44.9
##  4 Pennsylva…                  125                  1025.                   46.1
##  5 Ohio                        115                  1004.                   42.8
##  6 New Hamps…                  112                   538.                   45.4
##  7 Nevada                       93                   641.                   43.3
##  8 Virginia                     91                  1019                    46.4
##  9 Michigan                     86                   981.                   44.0
## 10 Colorado                     80                   906.                   43.8
## 11 Georgia                      80                   980.                   41.6
## 12 Wisconsin                    80                   938.                   45.3
## 13 Arizona                      79                   876.                   42.2
## 14 California                   71                  1453.                   55.3
## 15 Iowa                         70                   749.                   41.3
## # ℹ abbreviated name: ¹​promedio_tamano_muestra
## # ℹ 3 more variables: promedio_apoyo_trump <dbl>, promedio_apoyo_johnson <dbl>,
## #   promedio_apoyo_mcmullin <dbl>

#Diagramas de barras

top_15_random <- top_15_states[sample(1:nrow(top_15_states)), ]


top_15_random$encuestas_por_estado %>%
  barplot(main = "Diagrama de barras - Encuestas por Estado (Aleatorio)",
          ylab = "Número de encuestas",
          xlab = "Estados",
          names.arg = top_15_random$state, 
          ylim = c(0, 1150),
          col = viridis(15),  
          las = 2,  
          cex.names = 0.7) %>%
 
  {text(x = ., y = top_15_random$encuestas_por_estado + 29,  
        labels = top_15_random$encuestas_por_estado,  
        cex = 0.8, 
        col = "black")}

top_15_states$encuestas_por_estado %>%
  barplot(main = "Diagrama de barras - Encuestas por Estado", ylab = "Número de encuestas", xlab = "Estados",names.arg = top_15_states$state, ylim = c(0, 1150),col = viridis(15),las = 2, cex.names = 0.7) %>%
  {text(x = ., y = top_15_states$encuestas_por_estado + 29,  
        labels = top_15_states$encuestas_por_estado,  
        cex = 0.8, 
        col = "black")}

#Interpretación #El gráfico visualiza el número de encuestas por estado, destacando la cantidad exacta de encuestas realizadas en los 15 estados principales. Los valores encima de cada barra hacen que la comparación sea más clara, mostrando qué estados han sido más focalizados en las encuestas electorales. Tambien se puede evidemcias que la mayores encuestas a los candidatos fueron en U.S.

#Diagrama Circular

top_15_states %>%
  {tabla <- .; porcentajes <- round(tabla$encuestas_por_estado * 100 / sum(tabla$encuestas_por_estado), 1)
   pie(tabla$encuestas_por_estado, 
       labels = paste(porcentajes, "%"), 
       col = rocket(15), 
       main = "Porcentaje de encuestas por estado", 
       border = "white", 
       cex = 0.8) 
   legend("bottomleft", 
          legend = paste(tabla$state, porcentajes, "%"), 
          fill = rocket(15), 
          cex = 0.6, 
          border = "white")
  }

#Interpretación #Analizando el grafico se puede evidenciar que es mas entendible que el de barrasya que este nos saca un porcentaje en el que podemos lograr ver con esactitud un numero calificativo.

Histograma

#Creacion de tabla con los 15 mejores promedios de apoyo a clinton

top_15_clinton <- data_election %>%
  arrange(desc(promedio_apoyo_clinton)) %>%
  slice(1:15)

hist(top_15_clinton$promedio_apoyo_clinton,
     main = "Histograma del Apoyo Promedio a Clinton (Top)",
     xlim = c(40, 100), 
     ylim = c(0, 6),  
     col = brewer.pal(3, "Pastel1"),  
     xlab = "Porcentaje de Apoyo a Clinton",
     ylab = "Frecuencia",
     labels = TRUE, 
     border = brewer.pal(3, "Pastel1"),
     breaks = seq(40, 100, by = 5),  
     cex.axis = 0.9,  
     cex.lab = 1.0)  

mean_clinton <- mean(top_15_clinton$promedio_apoyo_clinton, na.rm = TRUE)
median_clinton <- median(top_15_clinton$promedio_apoyo_clinton, na.rm = TRUE)

abline(v = mean_clinton, col = "red", lwd = 2, lty = 2)  
abline(v = median_clinton, col = "blue", lwd = 2, lty = 2)

legend("topright", legend = c(paste("Media: ", round(mean_clinton, 2)),
                              paste("Mediana: ", round(median_clinton, 2))),
       col = c("red", "blue"), lwd = 2, lty = 2, cex = 0.8) 

#Interpretación #En este Histograma podemos interpretar que los 15 estados con mejor apoyo a Clinton en la elecciones de 2016 se concentran la mayoría de los promedios entre el 50% y 55%. Tanto la media como la mediana están cerca del 53%, lo que indica una distribución relativamente simétrica. Aunque Clinton tuvo un apoyo sólido en estos estados, no hay valores extremadamente altos, lo que sugiere que la contienda fue competitiva incluso en sus mejores territorios.

#Histograma

top_15_trump <- data_election %>%
  arrange(desc(promedio_apoyo_trump)) %>%
  slice(1:15)

hist(top_15_trump$promedio_apoyo_trump,
     breaks = "Sturges",  
     main = "Histograma del Apoyo Promedio a Trump",
     xlab = "Porcentaje de Apoyo a Trump",
     ylab = "Frecuencia",
     col = brewer.pal(10, "Set1"),  
     border = brewer.pal(10, "Set1"),  
     ylim = c(0, 6),  
     labels = TRUE,  
     cex.axis = 0.9,  
     cex.lab = 1.0)  
## Warning in brewer.pal(10, "Set1"): n too large, allowed maximum for palette Set1 is 9
## Returning the palette you asked for with that many colors
## Warning in brewer.pal(10, "Set1"): n too large, allowed maximum for palette Set1 is 9
## Returning the palette you asked for with that many colors

#Interpretación #con la grafica de Trump muestra que en los 15 estados con mayor respaldo, la mayoría tiene un apoyo concentrado entre el 50% y el 60%, lo que indica un respaldo fuerte y consistente.La de Clinton, por otro lado, muestra una distribución más dispersa, con estados variando entre el 40% y el 60%, reflejando mayor variabilidad en su apoyo.La diferencia principial es El apoyo a Trump es más concentrado y uniforme, mientras que el de Clinton es más variable entre los estados.

#Grafico de dencidad

hist(top_15_trump$promedio_apoyo_trump,
     breaks = "Sturges",  
     probability = TRUE, 
     main = "Histograma y Densidad del Apoyo Promedio a Trump",
     xlab = "Porcentaje de Apoyo a Trump",
     ylab = "Densidad",
     col = brewer.pal(4, "Set1"),  
     border = brewer.pal(4, "Set1"),  
     ylim = c(0, 0.15),  
     labels = FALSE,  
     cex.axis = 0.9,  
     cex.lab = 1.0)

lines(density(top_15_trump$promedio_apoyo_trump), col = "black", lwd = 2)

#Interpretación #El histograma con la línea de densidad muestra que en los 15 estados con mayor respaldo a Trump, la mayoría concentra su apoyo entre el 50% y el 55%. La línea de densidad refuerza que este es el rango más común, indicando un respaldo sólido en estos estados.

#Creacion de Boxplot

boxplot(top_15_clinton$promedio_apoyo_clinton, 
        col = "Blue", 
        ylab = "Porcentaje de Apoyo a Clinton", 
        outline = FALSE, 
        main = "Boxplot del Apoyo a Clinton", 
        ylim = c(40, 60))


points(mean(top_15_clinton$promedio_apoyo_clinton), col = "black", pch = 20)


text(paste(" ", round(mean(top_15_clinton$promedio_apoyo_clinton), 2)), 
     x = 1.1, 
     y = mean(top_15_clinton$promedio_apoyo_clinton), 
     pos = 4)

#Interpretación #El boxplot muestra que el apoyo promedio a Clinton en los 15 estados con mayor respaldo se concentra entre el 45% y el 55%. La mediana está cerca del 50%, y no hay valores atípicos significativos, lo que indica una distribución relativamente uniforme del apoyo.

tabla_state <- table(polls_us_election_2016$state)

Gráfico de barras para la variable ‘state’

barplot(tabla_state, 
        main = "Gráfico de barras por Estado", 
        ylab = "Frecuencia", 
        xlab = "Estado", 
        ylim = c(0, max(tabla_state) + 10), 
        col = viridis(length(tabla_state)))

barplot(tabla_state, 
        main = "Gráfico de barras por Estado", 
        ylab = "Frecuencia", 
        xlab = "Estado", 
        ylim = c(0, max(tabla_state) + 10), 
        col = brewer.pal(8, "Dark2"))

# Interpretacion: #El gráfico de barras muestra la frecuencia con la que se realizaron encuestas en cada estado. Las barras más altas indican los estados donde se realizaron más encuestas, mientras que las barras más bajas representan estados con menor cantidad de encuestas. Este tipo de gráfico es útil para visualizar la distribución geográfica de las encuestas y determinar si ciertos estados fueron encuestados más frecuentemente, lo cual podría reflejar su importancia en las elecciones o las prioridades de los encuestadores.

#Creacion de tabla

tabla_pollster <- table(polls_us_election_2016$pollster)
porcentajes_pollster <- round(tabla_pollster * 100 / sum(tabla_pollster), 1)

Diagrama circular para ‘pollster’ utilizando viridis

Crear tabla de frecuencias para la variable ‘pollster’

tabla_pollster <- table(polls_us_election_2016$pollster)

# Ordenar de mayor a menor
tabla_pollster <- sort(tabla_pollster, decreasing = TRUE)
# Agrupar encuestadoras con pocos datos en "Otros"
n_top <- 5  # Número de encuestadoras principales a mostrar
pollster_top <- c(tabla_pollster[1:n_top], 
                  "Otros" = sum(tabla_pollster[(n_top+1):length(tabla_pollster)]))

# Calcular porcentajes
porcentajes_pollster <- round(pollster_top * 100 / sum(pollster_top), 1)

# Diagrama circular mejorado utilizando viridis
pie(porcentajes_pollster, 
    labels = paste(names(porcentajes_pollster), ": ", porcentajes_pollster, "%", sep=""),
    main = "Distribución de Encuestadoras (Top 5 + Otros)", 
    col = viridis(length(porcentajes_pollster)), 
    border = "white")

# Leyenda fuera del gráfico para mayor claridad
legend("bottomright", legend = names(porcentajes_pollster), 
       fill = viridis(length(porcentajes_pollster)), 
       cex = 0.7, border = "white")

#Interpretación #El gráfico circular revela que la mayor parte de las encuestas en las elecciones de 2016 fue realizada por un reducido grupo de encuestadoras principales, mientras que las encuestadoras más pequeñas se agrupan bajo la categoría “Otros”. Esto sugiere que el mercado de encuestas políticas estuvo dominado por unas pocas organizaciones grandes, con menor participación del resto.

Histograma para la variable ‘samplesize’

hist(polls_us_election_2016$samplesize, 
     breaks = "Sturges", 
     main = "Histograma del Tamaño de Muestra", 
     xlab = "Tamaño de Muestra", 
     col = viridis(10), 
     border = viridis(10), 
     ylim = c(0, 30))


abline(v = median(polls_us_election_2016$samplesize, na.rm = TRUE), col = "blue", lwd = 2, lty = 2)
abline(v = mean(polls_us_election_2016$samplesize, na.rm = TRUE), col = "red", lwd = 2)

legend("topright", legend = c("Media", "Mediana"), col = c("red", "blue"), lty = 2, lwd = 2)

#Interpretación

#El histograma muestra la distribución del tamaño de las muestras utilizadas en las encuestas. La mayoría de los encuestadores utilizaron muestras de un tamaño relativamente similar, lo que se refleja en la concentración de barras en el centro del gráfico. Las líneas verticales muestran la media (línea roja) y la mediana (línea azul) del tamaño de muestra, lo cual permite observar si la distribución es simétrica o si está sesgada. Si la media y la mediana están bastante cerca, la distribución es aproximadamente simétrica, de lo contrario podría estar sesgada hacia tamaños de muestra más grandes o más pequeños.

Histograma con densidad para la variable ‘rawpoll_clinton’

hist(polls_us_election_2016$rawpoll_clinton, 
     breaks = "Sturges", 
     probability = TRUE, 
     main = "Histograma con Densidad - Votos para Clinton", 
     xlab = "Votos para Clinton", 
     col = viridis(10), 
     border = viridis(10), 
     ylim = c(0, 0.09))

lines(density(polls_us_election_2016$rawpoll_clinton, na.rm = TRUE), col = "black", lwd = 2)

# Interpretación:

#El histograma con densidad muestra la distribución del porcentaje de votos que recibió Hillary Clinton según los resultados de las encuestas. Las barras indican cuántas encuestas reportaron ciertos rangos de porcentajes de apoyo para Clinton. La curva de densidad negra superpuesta proporciona una representación suave de esta distribución. La curva más alta en ciertos intervalos sugiere que la mayoría de las encuestas reportaron un nivel de apoyo específico para Clinton.

# boxplot para la variable rawpoll_clinton
boxplot(polls_us_election_2016$rawpoll_clinton, 
        col = "blue", 
        ylab = "Porcentaje de Votos para Clinton", 
        outline = FALSE, 
        main = "Boxplot de Votos para Clinton", 
        ylim = c(0, 100))

# Adicionar la media al gráfico
mean_clinton <- mean(polls_us_election_2016$rawpoll_clinton, na.rm = TRUE)
points(mean_clinton, col = "black", pch = 20)

# Agregar el valor de la media al lado del punto
text(paste("Media:", round(mean_clinton, 2)), x = 1.1, y = mean_clinton, pos = 4)

#Interpretación

#En la grafica de Bokplot estamos trabajando con el procentaje de votos por Clinton en donde vemos que teneos un rango de