Lectura de la base de datos depurada en codificación UTF-8.

enc_graf <- read.csv2("encuesta_graficas2.csv", enc= "utf8")
crec <- c(17, 13.1, 11.6, 8.4, 5, 3.4)
names(crec) <- c("Inst_y_apar", "Cosm_y_aseo", 
                 "Farma", "Plastico", "Construc", "Metalme")

sub_base1 <- subset(enc_graf, select=Inst_y_apar:Metalme)
pila1 <- stack(sub_base1)
head(pila1)
##   values         ind
## 1     17 Inst_y_apar
## 2     17 Inst_y_apar
## 3     17 Inst_y_apar
## 4     17 Inst_y_apar
## 5     17 Inst_y_apar
## 6     17 Inst_y_apar
names(pila1) <- c("estimacion", "sector")
indrep <- rep(1:nrow(sub_base1),ncol(sub_base1))
sub_base2 <- subset(enc_graf, select = id:mayor)
pila2 <- sub_base2[indrep,]
enc_graf2 <- data.frame(pila2,pila1)
enc_graf2$sector <- factor(enc_graf2$sector,
                           levels = c("Inst_y_apar","Cosm_y_aseo",
                                      "Farma","Plastico","Construc",
                                      "Metalme"))
val_verd <- data.frame(sector = names(crec), valor = crec)
enc_graf3 <- merge(enc_graf2, val_verd)
enc_graf3 <- enc_graf3[order(enc_graf3$sector,enc_graf3$id),]
enc_graf3$ErrRel <- with(enc_graf3, (estimacion-valor)/valor*100)
# Excluyamos los casos en donde se dió el dato
enc_graf3 <- subset(enc_graf3,
                     !((mayor == "si" & 
                      sector == "Inst_y_apar") |
                      (mayor == "no" & 
                      sector == "Metalme")))

Resumen estadístico de la base de datos apilada y con el error relativo calculado.

summary(enc_graf3)
##          sector         id             tipo     mayor      estimacion  
##  Inst_y_apar:25   Min.   : 1.0   barras  :125   no:125   Min.   : 2.0  
##  Cosm_y_aseo:49   1st Qu.:13.0   círculos:120   si:120   1st Qu.: 6.0  
##  Farma      :49   Median :25.0                           Median :10.0  
##  Plastico   :49   Mean   :25.1                           Mean   :11.8  
##  Construc   :49   3rd Qu.:37.0                           3rd Qu.:14.0  
##  Metalme    :24   Max.   :50.0                           Max.   :95.0  
##      valor           ErrRel     
##  Min.   : 3.40   Min.   :-60.0  
##  1st Qu.: 5.00   1st Qu.: -4.0  
##  Median :11.60   Median :  6.9  
##  Mean   : 9.69   Mean   : 22.2  
##  3rd Qu.:13.10   3rd Qu.: 22.4  
##  Max.   :17.00   Max.   :472.5

Paquete ggplo2 para el tercer conjunto de gráficas disponibles en R.

require(ggplot2)
## Loading required package: ggplot2

Inicialmente se debe construir una variable que indique la base de datos y las variables principales a graficar.

graf1 <- ggplot(enc_graf3, aes(sector, ErrRel))

Luego se le añade algún tipo de gráfica mediante alguna función que indique la geometría que quiera mostrar. Hasta el momento “graf1” no es posible graficarla porque no se le ha indicado ninguna geometría.

graf1 + geom_point() + ggtitle("Errores relativos por sector") +
  ylab("Error relativo (%)") + xlab("Sector")

plot of chunk unnamed-chunk-5

Se puede utilizar otra geometría que nos permita visualizar mejor el comportamiento de los datos:

graf1 + geom_jitter() + ggtitle("Errores relativos por sector") +
  ylab("Error relativo (%)") + xlab("Sector")

plot of chunk unnamed-chunk-6

Se puede utilizar otra geometría como la “boxplot” de la siguiente manera:

graf1 + geom_boxplot() + ggtitle("Errores relativos por sector") +
  ylab("Error relativo (%)") + xlab("Sector")

plot of chunk unnamed-chunk-7

Se pueden combinar geometrías como en el siguiente ejemplo:

graf1 + geom_boxplot() + geom_jitter() + ggtitle("Errores relativos por sector")+
  ylab("Error relativo (%)") + xlab("Sector")

plot of chunk unnamed-chunk-8

Para realizar paneles se utilizan las opciones para hacer facetas.

En este caso si la división se quiere hacer por filas se utiliza el siguiente comando.

graf1 + geom_point() + facet_grid(tipo ~ .) + 
  ggtitle("Errores relativos por sector y tipo") + 
  ylab("Error relativo (%)") + 
  xlab("Sector")

plot of chunk unnamed-chunk-9

Si se require hacer por columnas de esta manera:

graf1 + geom_point() + facet_grid(. ~ tipo) + 
  ggtitle("Errores relativos por sector y tipo") + 
  ylab("Error relativo (%)") + 
  xlab("Sector") +
  theme(axis.text.x=element_text(angle=90))

plot of chunk unnamed-chunk-10

Si se tiene otra variable para hacer los paneles se obtiene de la siguiente manera:

graf1 + geom_point() + facet_grid(mayor ~ tipo) + 
  ggtitle("Errores relativos por sector, tipo y si es dado el dato mayor") + 
  ylab("Error relativo (%)") + 
  xlab("Sector") +
  theme(axis.text.x=element_text(angle=90))

plot of chunk unnamed-chunk-11

Se puede realizar la combinación deseadas

graf1 + geom_boxplot() + geom_jitter() + facet_grid(mayor ~ tipo)  + 
  ggtitle("Errores relativos por sector, tipo y si es dado el dato mayor") + 
  ylab("Error relativo (%)") + 
  xlab("Sector") +
  theme(axis.text.x=element_text(angle=90))

plot of chunk unnamed-chunk-12

Se le puede añadir al gráfico el valor promedio de los datos.

graf1 + geom_boxplot() + geom_jitter() + facet_grid(mayor ~ tipo) +
  stat_summary(fun.y=mean, geom="point", shape = 18, size = 4, col = "red") + 
  ggtitle("Errores relativos por sector, tipo y si es dado el dato mayor") + 
  ylab("Error relativo (%)") + 
  xlab("Sector") +
  theme(axis.text.x=element_text(angle=90))

plot of chunk unnamed-chunk-13

Comparemos el comportamiento de los errores relativos para cada persona.

graf2 <- ggplot(enc_graf3, aes(ErrRel)) 

Una estimación de la función de densidad para todos los datos.

graf2 + geom_density() + 
  ggtitle("Distribución del error relativo") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-15

Una estimación de la función de densidad más suavizada.

graf2 + geom_density(adjust = 4) + 
  ggtitle("Distribución del error relativo") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-16

Estimación de densidades por sector con colores y lleno la función de densidad.

graf2 + geom_density(aes(fill = sector), adjust = 4) + 
  ggtitle("Distribución del error relativo por sector") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-17

Estimación de densidades por sector con colores y lleno transparente la función de densidad.

graf2 + geom_density(aes(fill = sector), adjust = 4, alpha = 0.25) + 
  ggtitle("Distribución del error relativo por sector") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-18

Estimación de densidades por sector con colores sin relleno.

graf2 + geom_density(aes(col = sector), adjust = 4, size = 1) + 
  ggtitle("Distribución del error relativo por sector") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-19

Estimación de densidades por sector con colores sin relleno.

graf2 + geom_density(aes(col = sector), adjust = 4, size = 1) +
        facet_grid(mayor ~ tipo) +
  ggtitle("Distribución del error relativo por sector, tipo de gráfica y si es dado el mayor") +
  ylab("Densidad") +
  xlab("Error relativo (%)")

plot of chunk unnamed-chunk-20

Comparar comportamiento por individuo.

Hubo personas que “adivinaron” el valor verdadero?

subset(enc_graf3, ErrRel == 0)
##          sector id     tipo mayor estimacion valor ErrRel
## 172 Inst_y_apar 25   barras    no       17.0  17.0      0
## 270    Plastico 25   barras    no        8.4   8.4      0
## 274    Plastico 29 círculos    no        8.4   8.4      0
## 3      Construc  3   barras    si        5.0   5.0      0
## 4      Construc  4   barras    si        5.0   5.0      0
## 5      Construc  5   barras    si        5.0   5.0      0
## 6      Construc  6   barras    si        5.0   5.0      0
## 8      Construc  8   barras    si        5.0   5.0      0
## 9      Construc  9   barras    si        5.0   5.0      0
## 14     Construc 14   barras    no        5.0   5.0      0
## 22     Construc 22   barras    no        5.0   5.0      0
## 24     Construc 24   barras    no        5.0   5.0      0
## 28     Construc 28 círculos    no        5.0   5.0      0
## 29     Construc 29 círculos    no        5.0   5.0      0
## 46     Construc 47 círculos    si        5.0   5.0      0

Obener una base con el promedio de los errores relativos

enc_grafR <- aggregate(subset(enc_graf3,select = ErrRel),
          with(enc_graf3,list(id=id, tipo = tipo, mayor = mayor)), mean)
enc_grafR
##    id     tipo mayor    ErrRel
## 1  13   barras    no   5.77319
## 2  14   barras    no   1.90675
## 3  15   barras    no  54.25961
## 4  16   barras    no  -1.49026
## 5  17   barras    no  68.46425
## 6  18   barras    no  18.83849
## 7  19   barras    no  83.55200
## 8  20   barras    no -14.41996
## 9  21   barras    no  11.76049
## 10 22   barras    no   7.71134
## 11 23   barras    no   4.81537
## 12 24   barras    no  -8.96688
## 13 25   barras    no   3.05301
## 14 26 círculos    no 100.85166
## 15 27 círculos    no 323.90399
## 16 28 círculos    no   1.48620
## 17 29 círculos    no   0.12387
## 18 30 círculos    no -23.39181
## 19 31 círculos    no   5.14966
## 20 32 círculos    no -47.83783
## 21 33 círculos    no -43.07567
## 22 34 círculos    no  52.49051
## 23 35 círculos    no -12.96757
## 24 36 círculos    no  69.27815
## 25 37 círculos    no -40.71481
## 26  1   barras    si  85.52877
## 27  2   barras    si  20.65349
## 28  3   barras    si   1.38988
## 29  4   barras    si   4.30449
## 30  5   barras    si  -0.81450
## 31  6   barras    si -10.37483
## 32  7   barras    si  25.00913
## 33  8   barras    si  -7.74333
## 34  9   barras    si   3.77083
## 35 10   barras    si -12.59757
## 36 11   barras    si  11.55535
## 37 12   barras    si -24.00664
## 38 38 círculos    si  11.07481
## 39 39 círculos    si  34.69406
## 40 40 círculos    si  32.03725
## 41 41 círculos    si  -1.33395
## 42 42 círculos    si  43.40284
## 43 43 círculos    si 106.21112
## 44 44 círculos    si  11.02168
## 45 46 círculos    si  46.90424
## 46 47 círculos    si  -0.02458
## 47 48 círculos    si  32.91680
## 48 49 círculos    si  23.13953
## 49 50 círculos    si  30.53584

Gráfica con una visualización del comportamiento acertivo por individuo.

graf3 <- ggplot(enc_grafR, aes(tipo, ErrRel, col = mayor))
graf3 + geom_jitter() +
  ggtitle("Distribución del error relativo promedio por tipo y si es dado el mayor") +
  ylab("Promedio del Error Relativo (%)") +
  xlab("Tipo de gráfica")

plot of chunk unnamed-chunk-23

Ordenación de la base de datos por el valor absoluto de error relativo

enc_grafR <- enc_grafR[order(abs(enc_grafR$ErrRel)),]
enc_grafR$puesto <- 1:nrow(enc_grafR)
enc_grafR
##    id     tipo mayor    ErrRel puesto
## 46 47 círculos    si  -0.02458      1
## 17 29 círculos    no   0.12387      2
## 30  5   barras    si  -0.81450      3
## 41 41 círculos    si  -1.33395      4
## 28  3   barras    si   1.38988      5
## 16 28 círculos    no   1.48620      6
## 4  16   barras    no  -1.49026      7
## 2  14   barras    no   1.90675      8
## 13 25   barras    no   3.05301      9
## 34  9   barras    si   3.77083     10
## 29  4   barras    si   4.30449     11
## 11 23   barras    no   4.81537     12
## 19 31 círculos    no   5.14966     13
## 1  13   barras    no   5.77319     14
## 10 22   barras    no   7.71134     15
## 33  8   barras    si  -7.74333     16
## 12 24   barras    no  -8.96688     17
## 31  6   barras    si -10.37483     18
## 44 44 círculos    si  11.02168     19
## 38 38 círculos    si  11.07481     20
## 36 11   barras    si  11.55535     21
## 9  21   barras    no  11.76049     22
## 35 10   barras    si -12.59757     23
## 23 35 círculos    no -12.96757     24
## 8  20   barras    no -14.41996     25
## 6  18   barras    no  18.83849     26
## 27  2   barras    si  20.65349     27
## 48 49 círculos    si  23.13953     28
## 18 30 círculos    no -23.39181     29
## 37 12   barras    si -24.00664     30
## 32  7   barras    si  25.00913     31
## 49 50 círculos    si  30.53584     32
## 40 40 círculos    si  32.03725     33
## 47 48 círculos    si  32.91680     34
## 39 39 círculos    si  34.69406     35
## 25 37 círculos    no -40.71481     36
## 21 33 círculos    no -43.07567     37
## 42 42 círculos    si  43.40284     38
## 45 46 círculos    si  46.90424     39
## 20 32 círculos    no -47.83783     40
## 22 34 círculos    no  52.49051     41
## 3  15   barras    no  54.25961     42
## 5  17   barras    no  68.46425     43
## 24 36 círculos    no  69.27815     44
## 7  19   barras    no  83.55200     45
## 26  1   barras    si  85.52877     46
## 14 26 círculos    no 100.85166     47
## 43 43 círculos    si 106.21112     48
## 15 27 círculos    no 323.90399     49

Gráfica exploratoria.

graf4 <- ggplot(enc_grafR, aes(puesto, ErrRel, col = mayor))
graf4 + geom_point() + facet_grid(. ~ tipo) +
  ggtitle("Comportamiento del promedio del error relativo") +
  ylab("Promedio del Error Relativo (%)") +
  xlab("Puesto en el ranking total")

plot of chunk unnamed-chunk-25