ĀæCómo interpretar los resultados de una encuesta presidencial? Cualquier resultado obtenido a partir de una muestra tiene un margen de error. Eventualmente los medios de comunicación indican el margen de error y mencionan algo sobre cierto nivel de confianza, pero estos datos suelen ser incomprendidos por la mayorĆa. ĀæPor quĆ© hay un margen de error? Pues porque los nĆŗmeros que se muestran son el resultado de una encuesta en la que solo se ha consultado a una pequeƱa parte de la población. Suponga por ejemplo que usted toma una muestra al azar de 100 personas y que en esa muestra encuentra que 30 tienen intención de votar por el candidato A. Entonces puede decir que el 30% de su muestra piensa votar por A, pero eso no quiere decir que el 30% de la población vaya a votar por A, y tampoco quiere decir que en otra muestra de 100 nuevamente 30 vayan a indicar que piensan votar por A. Si se sacaran muchas muestras de tamaƱo 100, en cada muestra se podrĆan obtener resultados distintos a favor de A; quizĆ” 30 en algunas, 28 en otras, o 29, 33, 32 o 25, en fin, nĆŗmeros distintos pero que, si se hicieron bien las cosas en el muestreo, debieran estar todos ellos alrededor de la intención de voto poblacional (lo que se observa finalmente el dĆa de las elecciones), desconocida, a favor de dicho candidato. Esta variabilidad de muestra a muestra es la que tiene que ver con el margen de error.
ĀæCómo visualizar entonces el resultado de una encuesta junto con su correspondiente margen de error? Una forma es calcular un intervalo de confianza. Otra forma, y la que me permito mostrar aquĆ, podrĆa ser mostrando una posible distribución de los resultados que podrĆan obtenerse si se repitiera la encuesta muchas veces, en el supuesto, claro estĆ”, de que la Ćŗnica encuesta que sĆ se hizo, se hizo bien. La idea es, a partir de los resultados de la encuesta que sĆ se hizo, simular resultados de otras posibles encuestas para poder visualizar el famoso margen de error. Los resultados de estas simulaciones se pueden graficar de varias maneras: en este caso he escogido un grĆ”fico de puntos. Abajo puede ver los resultados obtenidos con la simulación de 1000 encuestas. Las abreviaturas usadas en los grĆ”ficos son las siguientes:
library(ggplot2)
set.seed(1)
sims <- function(y, n){
x <- t(array(rgamma(n * 1000, y, 1), c(n, 1000)))
p <- x / apply(x, 1, sum) * 100
p <- sapply(t(p[, 1:(n - 1)]), c)
}
gg <- function(datos, candidato, p){
ggplot(datos, aes(candidato, p)) +
labs(x = "Candidato", y = "Intención de voto (%)") +
geom_jitter(width = 0.1, aes(color = candidato), alpha = I(0.05)) +
theme(legend.position = "none")
}
y <- c(380, 139, 101, 63, 38, 25, 25, 25, 13, 8, 5, 3, 3, 439)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "CA", "AG", "AT", "VM", "JG", "DU", "RR", "NGG",
"RB", "AFA", "MH")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(590, 240, 237, 146, 103, 55, 42, 36, 31, 27, 15, 7, 6, 5, 5, 4, 3, 3, 276)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "CA", "AG", "JG", "AT", "VM", "DU", "RR", "NGG",
"GS", "VC", "FDC", "MH", "AB", "FO", "YS", "AFA")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(510, 163, 156, 148, 102, 42, 30, 22, 14, 9, 8, 6, 5, 2, 2, 344)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "CA", "PPK", "AG", "AT", "VM", "RR", "DU", "GS",
"AB", "VC", "NGG", "AFA", "YS")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(375, 193, 133, 85, 48, 36, 24, 24, 12, 12, 12, 12, 5, 2, 1, 1, 1, 233)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "PPK", "CA", "AG", "AB", "VM", "AT", "DU", "RR",
"NGG", "GS", "FO", "VC", "MH", "AFA", "YS")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(537, 337, 156, 102, 94, 80, 70, 32, 28, 19, 16, 10, 5, 5, 2, 2, 1, 1, 318)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "PPK", "CA", "AG", "VM", "AB", "AT", "RR", "DU",
"GS", "NGG", "VC", "AFA", "FDC", "YS", "FO", "MH")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(537, 258, 107, 79, 67, 57, 56, 25, 17, 11, 5, 5, 5, 2, 326)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "PPK", "AB", "AG", "VM", "CA", "AT", "GS", "DU",
"NGG", "RR", "VC", "MH")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(396, 204, 120, 84, 72, 60, 48, 216)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "PPK", "AB", "AG", "VM", "CA")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(444, 168, 108, 96, 84, 17, 16, 14, 7, 7, 5, 4, 4, 1, 1, 229)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "AB", "VM", "AG", "AT", "DU", "GS", "NGG", "RR",
"VC", "AFA", "FO", "MH", "YS")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(574, 296, 167, 130, 111, 93, 56, 424)
p <- sims(y, length(y))
candidato <- c("KF", "JG", "PPK", "AB", "AG", "VM", "CA")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(592, 259, 167, 167, 111, 37, 518)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "AB", "VM", "AG", "AT")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(544, 256, 190, 120, 93, 29, 26, 8, 5, 3, 3, 3, 2, 304)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "AB", "VM", "AG", "AT", "GS", "NGG",
"VC", "RR", "DU", "AFA", "FO")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(552, 271, 210, 202, 125, 20, 18, 16, 11, 367)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "AB", "VM", "AG", "AT", "NGG", "GS", "FO")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(413, 208, 164, 126, 50, 16, 13, 10, 8, 6, 2, 1, 1, 182)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "AB", "VM", "AG", "GS", "NGG", "AT", "FO", "VC",
"AFA", "FDC", "YS")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(575, 287, 217, 199, 111, 36, 18, 16, 332)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "VM", "AB", "AG", "AT", "GS", "NGG")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(678, 276, 274, 185, 108, 57, 15, 13, 4, 2, 216)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "VM", "AB", "AG", "GS", "AT", "FO", "AFA", "MH")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)
y <- c(619, 302, 279, 144, 95, 34, 327)
p <- sims(y, length(y))
candidato <- c("KF", "PPK", "VM", "AB", "AG", "GS")
candidato <- factor(candidato, levels = candidato)
datos <- data.frame(p = p, candidato = candidato)
gg(datos, candidato, p)