Lectura de la base de datos depurada en codificación UTF-8.
# Lectura
enc_graf <- read.csv2("encuesta_graficas2.csv", enc= "utf8")
# Asignación de valores originales.
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")
crec
## Inst_y_apar Cosm_y_aseo Farma Plastico Construc Metalme
## 17.0 13.1 11.6 8.4 5.0 3.4
Construcción de una nueva base de datos reconfigurada para facilitar la graficación.
# Seleccionar las columnas de las estimaciones.
sub_base1 <- subset(enc_graf, select=Inst_y_apar:Metalme)
# Apilar la información para facilitar su menejo.
pila1 <- stack(sub_base1)
# Muestra los primero 6 datos de la nueva base de datos.
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
# Renombrar las variables de la base de datos
names(pila1) <- c("estimacion", "sector")
# De nuevo los primeros 6 datos de la nueva base de datos.
head(pila1)
## estimacion sector
## 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
# Repetir la infomración tantas veces como son las columnas
# de la base que se apiló.
indrep <- rep(1:nrow(sub_base1),ncol(sub_base1))
# Crear una nueva pila con la información que se debe repetir
sub_base2 <- subset(enc_graf, select = id:mayor)
pila2 <- sub_base2[indrep,]
# Juntar las dos bases de datos para obtener una nueva base de datos
# con un formato distinto.
enc_graf2 <- data.frame(pila2,pila1)
# Los primero 6 registros de la nueva base de datos
head(enc_graf2)
## id tipo mayor estimacion sector
## 1 1 barras si 17 Inst_y_apar
## 2 2 barras si 17 Inst_y_apar
## 3 3 barras si 17 Inst_y_apar
## 4 4 barras si 17 Inst_y_apar
## 5 5 barras si 17 Inst_y_apar
## 6 6 barras si 17 Inst_y_apar
Reordenación de los niveles del sector
# Ordenación actual
levels(enc_graf2$sector)
## [1] "Construc" "Cosm_y_aseo" "Farma" "Inst_y_apar" "Metalme"
## [6] "Plastico"
# Reordenación
enc_graf2$sector <- factor(enc_graf2$sector,
levels = c("Inst_y_apar","Cosm_y_aseo",
"Farma","Plastico","Construc",
"Metalme"))
# Niveles reordenados
levels(enc_graf2$sector)
## [1] "Inst_y_apar" "Cosm_y_aseo" "Farma" "Plastico" "Construc"
## [6] "Metalme"
Comparaciones gráficas con las estimaciónes de cada uno de los sectores de acuerdo a tipo de gráfica utilizado
op <- par(no.readonly = TRUE)
par(mar = op$mar + c(5, 0, 0, 0))
with(subset(enc_graf2,tipo == "barras" & mayor == "si"),
plot(sector, estimacion, las = 2, notch = TRUE,
main = "Barras con el dato mayor"))
## Warning: some notches went outside hinges ('box'): maybe set notch=FALSE
segments(1:6-0.2,crec,1:6+0.2,crec, col = "blue", lwd = 2)
with(subset(enc_graf2,tipo == "barras" & mayor == "no"),
plot(sector, estimacion, las = 2, notch = TRUE,
main = "Barras con el dato menor"))
## Warning: some notches went outside hinges ('box'): maybe set notch=FALSE
segments(1:6-0.2,crec,1:6+0.2,crec, col = "blue", lwd = 2)
with(subset(enc_graf2,tipo == "círculos" & mayor == "si"),
plot(sector, estimacion, las = 2, notch = TRUE,
main = "Círculos con el dato mayor"))
## Warning: some notches went outside hinges ('box'): maybe set notch=FALSE
segments(1:6-0.2,crec,1:6+0.2,crec, col = "blue", lwd = 2)
with(subset(enc_graf2,tipo == "círculos" & mayor == "no"),
plot(sector, estimacion, las = 2, notch = TRUE,
main = "Círculos con el dato menor"))
## Warning: some notches went outside hinges ('box'): maybe set notch=FALSE
segments(1:6-0.2,crec,1:6+0.2,crec, col = "blue", lwd = 2)
par(op)
Se puede utilizar otra forma de graficar en R utilizando la bibloteca de funciones o el paquete “lattice”
require(lattice)
## Loading required package: lattice
xyplot(estimacion ~ sector | tipo * mayor, data = enc_graf2,
scales=list(x=list(rot=45)), pch = 19)
Es una forma independiente (no se intercabia con la graficación básica de R) de graficación y tiene elementos más versátiles.
Por ejemplo si se quiere observar si cada individuo (una línea para cada individuo) fue consistente con su sobre estimación o subestimación.
require(lattice)
xyplot(estimacion ~ sector | tipo * mayor, data = enc_graf2,
scales=list(x=list(rot=45)), pch = 19, group = id,
type = c("l", "p"))
Para mejorar la visualización se puede llevar a logaritmo la variable respuesta.
require(lattice)
xyplot(log10(estimacion) ~ sector | tipo * mayor, data = enc_graf2,
scales=list(x=list(rot=45)), pch = 19, group = id,
type = c("l", "p"))
Constucción de una base de datos con los valores verdaderos
val_verd <- data.frame(sector = names(crec), valor = crec)
val_verd
## sector valor
## Inst_y_apar Inst_y_apar 17.0
## Cosm_y_aseo Cosm_y_aseo 13.1
## Farma Farma 11.6
## Plastico Plastico 8.4
## Construc Construc 5.0
## Metalme Metalme 3.4
Mezclar esta nueva base de datos con la base de datos completa
enc_graf3 <- merge(enc_graf2, val_verd)
head(enc_graf3)
## sector id tipo mayor estimacion valor
## 1 Construc 1 barras si 10.1 5
## 2 Construc 2 barras si 7.0 5
## 3 Construc 3 barras si 5.0 5
## 4 Construc 4 barras si 5.0 5
## 5 Construc 5 barras si 5.0 5
## 6 Construc 6 barras si 5.0 5
# Ordenar la base de datos por el id y el sector.
enc_graf3 <- enc_graf3[order(enc_graf3$sector,enc_graf3$id),]
Calcular el error relativo de cada estimación.
enc_graf3$ErrRel <- with(enc_graf3, (estimacion-valor)/valor*100)
head(enc_graf3)
## sector id tipo mayor estimacion valor ErrRel
## 148 Inst_y_apar 1 barras si 17 17 0
## 149 Inst_y_apar 2 barras si 17 17 0
## 150 Inst_y_apar 3 barras si 17 17 0
## 151 Inst_y_apar 4 barras si 17 17 0
## 152 Inst_y_apar 5 barras si 17 17 0
## 153 Inst_y_apar 6 barras si 17 17 0
Gráfica con el error relativo.
require(lattice)
xyplot(ErrRel ~ sector | tipo * mayor, data = enc_graf3,
scales=list(x=list(rot=45)), pch = 19, group = id,
type = c("l", "p"))
Gráfica con el error relativo desde otro punto de vista.
require(lattice)
xyplot(ErrRel ~ tipo | sector * mayor, data = enc_graf3,
scales=list(x=list(rot=45)), pch = 19,
type = c("p"))
Gráfica con el error relativo desde otro punto de vista, con línea de referencia.
require(lattice)
xyplot(ErrRel ~ tipo | sector * mayor, data = enc_graf3,
scales=list(x=list(rot=45)), pch = 19,
type = c("p"),
panel = function(x, y, ... ) {
panel.xyplot(x, y, ...)
panel.abline(h = 0, col= "black")
} )