# Comentarios
# ctrl + shif + c Comentario multilinea
# ctrl + enter Ejecutar código seleccionado
# ctrl + l Limpiar la consola
# ctrl + s Guardar
# alt 126 ~
# alt + 92 \
# alt +91 +93 []
# alt +94 ^
# alt +123 125 {}
# alt +38 &
# alt +124 |
# seleccionar función + f1 es ayuda
# ctrl + alt cursor seleccion multilinea
# ctrl + shift + h seleccionar el directorio
# ctrl + alt + i nueva linea de comando r markdown
# alt + shif + k mostrar todos los atajos
# editor de temas en R
# https://tmtheme-editor.herokuapp.com/#!/editor/theme/1337
# titulo 1
## titulo 1
### titulo 1 etc
# {r echo=FALSE} solo va a imprimir el resultado sin el código
# {r collapse=TRUE} para unir código y resultado
# {r message=FALSE} para instalar bibliotecas no se muestra el mensaje
# {r eval=FALSE} solo el código se va a mostrar
# {r include=FALSE} se ejecuta el código pero no se muestra nada (codigo ni resultado)
#warning=FALSE eliminar alertas
#índice
# output:
# html_document:
# toc: true
# toc_float: true
# code_folding: hide #ocultar código show mostrar
# Collapside : https://stackoverflow.com/questions/52576626/rmarkdown-collapsible-panel
# Ocultar código: https://bookdown.org/yihui/rmarkdown-cookbook/fold-show.html
# Guía r markdown : https://bookdown.org/yihui/rmarkdown/html-document.html
# etiquetar outliers con ggplot2: https://stackoverflow.com/questions/33524669/labeling-outliers-of-boxplots-in-r
# etiqueta outliers: https://stackoverflow.com/questions/15181086/labeling-outliers-on-boxplot-in-r
# visualizacion: https://tereom.github.io/est-computacional-2018/teoria-de-visualizacion-de-datos-tufte-cleveland-tukey.html
# ordenar table: https://stackoverflow.com/questions/36375594/sorting-a-table-with-r
# condicionar variables: https://es.stackoverflow.com/questions/309801/c%C3%B3mo-crear-una-nueva-variable-condicionada-a-otras-en-r
# texturas en gráficos: https://www.r-graph-gallery.com/209-the-options-of-barplot.html
# ordenar niveles : https://www.datanalytics.com/2011/02/15/como-reordenar-niveles-de-factores-en-r/
# agregar margenes table() https://fhernanb.github.io/Manual-de-R/tablas.html
# remover escala: https://statisticsglobe.com/remove-axis-values-of-plot-in-r
# Cambiar tamaño etiquetas : http://howtoinr.weebly.com/customize-labels1.html
# Cambiar tamaño etiquetas 2: https://stats.stackexchange.com/questions/3853/how-to-increase-size-of-label-fonts-in-barplot
# Poner la mediaboxplot : https://stackoverflow.com/questions/19876505/boxplot-show-the-value-of-mean
# Espacioes en grafico de R: https://www.r-bloggers.com/2013/06/box-plot-with-r-tutorial/
urldata <- "https://raw.githubusercontent.com/armandovl/econometria_avanzada/main/BaseCacao.csv"
datos <- read.csv(url(urldata),stringsAsFactors = T)
head(datos,10)
## id cadena estado genero edad escolaridad anios_actividad superficie_ha
## 1 1 CACAO TABASCO MASCULINO 75 6 42 6.5
## 2 2 CACAO TABASCO FEMENINO 73 3 12 1.5
## 3 3 CACAO TABASCO FEMENINO 74 2 50 1.0
## 4 4 CACAO TABASCO MASCULINO 57 3 35 4.0
## 5 5 CACAO TABASCO MASCULINO 72 4 45 2.0
## 6 6 CACAO TABASCO MASCULINO 25 3 10 1.0
## 7 7 CACAO TABASCO MASCULINO 56 5 25 2.0
## 8 8 CACAO TABASCO MASCULINO 48 4 15 4.5
## 9 9 CACAO TABASCO MASCULINO 38 2 17 2.0
## 10 10 CACAO TABASCO MASCULINO 84 6 59 2.5
## impacto_economico inai_general
## 1 BAJO (0-33) 18.75
## 2 MEDIO (33-66) 33.33
## 3 MEDIO (33-66) 8.33
## 4 MEDIO (33-66) 6.25
## 5 BAJO (0-33) 14.58
## 6 MEDIO (33-66) 12.50
## 7 MEDIO (33-66) 39.58
## 8 MEDIO (33-66) 50.00
## 9 MEDIO (33-66) 37.50
## 10 BAJO (0-33) 25.00
dim(datos) #ver filas y columnas
## [1] 141 10
str(datos) #ver la estructura de los datos
## 'data.frame': 141 obs. of 10 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ cadena : Factor w/ 1 level "CACAO": 1 1 1 1 1 1 1 1 1 1 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ escolaridad : int 6 3 2 3 4 3 5 4 2 6 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
head(datos,5) #ver primeros 5 registros
## id cadena estado genero edad escolaridad anios_actividad superficie_ha
## 1 1 CACAO TABASCO MASCULINO 75 6 42 6.5
## 2 2 CACAO TABASCO FEMENINO 73 3 12 1.5
## 3 3 CACAO TABASCO FEMENINO 74 2 50 1.0
## 4 4 CACAO TABASCO MASCULINO 57 3 35 4.0
## 5 5 CACAO TABASCO MASCULINO 72 4 45 2.0
## impacto_economico inai_general
## 1 BAJO (0-33) 18.75
## 2 MEDIO (33-66) 33.33
## 3 MEDIO (33-66) 8.33
## 4 MEDIO (33-66) 6.25
## 5 BAJO (0-33) 14.58
tail(datos,5) #ver últimos 5 registros
## id cadena estado genero edad escolaridad anios_actividad superficie_ha
## 137 137 CACAO CHIAPAS MASCULINO 57 3 20 2.0
## 138 138 CACAO CHIAPAS FEMENINO 57 6 25 4.0
## 139 139 CACAO CHIAPAS MASCULINO 47 0 30 2.5
## 140 140 CACAO CHIAPAS MASCULINO 68 6 40 6.0
## 141 141 CACAO CHIAPAS MASCULINO 69 6 50 4.0
## impacto_economico inai_general
## 137 BAJO (0-33) 17.50
## 138 BAJO (0-33) 17.50
## 139 BAJO (0-33) 33.75
## 140 BAJO (0-33) 10.00
## 141 ALTO (66-100) 14.38
La variable cadena solo tiene un nivel, por lo tanto podemos eliminarla , no es relevante
datos$cadena <- NULL
Vamos a reorganizar las columnas, el Id luego puras categóricas y desupués pura cuantitativas
str(datos)
## 'data.frame': 141 obs. of 9 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ escolaridad : int 6 3 2 3 4 3 5 4 2 6 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
datos2 <- datos[,c(1:3,8,4:7,9)]
Vemos como queda el nuevo orden
str(datos2)
## 'data.frame': 141 obs. of 9 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ escolaridad : int 6 3 2 3 4 3 5 4 2 6 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
summary(datos2[,5:9]) #estadísticos
## edad escolaridad anios_actividad superficie_ha
## Min. :25.00 Min. : 0.000 Min. : 2.00 Min. : 0.500
## 1st Qu.:48.00 1st Qu.: 0.000 1st Qu.:15.00 1st Qu.: 1.500
## Median :57.00 Median : 3.000 Median :25.00 Median : 2.000
## Mean :57.51 Mean : 3.667 Mean :25.03 Mean : 2.982
## 3rd Qu.:69.00 3rd Qu.: 6.000 3rd Qu.:31.00 3rd Qu.: 4.000
## Max. :91.00 Max. :12.000 Max. :70.00 Max. :13.000
## inai_general
## Min. : 0.00
## 1st Qu.:11.25
## Median :17.50
## Mean :20.02
## 3rd Qu.:25.00
## Max. :66.67
los números si se pueden dar, no hay números que no parezcan irreales, ahora vamos a sacar los estadísticos faltantes (se pueden sacar dplyr en otra ocasión)
#guía
varianzaEdad <- var(datos$edad)
cat(c("La varianza de edad es:",round(varianzaEdad,2)))
## La varianza de edad es: 197.94
#guia 2 imprime la varianza y columna que pertence
for(i in 5:9){
varianza <- var(datos2[,i])
print(varianza)
print(names(datos)[i])
}
## [1] 197.9374
## [1] "escolaridad"
## [1] 10.62381
## [1] "anios_actividad"
## [1] 195.9849
## [1] "superficie_ha"
## [1] 4.637183
## [1] "impacto_economico"
## [1] 174.3916
## [1] "inai_general"
#guia 2 imprime la varianza y columna que pertence
for(i in 5:9){
varianza <- var(datos2[,i])
cat(c("la varianza de",names(datos)[i],varianza, "\n"))
}
## la varianza de escolaridad 197.937386018237
## la varianza de anios_actividad 10.6238095238095
## la varianza de superficie_ha 195.984903748734
## la varianza de impacto_economico 4.63718338399189
## la varianza de inai_general 174.391609432624
#guia 3 números redondeados
for(i in 5:9){
varianza <- var(datos2[,i])
cat(c("la varianza de",names(datos)[i],round(varianza,2), "\n"))
}
## la varianza de escolaridad 197.94
## la varianza de anios_actividad 10.62
## la varianza de superficie_ha 195.98
## la varianza de impacto_economico 4.64
## la varianza de inai_general 174.39
#En R se obtienen la varianza y desviación muestral , si se quiere sacar la poblacional se tiene que transformar
for(i in 5:9){
varianza <- var(datos2[,i])
desvT <- sd(datos2[,i])
coefi <- desvT/mean(datos2[,i])
cat(c("varianza",names(datos)[i],round(varianza,2), "\n"))
cat(c("desviación típica",names(datos)[i],round(desvT,2), "\n"))
cat(c("Coeficiente variación",names(datos)[i],round(coefi,2), "\n"))
cat(c("\n","\n"))
}
## varianza escolaridad 197.94
## desviación típica escolaridad 14.07
## Coeficiente variación escolaridad 0.24
##
##
## varianza anios_actividad 10.62
## desviación típica anios_actividad 3.26
## Coeficiente variación anios_actividad 0.89
##
##
## varianza superficie_ha 195.98
## desviación típica superficie_ha 14
## Coeficiente variación superficie_ha 0.56
##
##
## varianza impacto_economico 4.64
## desviación típica impacto_economico 2.15
## Coeficiente variación impacto_economico 0.72
##
##
## varianza inai_general 174.39
## desviación típica inai_general 13.21
## Coeficiente variación inai_general 0.66
##
##
La varianza sirve para poder comparar la dispersion en dos o mas conjuntos de observaciones. Nos da una idea del nivel de dispersion de los datos y el nivel de acercamiento con respecto a la media.Mientras menor la varianza, los datos se acumulan mas a la media. Asi confirmamos que la media obtenida de los datos es representativa.
Ahora recordemos que la varianza es un dato elevado al cuadrado, y este valor es dificil de interpretar para un conjunto de observaciones, por eso usamos la desviación típica o estandar
Para obtener la desviación estandar en R se utiliza la funcion sd() Con la formula de la desviacion estandar, estamos sacando la raiz cuadrada de la varianza.
El coeficiente de variación nos sirve para saber si los datos son homogéneos y se encuentran cerca el promedio o si los datos están dispersos y lejos del promedio.
aquí lo importante es que si el coeficiente no supera el 25 por ciento decimos que los datos no están desviados y el promedio representa los datos en términos de nuestra historia.Podríamos destacar ese promedio de lo contrario con un coeficiente superior al 25 por ciento. Tendríamos que mencionar el promedio pero aclarar que los datos están dispersos.
#vamos a ver como se distribuyen nuestros datos
#guia 1
boxplot(datos2[,5], main=names(datos)[5])
#guia2
for (i in 5:9){
boxplot(datos2[,i], main=names(datos)[i])
}
#guia 3
par(mfrow=c(3,2))
for (i in 5:9){
boxplot(datos2[,i], main=names(datos)[i])
}
par(mfrow=c(1,1))
Gráfico con la media
par(mfrow=c(3,2))
for (i in 5:9){
variableEnTurno <- datos2[,i]
media <- mean(variableEnTurno)
media <- round(media,2)
boxplot(datos2[,i], main=names(datos2)[i])
points(1,media,col = "red",pch=19,cex=2)
text(1.1,media + 2, labels = media, col = "red") #x=, y= labels=
}
par(mfrow=c(1,1))
Gráfico con todo
###############Gráfico con todo ###################
par(mfrow=c(2,3))
for (i in 5:9){
variableEnTurno <- datos2[,i]
media <- mean(variableEnTurno)
media <- round(media,1)
mediana <- median(variableEnTurno)
cua1<- quantile(variableEnTurno,.25)
cua3<- quantile(variableEnTurno,.75)
boxplot(datos2[,i], main=names(datos2)[i])
points(1,media,col = "red",pch=19,cex=2)
text(0.75,media, labels = media, col = "red") #x=, y= labels=
text(1.22,cua1, labels =round(cua1,2), col = "blue") #x=, y= labels=
text(1.22,cua3, labels =round(cua3,2), col = "blue") #x=, y= labels=
text(1.22,mediana, labels =round(mediana,2), col = "blue") #x=, y= labels=
}
par(mfrow=c(1,1))
Gráfico colores aleatorios
par(mfrow=c(2,3))
for (i in 5:9){
variableEnTurno <- datos2[,i]
media <- mean(variableEnTurno)
media <- round(media,1)
mediana <- median(variableEnTurno)
cua1<- quantile(variableEnTurno,.25)
cua3<- quantile(variableEnTurno,.75)
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","cyan","green3")
boxplot(datos2[,i], main=names(datos2)[i],border = colores[i-3],col="white")
points(1,media,col = "red",pch=18,cex=2)
text(0.6,media, labels = media, col = "red") #x=, y= labels=
text(0.75,cua1, labels =round(cua1,2), col = "blue") #x=, y= labels=
text(0.75,cua3, labels =round(cua3,2), col = "blue") #x=, y= labels=
text(0.75,mediana, labels =round(mediana,2), col = "blue") #x=, y= labels=
stripchart(datos2[,i], method="stack", # overplot, stack, jitter
vertical=TRUE,
pch=19,
cex=0.9,
add=TRUE,) #unir los dos graficos
}
par(mfrow=c(1,1))
Escolaridad creo que debe ser una variable categórica
Volveré a imprimir , pero sin escolaridad
par(mfrow=c(2,3))
for (i in c(5,7:9)){
variableEnTurno <- datos2[,i]
media <- mean(variableEnTurno)
media <- round(media,1)
mediana <- median(variableEnTurno)
cua1<- quantile(variableEnTurno,.25)
cua3<- quantile(variableEnTurno,.75)
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
boxplot(datos2[,i], main=names(datos2)[i],border = colores[i-4],col="white")
points(1,media,col = "red",pch=18,cex=2)
text(0.6,media, labels = media, col = "red") #x=, y= labels=
text(0.75,cua1, labels =round(cua1,2), col = "blue") #x=, y= labels=
text(0.75,cua3, labels =round(cua3,2), col = "blue") #x=, y= labels=
text(0.75,mediana, labels =round(mediana,2), col = "blue") #x=, y= labels=
# Poner los puntitos
stripchart(datos2[,i], method="stack", # overplot, stack, jitter
vertical=TRUE,
pch=19,
cex=0.9,
add=TRUE,) #unir los dos graficos
}
par(mfrow=c(1,1))
Vemos que pasa con la variable escolaridad
table(datos2$escolaridad)
##
## 0 1 2 3 4 5 6 9 12
## 38 9 15 11 12 5 33 14 4
Identificar outliers
graph1 <- boxplot(datos2[,7], main=names(datos2)[7],border ="red",col="white")
text(1, # the x locations
graph1$out, # the y values
graph1$out, # the labels
pos = 4,
cex=0.7)
Ver los valores atípicos
datos2[datos2$anios_actividad>=59,]
## id estado genero impacto_economico edad escolaridad anios_actividad
## 10 10 TABASCO MASCULINO BAJO (0-33) 84 6 59
## 64 64 CHIAPAS MASCULINO MEDIO (33-66) 91 0 70
## 124 124 CHIAPAS MASCULINO BAJO (0-33) 76 1 61
## superficie_ha inai_general
## 10 2.5 25.00
## 64 4.0 21.25
## 124 2.0 36.25
Volveré a imprimir, etiquetando los atípicos
par(mfrow=c(1,3))
for (i in c(7:9)){ #solamente con los que cuentan con atípicos
variableEnTurno <- datos2[,i]
media <- mean(variableEnTurno)
media <- round(media,1)
mediana <- median(variableEnTurno)
cua1<- quantile(variableEnTurno,.25)
cua3<- quantile(variableEnTurno,.75)
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
graph_i <- boxplot(datos2[,i], main=names(datos2)[i],border = colores[i-4],col="white")
points(1,media,col = "red",pch=18,cex=2)
text(0.6,media, labels = media, col = "red") #x=, y= labels=
text(0.75,cua1, labels =round(cua1,2), col = "blue") #x=, y= labels=
text(0.75,cua3, labels =round(cua3,2), col = "blue") #x=, y= labels=
text(0.75,mediana, labels =round(mediana,2), col = "blue") #x=, y= labels=
text(1, # the x locations
graph_i$out,# the y values
round(graph_i$out,1), # the labels
pos = 4,
cex=0.9)
}
par(mfrow=c(1,1))
los bigotes se extienden hasta 1.5 veces el rango intercuartil, el rango intercuartil q3-q1 representa el 50% intermediode los datos Ver los atípicos en la tabla
datos2[datos2$anios_actividad>=59,]
## id estado genero impacto_economico edad escolaridad anios_actividad
## 10 10 TABASCO MASCULINO BAJO (0-33) 84 6 59
## 64 64 CHIAPAS MASCULINO MEDIO (33-66) 91 0 70
## 124 124 CHIAPAS MASCULINO BAJO (0-33) 76 1 61
## superficie_ha inai_general
## 10 2.5 25.00
## 64 4.0 21.25
## 124 2.0 36.25
datos2[datos2$superficie_ha>=8,]
## id estado genero impacto_economico edad escolaridad anios_actividad
## 16 16 TABASCO MASCULINO BAJO (0-33) 52 0 19
## 65 65 CHIAPAS MASCULINO MEDIO (33-66) 39 4 10
## 92 92 CHIAPAS MASCULINO ALTO (66-100) 53 9 18
## 100 100 CHIAPAS MASCULINO BAJO (0-33) 86 6 40
## 101 101 CHIAPAS MASCULINO BAJO (0-33) 67 0 20
## 119 119 CHIAPAS MASCULINO MEDIO (33-66) 35 9 20
## 128 128 CHIAPAS MASCULINO MEDIO (33-66) 64 6 44
## superficie_ha inai_general
## 16 8 2.08
## 65 12 33.75
## 92 13 55.00
## 100 8 13.13
## 101 10 33.75
## 119 9 51.25
## 128 10 14.38
datos2[datos2$inai_general>=47.5,]
## id estado genero impacto_economico edad escolaridad anios_actividad
## 8 8 TABASCO MASCULINO MEDIO (33-66) 48 4 15
## 41 41 TABASCO FEMENINO MEDIO (33-66) 58 0 8
## 44 44 TABASCO MASCULINO MEDIO (33-66) 56 5 25
## 47 47 CHIAPAS MASCULINO BAJO (0-33) 54 3 30
## 67 67 CHIAPAS MASCULINO ALTO (66-100) 59 1 25
## 92 92 CHIAPAS MASCULINO ALTO (66-100) 53 9 18
## 93 93 CHIAPAS MASCULINO BAJO (0-33) 51 9 31
## 117 117 CHIAPAS MASCULINO BAJO (0-33) 53 1 30
## 119 119 CHIAPAS MASCULINO MEDIO (33-66) 35 9 20
## superficie_ha inai_general
## 8 4.5 50.00
## 41 1.0 66.67
## 44 2.0 50.00
## 47 2.0 56.25
## 67 2.0 53.13
## 92 13.0 55.00
## 93 2.5 47.50
## 117 3.0 49.38
## 119 9.0 51.25
Ver Histograma
hist(datos2$anios_actividad,
breaks=15,
col="lightblue",
freq=FALSE,
)
lines(density(datos2$anios_actividad), lwd = 2, col = 'blue')
par(mfrow=c(4,2))
for (i in c(5,7:9)){
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
boxplot(datos2[,i], main=names(datos2)[i],
border="black",col=colores[i-4],horizontal = TRUE)
hist(datos2[,i],main=names(datos2)[i],
breaks=15,
col=colores[i-4],
freq=FALSE,
)
lines(density(datos2[,i]), lwd = 2, col = 'black')
}
par(mfrow=c(1,1))
head(datos2)
## id estado genero impacto_economico edad escolaridad anios_actividad
## 1 1 TABASCO MASCULINO BAJO (0-33) 75 6 42
## 2 2 TABASCO FEMENINO MEDIO (33-66) 73 3 12
## 3 3 TABASCO FEMENINO MEDIO (33-66) 74 2 50
## 4 4 TABASCO MASCULINO MEDIO (33-66) 57 3 35
## 5 5 TABASCO MASCULINO BAJO (0-33) 72 4 45
## 6 6 TABASCO MASCULINO MEDIO (33-66) 25 3 10
## superficie_ha inai_general
## 1 6.5 18.75
## 2 1.5 33.33
## 3 1.0 8.33
## 4 4.0 6.25
## 5 2.0 14.58
## 6 1.0 12.50
ver funcion table
table(datos2[,2])
##
## CHIAPAS TABASCO
## 97 44
funcion table variables cualitativas
for(i in 2:4){
tabla <- table(datos2[,i])
print(tabla)
}
##
## CHIAPAS TABASCO
## 97 44
##
## FEMENINO MASCULINO
## 27 114
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## 15 88 38
Incluir la variable escolaridad
datos2$escolaridad <- as.factor(datos2$escolaridad)
for(i in c(2:4,6)){
tabla <- table(datos2[,i])
print(tabla)
}
##
## CHIAPAS TABASCO
## 97 44
##
## FEMENINO MASCULINO
## 27 114
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## 15 88 38
##
## 0 1 2 3 4 5 6 9 12
## 38 9 15 11 12 5 33 14 4
Imprimir las frecuencias absolutas
for(i in c(2:4,6)){
tabla <- table(datos2[,i])
cat("Frecuencias abosolutas de ",names(datos2)[i])
print(tabla)
cat("\n","\n")
}
## Frecuencias abosolutas de estado
## CHIAPAS TABASCO
## 97 44
##
##
## Frecuencias abosolutas de genero
## FEMENINO MASCULINO
## 27 114
##
##
## Frecuencias abosolutas de impacto_economico
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## 15 88 38
##
##
## Frecuencias abosolutas de escolaridad
## 0 1 2 3 4 5 6 9 12
## 38 9 15 11 12 5 33 14 4
##
##
Imprimir las frecuencias relativas
for(i in c(2:4,6)){
tabla <- prop.table(table(datos2[,i]))
cat("Frecuencias relativas de ",names(datos2)[i])
tabla <- tabla*100
print(round(tabla,2))
cat("\n","\n")
}
## Frecuencias relativas de estado
## CHIAPAS TABASCO
## 68.79 31.21
##
##
## Frecuencias relativas de genero
## FEMENINO MASCULINO
## 19.15 80.85
##
##
## Frecuencias relativas de impacto_economico
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## 10.64 62.41 26.95
##
##
## Frecuencias relativas de escolaridad
## 0 1 2 3 4 5 6 9 12
## 26.95 6.38 10.64 7.80 8.51 3.55 23.40 9.93 2.84
##
##
El pastel sólo para las fiestas https://www.elartedepresentar.com/2011/11/las-tartas-son-para-el-postre-5-razones-por-las-que-no-uso-graficos-circulares/
paraBarras<-table(datos[,2])
barplot(paraBarras,
col=rainbow(3),#colores
legend.text = rownames(paraBarras), #leyenda
beside = TRUE #para que los ponga en diferentes lugares
)
paraBarras<-table(datos[,2])
grafico1 <- barplot(paraBarras,
col=rainbow(3),#colores
legend.text = rownames(paraBarras), #leyenda
beside = TRUE #para que los ponga en diferentes lugares
)
##### grafico, posicion, etiquetas
text(grafico1,paraBarras-2,labels=round(paraBarras,2)) #añadir texto
par(mfrow=c(2,2))
for (i in c(2:4,6)){
paraBarras<-table(datos2[,i])
grafico1 <- barplot(paraBarras,
col=rainbow(10),#colores
#legend.text = rownames(paraBarras), #leyenda
beside = TRUE #para que los ponga en diferentes lugares
)
##### grafico, posicion, etiquetas
text(grafico1,paraBarras-2,labels=round(paraBarras,2)) #añadir texto
}
par(mfrow=c(1,1))
par(mfrow=c(2,2))
for (i in c(2:4,6)){
paraBarras<-table(datos2[,i])
grafico1 <- barplot(paraBarras,
col=rainbow(10),#colores
beside = TRUE, #para que los ponga en diferentes lugares
main = names(datos2)[i]
)
##### grafico, posicion, etiquetas
text(grafico1,paraBarras-4,labels=round(paraBarras,2)) #añadir texto
}
par(mfrow=c(1,1))
Gráfico completo de barras Ordenado
par(mfrow=c(2,2))
for (i in c(2:4,6)){
paraBarras<-table(datos2[,i])
paraBarras <- sort(paraBarras) #ordenar
grafico1 <- barplot(paraBarras,
col=rainbow(10),#colores
beside = TRUE, #para que los ponga en diferentes lugares
main = names(datos2)[i]
)
##### grafico, posicion, etiquetas
text(grafico1,paraBarras-4,labels=round(paraBarras,2)) #añadir texto
}
par(mfrow=c(1,1))
sort(paraBarras)
##
## 12 5 1 3 4 9 2 6 0
## 4 5 9 11 12 14 15 33 38
Lo mismo pero en porcentajes
par(mfrow=c(2,2))
for (i in c(2:4,6)){
paraBarras<-prop.table(table(datos2[,i]))*100
paraBarras <- sort(paraBarras) #ordenar
grafico2 <- barplot(paraBarras,
col=rainbow(10),#colores
beside = TRUE, #para que los ponga en diferentes lugares
main = names(datos2)[i]
)
##### grafico, posicion, etiquetas
text(grafico2,paraBarras-2,labels=round(paraBarras,1)) #añadir texto
}
par(mfrow=c(1,1))
ahora en porcentaje decreciente
par(mfrow=c(2,2))
for (i in c(2:4,6)){
paraBarras<-prop.table(table(datos2[,i]))*100
paraBarras <- sort(paraBarras,decreasing = TRUE) #ordenar
grafico2 <- barplot(paraBarras,
col=rainbow(10),#colores
beside = TRUE, #para que los ponga en diferentes lugares
main = names(datos2)[i]
)
##### grafico, posicion, etiquetas
text(grafico2,paraBarras-2,labels=round(paraBarras,1)) #añadir texto
}
par(mfrow=c(1,1))
## 5.-Cruce variables cuantitativas
str(datos2)
## 'data.frame': 141 obs. of 9 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ escolaridad : Factor w/ 9 levels "0","1","2","3",..: 7 4 3 4 5 4 6 5 3 7 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
reordenamos la base
datos3 <- datos2[,c(1,2:4,6,5,7:9)]
str(datos3)
## 'data.frame': 141 obs. of 9 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ escolaridad : Factor w/ 9 levels "0","1","2","3",..: 7 4 3 4 5 4 6 5 3 7 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
Matriz d relaciones Grafico de dispersion agrupado
pairs(datos3[,6:9])
pairs(datos3[,6:9],pch=19,upper.panel = NULL,col="#00AFBB")
la única relacion que parece haber es entre años de actividad y edad
cor(datos3[,6:9])
## edad anios_actividad superficie_ha inai_general
## edad 1.00000000 0.65949124 0.01244292 -0.1544684
## anios_actividad 0.65949124 1.00000000 0.09858274 -0.1030760
## superficie_ha 0.01244292 0.09858274 1.00000000 0.1471131
## inai_general -0.15446844 -0.10307599 0.14711311 1.0000000
tablacor <- cor(datos3[,6:9])
round(tablacor,2)
## edad anios_actividad superficie_ha inai_general
## edad 1.00 0.66 0.01 -0.15
## anios_actividad 0.66 1.00 0.10 -0.10
## superficie_ha 0.01 0.10 1.00 0.15
## inai_general -0.15 -0.10 0.15 1.00
library(PerformanceAnalytics)
chart.Correlation(datos3[,6:9], histogram = F )
library(corrplot)
## corrplot 0.92 loaded
corrplot(cor(datos3[,6:9]),method="number")
#https://www.r-bloggers.com/2020/07/create-a-publication-ready-correlation-matrix-with-significance-levels-in-r/
correlation_matrix <- function(df,
type = "spearman", #pearson
digits = 2,
decimal.mark = ".",
use = "all",
show_significance = TRUE,
replace_diagonal = FALSE,
replacement = ""){
# check arguments
stopifnot({
is.numeric(digits)
digits >= 0
use %in% c("all", "upper", "lower")
is.logical(replace_diagonal)
is.logical(show_significance)
is.character(replacement)
})
# we need the Hmisc package for this
require(Hmisc)
# retain only numeric and boolean columns
isNumericOrBoolean = vapply(df, function(x) is.numeric(x) | is.logical(x), logical(1))
if (sum(!isNumericOrBoolean) > 0) {
cat('Dropping non-numeric/-boolean column(s):', paste(names(isNumericOrBoolean)[!isNumericOrBoolean], collapse = ', '), '\n\n')
}
df = df[isNumericOrBoolean]
# transform input data frame to matrix
x <- as.matrix(df)
# run correlation analysis using Hmisc package
correlation_matrix <- Hmisc::rcorr(x, type = )
R <- correlation_matrix$r # Matrix of correlation coeficients
p <- correlation_matrix$P # Matrix of p-value
# transform correlations to specific character format
Rformatted = formatC(R, format = 'f', digits = digits, decimal.mark = decimal.mark)
# if there are any negative numbers, we want to put a space before the positives to align all
if (sum(R < 0) > 0) {
Rformatted = ifelse(R > 0, paste0(' ', Rformatted), Rformatted)
}
# add significance levels if desired
if (show_significance) {
# define notions for significance levels; spacing is important.
stars <- ifelse(is.na(p), " ", ifelse(p < .001, "***", ifelse(p < .01, "** ", ifelse(p < .05, "* ", " "))))
Rformatted = paste0(Rformatted, stars)
}
# build a new matrix that includes the formatted correlations and their significance stars
Rnew <- matrix(Rformatted, ncol = ncol(x))
rownames(Rnew) <- colnames(x)
colnames(Rnew) <- paste(colnames(x), "", sep =" ")
# replace undesired values
if (use == 'upper') {
Rnew[lower.tri(Rnew, diag = replace_diagonal)] <- replacement
} else if (use == 'lower') {
Rnew[upper.tri(Rnew, diag = replace_diagonal)] <- replacement
} else if (replace_diagonal) {
diag(Rnew) <- replacement
}
return(Rnew)
}
correlation_matrix(datos3)
## Loading required package: Hmisc
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
## Dropping non-numeric/-boolean column(s): estado, genero, impacto_economico, escolaridad
## id edad anios_actividad superficie_ha
## id " 1.00 " "-0.04 " " 0.02 " " 0.18* "
## edad "-0.04 " " 1.00 " " 0.66***" " 0.01 "
## anios_actividad " 0.02 " " 0.66***" " 1.00 " " 0.10 "
## superficie_ha " 0.18* " " 0.01 " " 0.10 " " 1.00 "
## inai_general " 0.08 " "-0.15 " "-0.10 " " 0.15 "
## inai_general
## id " 0.08 "
## edad "-0.15 "
## anios_actividad "-0.10 "
## superficie_ha " 0.15 "
## inai_general " 1.00 "
library(apaTables)
apa.cor.table(datos3[,6:9])
##
##
## Means, standard deviations, and correlations with confidence intervals
##
##
## Variable M SD 1 2 3
## 1. edad 57.51 14.07
##
## 2. anios_actividad 25.03 14.00 .66**
## [.55, .74]
##
## 3. superficie_ha 2.98 2.15 .01 .10
## [-.15, .18] [-.07, .26]
##
## 4. inai_general 20.02 13.21 -.15 -.10 .15
## [-.31, .01] [-.26, .06] [-.02, .31]
##
##
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations
## that could have caused the sample correlation (Cumming, 2014).
## * indicates p < .05. ** indicates p < .01.
##
str(datos3)
## 'data.frame': 141 obs. of 9 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico: Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ escolaridad : Factor w/ 9 levels "0","1","2","3",..: 7 4 3 4 5 4 6 5 3 7 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
hasta el momento tenemos 4 variables cualitativas con 2,2,3,9 niveles por lo cual podríamos hacer 2 x2 x3 x9= 108 combinaciones sin embargo habría que reorganizar la variable escolaridad donde los valores del 1 al 5 deben ser primaria incompleta
datos3$escolaridadAgrupada <- ifelse(datos3$escolaridad=="1"|datos3$escolaridad=="2"|datos3$escolaridad=="3"
|datos3$escolaridad=="4"|datos3$escolaridad=="5","pTrunca",
ifelse(datos3$escolaridad=="6","pTerminada",
ifelse(datos3$escolaridad=="9","sTerminada",
ifelse(datos3$escolaridad=="12","prepTerminada",
ifelse(datos3$escolaridad=="0","noEstudios","Otro")))))
Reducimos la variable escolaridad a 5 por lo tanto podemos hacer 2x2x3x5=60 hasta 60 combinaciones en 4 niveles, y esas 60 combinaciones las podemos cruzar por cada una de las 4 variables cuantitativas
str(datos3)
## 'data.frame': 141 obs. of 10 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico : Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ escolaridad : Factor w/ 9 levels "0","1","2","3",..: 7 4 3 4 5 4 6 5 3 7 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
## $ escolaridadAgrupada: chr "pTerminada" "pTrunca" "pTrunca" "pTrunca" ...
Vamos a quitar id y escolaridad, trasformar la nueva variable a factor y reacomodar primero las cualitativas y luego las cuantitativas
datos3$escolaridadAgrupada <- as.factor(datos3$escolaridadAgrupada)
datos4 <- datos3[,c(2:4,10,6:9)]
Ver como es que queda
str(datos4)
## 'data.frame': 141 obs. of 8 variables:
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico : Factor w/ 3 levels "ALTO (66-100)",..: 2 3 3 3 2 3 3 3 3 2 ...
## $ escolaridadAgrupada: Factor w/ 5 levels "noEstudios","prepTerminada",..: 3 4 4 4 4 4 4 4 4 3 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
Un solo nivel
table(datos4$escolaridadAgrupada)
##
## noEstudios prepTerminada pTerminada pTrunca sTerminada
## 38 4 33 52 14
dos niveles
table(datos4$escolaridadAgrupada,datos4$impacto_economico)
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 4 28 6
## prepTerminada 0 3 1
## pTerminada 4 20 9
## pTrunca 4 31 17
## sTerminada 3 6 5
tres niveles
table(datos4$escolaridadAgrupada,datos4$impacto_economico,datos$genero)
## , , = FEMENINO
##
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 1 5 2
## prepTerminada 0 1 0
## pTerminada 1 6 4
## pTrunca 0 2 2
## sTerminada 0 2 1
##
## , , = MASCULINO
##
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 3 23 4
## prepTerminada 0 2 1
## pTerminada 3 14 5
## pTrunca 4 29 15
## sTerminada 3 4 4
Aplicamos attach para ya no llamar la base y graficamos 4 niveles
attach(datos4)
4 niveles
table(escolaridadAgrupada,impacto_economico,genero,estado)
## , , genero = FEMENINO, estado = CHIAPAS
##
## impacto_economico
## escolaridadAgrupada ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 0 3 1
## prepTerminada 0 1 0
## pTerminada 1 3 1
## pTrunca 0 0 0
## sTerminada 0 2 0
##
## , , genero = MASCULINO, estado = CHIAPAS
##
## impacto_economico
## escolaridadAgrupada ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 3 22 2
## prepTerminada 0 0 0
## pTerminada 2 9 3
## pTrunca 4 25 5
## sTerminada 3 3 4
##
## , , genero = FEMENINO, estado = TABASCO
##
## impacto_economico
## escolaridadAgrupada ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 1 2 1
## prepTerminada 0 0 0
## pTerminada 0 3 3
## pTrunca 0 2 2
## sTerminada 0 0 1
##
## , , genero = MASCULINO, estado = TABASCO
##
## impacto_economico
## escolaridadAgrupada ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## noEstudios 0 1 2
## prepTerminada 0 2 1
## pTerminada 1 5 2
## pTrunca 0 4 10
## sTerminada 0 1 0
attach es contrario a detach
Vamos a juntar prepa terminada y secundaria terminada
datos3$escolaridadAgrupada <- ifelse(datos3$escolaridad=="1"|datos3$escolaridad=="2"|datos3$escolaridad=="3"
|datos3$escolaridad=="4"|datos3$escolaridad=="5","primario_trunca",
ifelse(datos3$escolaridad=="6","primaria_terminada",
ifelse(datos3$escolaridad=="9","secundarioa_o_mas",
ifelse(datos3$escolaridad=="12","secundarioa_o_mas",
ifelse(datos3$escolaridad=="0","sin_estudios","Otro")))))
convertimos a factor y reordenamos
datos3$escolaridadAgrupada <- as.factor(datos3$escolaridadAgrupada)
table(datos3$escolaridadAgrupada)
##
## primaria_terminada primario_trunca secundarioa_o_mas sin_estudios
## 33 52 18 38
reordenar
datos3$escolaridadAgrupada <-factor(datos3$escolaridadAgrupada, levels = levels(datos3$escolaridadAgrupada)[c(4,2,1,3)])
levels(datos3$escolaridadAgrupada)
## [1] "sin_estudios" "primario_trunca" "primaria_terminada"
## [4] "secundarioa_o_mas"
Volvemos a hacer datos4
datos4 <- datos3[,c(2:4,10,6:9)]
table(datos4$escolaridadAgrupada,datos4$impacto_economico)
##
## ALTO (66-100) BAJO (0-33) MEDIO (33-66)
## sin_estudios 4 28 6
## primario_trunca 4 31 17
## primaria_terminada 4 20 9
## secundarioa_o_mas 3 9 6
también vamos a reordenar los niveles de impacto económico
datos4$impacto_economico <- factor(datos4$impacto_economico, levels = levels(datos4$impacto_economico)[c(2,3,1)])
levels(datos4$impacto_economico)
## [1] "BAJO (0-33)" "MEDIO (33-66)" "ALTO (66-100)"
table(datos4$escolaridadAgrupada,datos4$impacto_economico)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 28 6 4
## primario_trunca 31 17 4
## primaria_terminada 20 9 4
## secundarioa_o_mas 9 6 3
Frecuencias relativas globales
prop.table(table(datos4$escolaridadAgrupada,datos4$impacto_economico))
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 0.19858156 0.04255319 0.02836879
## primario_trunca 0.21985816 0.12056738 0.02836879
## primaria_terminada 0.14184397 0.06382979 0.02836879
## secundarioa_o_mas 0.06382979 0.04255319 0.02127660
freRelGl1 <- prop.table(table(datos4$escolaridadAgrupada,datos4$impacto_economico))*100
round(freRelGl1,2)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 19.86 4.26 2.84
## primario_trunca 21.99 12.06 2.84
## primaria_terminada 14.18 6.38 2.84
## secundarioa_o_mas 6.38 4.26 2.13
Frecuencuencias relativas marginales por columnas
freRelGl2 <- prop.table(table(datos4$escolaridadAgrupada,datos4$impacto_economico),2)*100
round(freRelGl2,2)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 31.82 15.79 26.67
## primario_trunca 35.23 44.74 26.67
## primaria_terminada 22.73 23.68 26.67
## secundarioa_o_mas 10.23 15.79 20.00
Frecuencuencias relativas marginales por filas
freRelGl3 <- prop.table(table(datos4$escolaridadAgrupada,datos4$impacto_economico),1)*100
round(freRelGl3,2)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 73.68 15.79 10.53
## primario_trunca 59.62 32.69 7.69
## primaria_terminada 60.61 27.27 12.12
## secundarioa_o_mas 50.00 33.33 16.67
Agregar suma
addmargins(freRelGl1)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100) Sum
## sin_estudios 19.858156 4.255319 2.836879 26.950355
## primario_trunca 21.985816 12.056738 2.836879 36.879433
## primaria_terminada 14.184397 6.382979 2.836879 23.404255
## secundarioa_o_mas 6.382979 4.255319 2.127660 12.765957
## Sum 62.411348 26.950355 10.638298 100.000000
addmargins(freRelGl2)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100) Sum
## sin_estudios 31.81818 15.78947 26.66667 74.27432
## primario_trunca 35.22727 44.73684 26.66667 106.63078
## primaria_terminada 22.72727 23.68421 26.66667 73.07815
## secundarioa_o_mas 10.22727 15.78947 20.00000 46.01675
## Sum 100.00000 100.00000 100.00000 300.00000
freRelGl3 <- round(freRelGl3,2)
addmargins(freRelGl3)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100) Sum
## sin_estudios 73.68 15.79 10.53 100.00
## primario_trunca 59.62 32.69 7.69 100.00
## primaria_terminada 60.61 27.27 12.12 100.00
## secundarioa_o_mas 50.00 33.33 16.67 100.00
## Sum 243.91 109.08 47.01 400.00
Regresemos a la tabla inicial para graficar
table(datos4$escolaridadAgrupada,datos4$impacto_economico)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 28 6 4
## primario_trunca 31 17 4
## primaria_terminada 20 9 4
## secundarioa_o_mas 9 6 3
Empecemos
tabla1 <- table(datos4$escolaridadAgrupada,datos4$impacto_economico)
barplot(tabla1)
agregamos leyenda
barplot(tabla1, legend=T)
Dividimos las barras
barplot(tabla1, legend=T,beside = TRUE)
Poner colores
barplot(tabla1, legend=T,beside = TRUE, col=rainbow(3))
colores personalizados
colores1 <- c("#1373BF","#00A79D","#8CC731","#FEB02F") #,"#F45918"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple")
barplot(tabla1, legend=T,beside = TRUE, col=colores1)
Poner etiquetas
barplot(tabla1, legend=T,beside = TRUE, col=colores1,
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y")
Cambiar la escala de y
barplot(tabla1, legend=T,beside = TRUE, col=colores1,
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50))
Agregar valores
grafico1 <- barplot(tabla1, legend=T,beside = TRUE, col=colores1,
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50))
######gráfico, #posicion, #valores
text(grafico1,tabla1+3,labels=round(tabla1,1))
Agregar texturas (extra)
grafico1 <- barplot(tabla1, legend=T,beside = TRUE, col=colores1,
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
density=c(10,10,40,40) , angle=c(15,15,11,11)) #la densidad marca antes de menor escolaridad y mayor ecolaridad
######gráfico, #posicion, #valores
text(grafico1,tabla1+3,labels=round(tabla1,1))
Textura para marcar a los de primaria
grafico1 <- barplot(tabla1, legend=T,beside = TRUE, col=colores1,
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
density=c(10,40,40,10) , angle=c(15,11,11,15)) #la densidad destaca los de primaria ya sea trunca o terminada
######gráfico, #posicion, #valores
text(grafico1,tabla1+3,labels=round(tabla1,1))
borde para destacar algunos atributos
grafico1 <- barplot(tabla1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
density=c(10,40,40,10) , angle=c(15,11,11,15))
######gráfico, #posicion, #valores
text(grafico1,tabla1+3,labels=round(tabla1,1))
Remover la escala y
grafico1 <- barplot(tabla1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,35),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
######gráfico, #posicion, #valores
text(grafico1,tabla1+3,labels=round(tabla1,1))
Hasta el moneto llevamos solo dos niveles impacto (variablex), escolaridad(colores), vamos a subir a un tercer nivel por medio de ventana y dividir hombres y mujeres
str(datos4)
## 'data.frame': 141 obs. of 8 variables:
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico : Factor w/ 3 levels "BAJO (0-33)",..: 1 2 2 2 1 2 2 2 2 1 ...
## $ escolaridadAgrupada: Factor w/ 4 levels "sin_estudios",..: 3 2 2 2 2 2 2 2 2 3 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
Primero filtramos
#filtrar las filas por condicion
datosFiltradoF<-datos4[datos4$genero=="FEMENINO",]
datosFiltradoM<-datos4[datos4$genero=="MASCULINO",]
VER UN EJEMPLO DE LA TABLA
table(datosFiltradoF$escolaridadAgrupada,datosFiltradoF$impacto_economico)
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 5 2 1
## primario_trunca 2 2 0
## primaria_terminada 6 4 1
## secundarioa_o_mas 3 1 0
ACOMODAR LAS TABLAS POR CADA GENERO
tablaFEMENINO <- table(datosFiltradoF$escolaridadAgrupada,datosFiltradoF$impacto_economico)
tablaMASCULINO <- table(datosFiltradoM$escolaridadAgrupada,datosFiltradoM$impacto_economico)
HACER LA DIVISION Y PONER LOS DOS GRAFICOS
par(mfrow=c(1,2)) #UNA FILA, DOS COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(tablaFEMENINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,35),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaFEMENINO+3,labels=round(tablaFEMENINO,1))
#################### segundo grafico
graficoM <- barplot(tablaMASCULINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,35),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaMASCULINO+3,labels=round(tablaMASCULINO,1))
par(mfrow=c(1,2)) #VOLVER ESTADO ORIGINAL
Aumenta la escala del segundo gráfico
par(mfrow=c(1,2)) #UNA FILA, DOS COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(tablaFEMENINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,35),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaFEMENINO+2,labels=round(tablaFEMENINO,1))
#################### segundo grafico
graficoM <- barplot(tablaMASCULINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Titulo",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,60),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaMASCULINO+3,labels=round(tablaMASCULINO,1))
par(mfrow=c(1,2)) #VOLVER ESTADO ORIGINAL
Cambiar los títulos
par(mfrow=c(1,2)) #UNA FILA, DOS COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(tablaFEMENINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Gráfico Femenino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,35),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaFEMENINO+2,labels=round(tablaFEMENINO,1))
#################### segundo grafico
graficoM <- barplot(tablaMASCULINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
main = "Gráfico Masculino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,60),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaMASCULINO+3,labels=round(tablaMASCULINO,1))
par(mfrow=c(1,2)) #VOLVER ESTADO ORIGINAL
AJUSTAMOS LEYENDA Y ESCALA
par(mfrow=c(1,2)) #UNA FILA, DOS COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(tablaFEMENINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaFEMENINO+1,labels=round(tablaFEMENINO,1))
#################### segundo grafico
graficoM <- barplot(tablaMASCULINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,40),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaMASCULINO+3,labels=round(tablaMASCULINO,1))
par(mfrow=c(1,2)) #VOLVER ESTADO ORIGINAL
LOGRAMOS LLEGAR A TRES NIVELES ; IMPACTO (EJEX), ESCOLARIDAD (COLORES), GENERO (VENTANA)
PODEMOS HACER UN DOBLE FILTRO Y UNA DOBLE VENTANA PARA SUBIR A 4 NIVELES (ESTADO) HAY QUE TENER EN CUENTA QUE ESTAMOS ESTIRANDO MUCHO LA LIGA
PASO1 hacer los filtros dobles
#filtrar las filas por condicion
datosFiltradoFCh<-datos4[datos4$genero=="FEMENINO" & datos4$estado=="CHIAPAS",]
datosFiltradoFTab<-datos4[datos4$genero=="FEMENINO" & datos4$estado=="TABASCO",]
datosFiltradoMCh<-datos4[datos4$genero=="MASCULINO"& datos4$estado=="CHIAPAS",]
datosFiltradoMTab<-datos4[datos4$genero=="MASCULINO"& datos4$estado=="TABASCO",]
PASO2 Hacer las frecuencias con table()
t1 <- table(datosFiltradoFCh$escolaridadAgrupada,datosFiltradoFCh$impacto_economico)
t2 <- table(datosFiltradoFTab$escolaridadAgrupada,datosFiltradoFTab$impacto_economico)
t3 <- table(datosFiltradoMCh$escolaridadAgrupada,datosFiltradoMCh$impacto_economico)
t4 <- table(datosFiltradoMTab$escolaridadAgrupada,datosFiltradoMTab$impacto_economico)
t4
##
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## sin_estudios 1 2 0
## primario_trunca 4 10 0
## primaria_terminada 5 2 1
## secundarioa_o_mas 3 1 0
PASO3 TRES GRAFICAR
Establecer las divisiones
par(mfrow=c(2,2)) #1, FILAS Y COLUMNAS
par(mfrow=c(1,1)) #1, rEESTABLECER FILAS Y COLUMNAS
COPIAR Y PEGAR PRIMER GRAFICO
par(mfrow=c(2,2)) #1, FILAS Y COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(tablaFEMENINO, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,tablaFEMENINO+1,labels=round(tablaFEMENINO,1))
par(mfrow=c(1,1)) #1, rEESTABLECER FILAS Y COLUMNAS
CAMBIAR LA TABLA POR T1
#COPIAR Y PEGAR PRIMER GRAFICO
par(mfrow=c(2,2)) #1, FILAS Y COLUMNAS
################ pRIMER GRAFICO##################
graficoF <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(graficoF,t1+1,labels=round(t1,1))
par(mfrow=c(1,1)) #1, rEESTABLECER FILAS Y COLUMNAS
Cambiar nombre del gráfico 1 y título
#COPIAR Y PEGAR PRIMER GRAFICO
par(mfrow=c(2,2)) #1, FILAS Y COLUMNAS
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+1,labels=round(t1,1))
par(mfrow=c(1,1)) #1, rEESTABLECER FILAS Y COLUMNAS
AGregar grafico de t2 (femenino-tabasco)
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+1,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+1,labels=round(t2,1))
par(mfrow=c(1,1))
Agregar los graficos masculinos
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+1,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+1,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,10),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
par(mfrow=c(1,1))
AJustamos escalas
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+1,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n", #remover escala
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+1,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,20),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
par(mfrow=c(1,1))
Ajustar el espaciado de los femeninos t1+0.5 t2+0.5
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+0.5,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+0.5,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,20),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
par(mfrow=c(1,1))
cambiar el tamaño de letra del eje x}
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+0.5,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+0.5,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
yaxt = "n",
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,20),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
par(mfrow=c(1,1))
Cambiar el tañano de la etiqueta impacto en todos los gráficos
par(mfrow=c(2,2))
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+0.5,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
cex.names = 0.7 , ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+0.5,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,20),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
par(mfrow=c(1,1))
ALREDEDOR DE LA VARIABLE FRECUENCIA (CUANTITATIVA) ,HEMOS LLEGADO A REPRESENTAR CUATRO NIVELES
3 (impacto) x 4 (escolaridad) X 2 (estados) x 2(generos) = 48 casos
1.- Impacto (EjeX)
2.- Escolaridad (Colores)
3.- Genero (1 Ventada)
4.- Estado (Doble ventana)
5.- Un quinto nivel se puede hacer pero solo en ggplot2 con gganimate 6.- Mencion especial a texturas y a bordes
También podemos imprimir de una por una
################ pRIMER GRAFICO##################
grafico1 <- barplot(t1, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico1,t1+0.5,labels=round(t1,1))
################ segundo grafico##################
grafico2 <- barplot(t2, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Femenino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,7),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico2,t2+0.5,labels=round(t2,1))
################ Tercer gráfico ##################
grafico3 <- barplot(t3, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-CHIAPAS",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,50),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico3,t3+1,labels=round(t3,1))
############# Cuarto gráfico #####################
grafico4 <- barplot(t4, legend=T,beside = TRUE, col=colores1,border = c("gray","red","red","gray"),
#bty quitar borde, x= posicion, ncol= numero columnas, cex= tamaño
args.legend = list(bty = "n", x = "top", ncol = 2,cex=0.8),
main = "Gráfico Masculino-TABASCO",
xlab = "etiqueta x",
ylab = "etiqueta y",
ylim = c(0,20),
yaxt = "n",
cex.names = 0.7, ########################### CAMBIAR TAMAÑO DE LAS ETIQUETAS
density=c(10,40,40,10) , angle=c(15,11,11,15))
text(grafico4,t4+1,labels=round(t4,1))
tapply(datos4$inai_general,datos4$impacto_economico, summary)
## $`BAJO (0-33)`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 10.42 16.25 18.03 23.13 56.25
##
## $`MEDIO (33-66)`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 9.688 20.940 23.362 33.750 66.670
##
## $`ALTO (66-100)`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 15.53 21.25 23.28 25.62 55.00
tapply(datos4$inai_general,datos4$impacto_economico,mean)
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## 18.02909 23.36184 23.27933
El mejor gráfico es el boxplot, vamos a ver como es a un nivel
boxplot(datos4$inai_general~datos4$estado)
ahora a dos niveles
boxplot(datos4$inai_general~datos4$estado+datos4$genero)
ahora a tres niveles
boxplot(datos4$inai_general~datos4$estado+datos4$genero+datos4$impacto_economico)
por estetica es mejor a un nivel, máximo 2
recordemos el boxplot básico
#Establecer los parámetros
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
# definir las variables que se van a mostrar en el plot
media <- mean(variableEnTurno)
mediana <- median(variableEnTurno)
cua1<- quantile(variableEnTurno,.25)
cua3<- quantile(variableEnTurno,.75)
#definir los colores que podemos utilizar
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
# Graficar el plot
graph_i <- boxplot(variableEnTurno, main=names(datos)[i],border = colores[i-4],col="white")
#ponerl el punto de la media
points(1,media,col = "red",pch=18,cex=2)
#poner los textos
text(0.6,media, labels = round(media,2), col = "red")
text(0.75,cua1, labels =round(cua1,2), col = "blue")
text(0.75,cua3, labels =round(cua3,2), col = "blue")
text(0.75,mediana, labels =round(mediana,2), col = "blue")
################################ Este código es solo si hay outliers
text(1, # localización en x del texto
graph_i$out,# localización de y en el texto
round(graph_i$out,1), # escribir valores
pos = 4, #posición esta del 1 al 4
cex=0.9) #tamaño del texto
Hacer el mismo gráfico pero en 1 niveles
# A tener en cuenta
# graph_i$stats #los estadísticos filas [1]=bigote inferior [2] primer cuartil [3]mediana [4] tercer cuartil [5] bigote superios
# graph_i$stats[2,2] # [filas, columnas] #primer cuartil, columna 2
# graph_i$stats[2,3] #primer cuartil, columna 3
Ahora si a graficar
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
cuentaNiveles <- length( levels(varCuanti1))
media <- mean(variableEnTurno)
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[i-4],col="white")
largoFuncion <- cuentaNiveles
#texto ( posicion x, posicion y, valor, color)
#bigote inferior
text(1:largoFuncion, graph_i$stats[1,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue")
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue")
#bigote superior
text(1:largoFuncion, graph_i$stats[5,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
Poner los valores de los outliers, y quitar bigotes
a tomar en cuenta
graph_i$out
## [1] 59 61 70
GRAFICAR CON OUTLIERS PRIMER INTENTO
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
cuentaNiveles <- length( levels(varCuanti1))
media <- mean(variableEnTurno)
colores<-c("lightblue","#00AFBB","#E7B800","#FC4E07","purple","green3","cyan")
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[i-4],col="white")
largoFuncion <- cuentaNiveles
#texto ( posicion x, posicion y, valor, color)
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue")
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue")
# OUTLIERS ESTE ES MANUAL
text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
CAMBIAR COLORES POR CADA BOX
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
cuentaNiveles <- length( levels(varCuanti1))
media <- mean(variableEnTurno)
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
largoFuncion <- cuentaNiveles
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[1:largoFuncion],col="white")
#texto ( posicion x, posicion y, valor, color)
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue")
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue")
# OUTLIERS ESTE ES MANUAL
text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Poner la media
A tener en cuenta
tapply(variableEnTurno,varCuanti1,mean)
## BAJO (0-33) MEDIO (33-66) ALTO (66-100)
## 24.59091 25.57895 26.20000
medias <- tapply(variableEnTurno,varCuanti1,mean)
medias <- as.data.frame(medias)
medias
## medias
## BAJO (0-33) 24.59091
## MEDIO (33-66) 25.57895
## ALTO (66-100) 26.20000
medias <- tapply(variableEnTurno,varCuanti1,mean)
medias <- as.data.frame(medias)
medias[3,1]
## [1] 26.2
Graficar con la media
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
medias <- tapply(variableEnTurno,varCuanti1,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
largoFuncion <- length( levels(varCuanti1))
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[1:largoFuncion],col="white")
#texto ( posicion x, posicion y, valor, color)
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue")
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue")
#MEDIA
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
# OUTLIERS ESTE ES MANUAL
text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Graficar con la media y el punto
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
medias <- tapply(variableEnTurno,varCuanti1,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
largoFuncion <- length( levels(varCuanti1))
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[1:largoFuncion],col="white")
#texto ( posicion x, posicion y, valor, color)
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue")
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue")
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue")
#MEDIA
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
#ponerl el punto de la media
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Cambiar la posicion
i <- 6
datos <- datos4
variableEnTurno <- datos[,i]
varCuanti1 <- datos$impacto_economico
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
largoFuncion <- length( levels(varCuanti1))
#agregamos la variable cuali
graph_i <- boxplot(variableEnTurno~varCuanti1, main=names(datos)[i],border = colores[1:largoFuncion],col="white")
#texto ( posicion x, posicion y, valor, color)
#primer cuartil
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2)
#mediana
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2)
#tercer cuartil
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2)
medias <- tapply(variableEnTurno,varCuanti1,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#MEDIA
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
#ponerl el punto de la media
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
HAcerlo en forma de función y comprimir
datos <- datos4
varNumerica <- datos$anios_actividad
varCategorica <- datos$escolaridadAgrupada
nombreGrafico="Título del gráfico"
nombreX="label x"
nombreY="label y"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
# sacar parámetro
largoFuncion <- length( levels(varCategorica))
#agregamos la variable cuali
graph_i <- boxplot(varNumerica~varCategorica, main=nombreGrafico,border = colores[1:largoFuncion],col="white",
xlab=nombreX, ylab = nombreY)
medias <- tapply(varNumerica,varCategorica,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#primer cuartiles
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2,cex=0.8)
#medias
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Puede hacer filtroS
datos <- datos4[datos4$genero=="MASCULINO"&datos4$estado=="TABASCO",]
varNumerica <- datos$anios_actividad
varCategorica <- datos$escolaridadAgrupada
nombreGrafico="Título del gráfico"
nombreX="label x"
nombreY="label y"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
# sacar parámetro
largoFuncion <- length( levels(varCategorica))
#agregamos la variable cuali
graph_i <- boxplot(varNumerica~varCategorica, main=nombreGrafico,border = colores[1:largoFuncion],col="white",
xlab=nombreX, ylab = nombreY)
medias <- tapply(varNumerica,varCategorica,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#primer cuartiles
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2,cex=0.8)
#medias
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
DOble variable
datos <- datos4
varNumerica <- datos$anios_actividad
varCategorica <- datos$genero
varCategorica2<- datos$estado
nombreGrafico=""
nombreX=""
nombreY=""
nombresEnX=""
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
colores1 <- rainbow(10,alpha = 0.4)
# sacar parámetro
largoFuncion1 <- length( levels(varCategorica))
# sacar parámetro
largoFuncion2 <- length( levels(varCategorica2))
largoFuncion3 <- largoFuncion1*largoFuncion2
#agregamos la variable cuali
graph_i <- boxplot(varNumerica~varCategorica+varCategorica2, main=nombreGrafico,border = "black",col=(colores1[1:largoFuncion1]),
xlab=nombreX, ylab = nombreY,
ylim= c(-5,max(graph_i$stats)+20)
,las=2,
xaxt = "n") #,names = c("", "A", "", "", "B", "","","","","")
legend("topleft", fill = colores1[1:largoFuncion1], legend = names(table(varCategorica)), horiz = T,cex = 0.8,bty = "n")
# medias <- tapply(varNumerica,varCategorica,mean)
# medias <- as.data.frame(medias)
# medias <- round(medias,1)
#primer cuartiles
text(1:largoFuncion3, graph_i$stats[2,1:largoFuncion3], labels =graph_i$stats[2,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[3,1:largoFuncion3], labels =graph_i$stats[3,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[4,1:largoFuncion3], labels =graph_i$stats[4,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
#BIGOTE superior
text(1:largoFuncion3, graph_i$stats[5,1:largoFuncion3], labels =graph_i$names[1:largoFuncion3], col = "black",pos=3,cex=0.7)
#
# bigote inferios
# text(1:largoFuncion3, graph_i$stats[1,1:largoFuncion3], labels =graph_i$names[1:largoFuncion3], col = "black",pos=1,cex=0.5)
#
# posicion dada -1
# text(1:largoFuncion3, -2, labels =graph_i$names[1:largoFuncion3], col = "black",pos=1,cex=0.5)
# #medias
# text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
# points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
# Cambiar parametros
# Agregar NAmes
# Ponerlo en los bigotes y eliminar x
#poner horizontal
Ver los de la media
datos <- datos4
varNumerica <- datos$anios_actividad
varCategorica <- datos$estado
varCategorica2<- datos$genero
nombreGrafico=""
nombreX=""
nombreY=""
nombresEnX=""
colores1 <- rainbow(10,alpha = 0.2)
colores2 <- rainbow(10,v=0.6)
# sacar parámetro
largoFuncion1 <- length( levels(varCategorica))
# sacar parámetro
largoFuncion2 <- length( levels(varCategorica2))
largoFuncion3 <- largoFuncion1*largoFuncion2
#agregamos la variable cuali
graph_i <- boxplot(varNumerica~varCategorica+varCategorica2,
main=nombreGrafico,
border = colores2[1:largoFuncion1],
col=(colores1[1:largoFuncion1]),
xlab=nombreX, ylab = nombreY,
ylim= c(-5,max(graph_i$stats)+20)
,las=2,
xaxt = "n") #,names = c("", "A", "", "", "B", "","","","","")
legend("topleft", fill = colores1[1:largoFuncion1], legend = names(table(varCategorica)), horiz = T,cex = 0.8,bty = "n")
#primer cuartiles
text(1:largoFuncion3, graph_i$stats[2,1:largoFuncion3], labels =graph_i$stats[2,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[3,1:largoFuncion3], labels =graph_i$stats[3,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[4,1:largoFuncion3], labels =graph_i$stats[4,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
#BIGOTE superior
text(1:largoFuncion3, graph_i$stats[5,1:largoFuncion3], labels =graph_i$names[1:largoFuncion3], col = "black",pos=3,cex=0.7)
medias <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,mean)
points(1:largoFuncion3,medias$varNumerica,col="red",cex=1.2, pch=19)
text(1:largoFuncion3,medias$varNumerica,labels = round(medias$varNumerica,1), pos=4,cex=0.8,col="red")
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
LISTO GRAFICO
#1 par(mar=c(15,2,1,1))
datos <- datos4
varNumerica <- datos$edad
varCategorica <- datos$genero
varCategorica2<- datos$impacto_economico
nombreGrafico=""
nombreX=""
nombreY=""
########################################################################################################################################
colores1 <- rainbow(10,alpha = 0.2)
colores2 <- rainbow(10,v=0.6)
################################ PORCENTAJE EXTRA EJE Y
maximo <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,max)
maximo1 <- max(maximo$varNumerica)
maximo2 <- maximo1+(maximo1*.10)
################################ NUMERO DE CAJAS
largoFuncion1 <- length( levels(varCategorica))
largoFuncion2 <- length( levels(varCategorica2))
largoFuncion3 <- largoFuncion1*largoFuncion2
################################ GRAFICAR
graph_i <- boxplot(varNumerica~varCategorica+varCategorica2, #FORMULA
main=nombreGrafico, #TITULO
xlab=nombreX, ylab = nombreY, #NOMBRE ETIQUETA X , Y
border = colores2[1:largoFuncion1], #COLOR DEL BORDE
col=(colores1[1:largoFuncion1]), #COLORE DEL RELLENO
ylim= c(-3,maximo2), # LIMITES
# 1 las=2 # PONER TITULOS EN 90 GRADOS
#names= c("","FEMENINO","","","MASCULINO",""), #PONER NOMBRES EJE X
xaxt = "n" #ELIMINAR NOMBRES EJE X
)
################################ LEYENDA
legend("topleft", fill = colores1[1:largoFuncion1], legend = names(table(varCategorica)), horiz = T,cex = 0.8,bty = "n")
################################ TEXTO ARRIBA DEL BIGOTE
text(1:largoFuncion3, graph_i$stats[5,1:largoFuncion3], labels =graph_i$names[5:largoFuncion3], col = "black",pos=3,cex=0.5)
################################ VALORES DE LOS CUARTILES
text(1:largoFuncion3, graph_i$stats[2,1:largoFuncion3], labels =graph_i$stats[2,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[3,1:largoFuncion3], labels =round(graph_i$stats[3,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[4,1:largoFuncion3], labels =graph_i$stats[4,1:largoFuncion3], col = "blue",pos=2,cex=0.8)
################################ VALORES DE LA MEDIA
medias <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,mean)
points(1:largoFuncion3,medias$varNumerica,col="red",cex=1.2, pch=19)
text(1:largoFuncion3,medias$varNumerica,labels = round(medias$varNumerica,1), pos=4,cex=0.8,col="red")
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
## 8. Gráficos listos
str(datos4)
## 'data.frame': 141 obs. of 8 variables:
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico : Factor w/ 3 levels "BAJO (0-33)",..: 1 2 2 2 1 2 2 2 2 1 ...
## $ escolaridadAgrupada: Factor w/ 4 levels "sin_estudios",..: 3 2 2 2 2 2 2 2 2 3 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
###################### MODIFICAR
datos <- datos4
varNumerica <- datos$anios_actividad
varCategorica <- datos$escolaridadAgrupada
nombreGrafico="Título del gráfico"
nombreX="label x"
nombreY="label y"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
##############################################################################################
# Número de niveles variable categórica
largoFuncion <- length( levels(varCategorica))
#Gráfica
graph_i <- boxplot(varNumerica~varCategorica, main=nombreGrafico,border = colores[1:largoFuncion],col="white",
xlab=nombreX, ylab = nombreY)
#Poner la leyenda
#legend("topright", fill = colores[1:largoFuncion], legend = names(table(varCategorica)), horiz = F,cex = 0.8,bty = "n")#xaxt = "n"
# Obtener las medias
medias <- tapply(varNumerica,varCategorica,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#Valor de las medias
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=19,cex=2)
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
#Valor de los cuartiles
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# text(1:largoFuncion, graph_i$stats[5,1:largoFuncion], labels =graph_i$stats[5,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# text(1:largoFuncion, graph_i$stats[1,1:largoFuncion], labels =graph_i$stats[1,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# OUTLIERS ESTE ES MANUAL
# text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Hacer filtros
datos <- datos4[datos4$genero=="MASCULINO"&datos4$estado=="TABASCO",]
varNumerica <- datos$anios_actividad
varCategorica <- datos$escolaridadAgrupada
nombreGrafico="Título del gráfico"
nombreX="label x"
nombreY="label y"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
# sacar parámetro
largoFuncion <- length( levels(varCategorica))
#agregamos la variable cuali
graph_i <- boxplot(varNumerica~varCategorica, main=nombreGrafico,border = colores[1:largoFuncion],col="white",
xlab=nombreX, ylab = nombreY)
medias <- tapply(varNumerica,varCategorica,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#primer cuartiles
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2,cex=0.8)
#medias
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=18,cex=2)
# OUTLIERS ESTE ES MANUAL
# text(4, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(5, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
Implementación del código
myUrl="https://raw.githubusercontent.com/armandovl/datasets_uno/main/atitanic.csv"
titanic<-read.csv(url(myUrl),stringsAsFactors = TRUE)
head(titanic)
## PassengerId Name Age Pclass Sex Family
## 1 891 Dooley, Mr. Patrick 32 3 male 0
## 2 890 Behr, Mr. Karl Howell 26 1 male 0
## 3 888 Graham, Miss. Margaret Edith 19 1 female 0
## 4 887 Montvila, Rev. Juozas 27 2 male 0
## 5 886 Rice, Mrs. William (Margaret Norton) 39 3 female 5
## 6 885 Sutehall, Mr. Henry Jr 25 3 male 0
## Embarked Survived
## 1 Q muere
## 2 C vive
## 3 S vive
## 4 S muere
## 5 Q muere
## 6 S muere
titanic$Pclass <- as.factor(titanic$Pclass)
str(titanic)
## 'data.frame': 714 obs. of 8 variables:
## $ PassengerId: int 891 890 888 887 886 885 884 883 882 881 ...
## $ Name : Factor w/ 714 levels "Abbing, Mr. Anthony",..: 210 81 279 466 562 640 62 182 442 597 ...
## $ Age : num 32 26 19 27 39 25 28 22 33 25 ...
## $ Pclass : Factor w/ 3 levels "1","2","3": 3 1 1 2 3 3 2 3 3 2 ...
## $ Sex : Factor w/ 2 levels "female","male": 2 2 1 2 1 2 2 1 2 1 ...
## $ Family : int 0 0 0 0 5 0 0 0 0 1 ...
## $ Embarked : Factor w/ 4 levels "C","Q","s","S": 2 1 4 4 2 4 4 4 4 4 ...
## $ Survived : Factor w/ 2 levels "muere","vive": 1 2 2 1 1 1 1 1 1 2 ...
datos <- titanic
varNumerica <- datos$Age
varCategorica <- datos$Sex
nombreGrafico="Título del gráfico"
nombreX="label x"
nombreY="label y"
colores<-c("#00AFBB","#E7B800","#FC4E07","purple","green3","cyan","lightblue")
##############################################################################################
# Número de niveles variable categórica
largoFuncion <- length( levels(varCategorica))
#Gráfica
graph_i <- boxplot(varNumerica~varCategorica, main=nombreGrafico,border = colores[1:largoFuncion],col="white",
xlab=nombreX, ylab = nombreY)
#Poner la leyenda
legend("topright", fill = colores[1:largoFuncion], legend = names(table(varCategorica)), horiz = F,cex = 0.8,bty = "n")#xaxt = "n"
# Obtener las medias
medias <- tapply(varNumerica,varCategorica,mean)
medias <- as.data.frame(medias)
medias <- round(medias,1)
#Valor de las medias
points(1:largoFuncion, medias[1:largoFuncion,1], col = "purple",pch=19,cex=2)
text(1:largoFuncion, medias[1:largoFuncion,1], labels =medias[1:largoFuncion,1], col = "purple",pos=4)
#Valor de los cuartiles
text(1:largoFuncion, graph_i$stats[2,1:largoFuncion], labels =graph_i$stats[2,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[3,1:largoFuncion], labels =graph_i$stats[3,1:largoFuncion], col = "blue",pos=2,cex=0.8)
text(1:largoFuncion, graph_i$stats[4,1:largoFuncion], labels =graph_i$stats[4,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# text(1:largoFuncion, graph_i$stats[5,1:largoFuncion], labels =graph_i$stats[5,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# text(1:largoFuncion, graph_i$stats[1,1:largoFuncion], labels =graph_i$stats[1,1:largoFuncion], col = "blue",pos=2,cex=0.8)
# OUTLIERS ESTE ES MANUAL
# text(1, graph_i$out[1], labels =graph_i$out[1], col = "red", cex=0.7, pos=4)
# text(1, graph_i$out[2], labels =graph_i$out[2], col = "red", cex=0.7, pos=4)
# text(2, graph_i$out[3], labels =graph_i$out[3], col = "red", cex=0.7, pos=4)
#1 par(mar=c(15,2,1,1))
datos <- datos4
varNumerica <- datos$inai_general
varCategorica <- datos$impacto_economico
varCategorica2<- datos$genero
nombreGrafico="titulo"
nombreX="título x"
nombreY="título y"
######################################################### NO CAMBIAR #################################################################
colores1 <- rainbow(10,alpha = 0.2)
colores2 <- rainbow(10,v=0.6)
################################ PORCENTAJE EXTRA EJE Y
maximo <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,max)
maximo1 <- max(maximo$varNumerica)
maximo2 <- maximo1+(maximo1*.20)
################################ NUMERO DE CAJAS
largoFuncion1 <- length( levels(varCategorica))
largoFuncion2 <- length( levels(varCategorica2))
largoFuncion3 <- largoFuncion1*largoFuncion2
################################ GRAFICAR
graph_i <- boxplot(varNumerica~varCategorica+varCategorica2, #FORMULA
main=nombreGrafico, #TITULO
xlab=nombreX, ylab = nombreY, #NOMBRE ETIQUETA X , Y
border = colores2[1:largoFuncion1], #COLOR DEL BORDE
col=(colores1[1:largoFuncion1]), #COLORE DEL RELLENO
ylim= c(-3,maximo2), # LIMITES
#1 las=2 # PONER TITULOS EN 90 GRADOS
#2 names= c("","FEMENINO","","","MASCULINO",""), #PONER NOMBRES EJE X
xaxt = "n" #ELIMINAR NOMBRES EJE X
)
################################ LEYENDA
legend("topleft", fill = colores1[1:largoFuncion1], legend = names(table(varCategorica)), horiz = T,cex = 0.8,bty = "n")
################################ TEXTO ARRIBA DEL BIGOTE
#2
text(1:largoFuncion3, graph_i$stats[5,1:largoFuncion3], labels =graph_i$names[1:largoFuncion3], col = "black",pos=3,cex=0.7)
################################ VALORES DE LOS CUARTILES
text(1:largoFuncion3, graph_i$stats[2,1:largoFuncion3], labels =round(graph_i$stats[2,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[3,1:largoFuncion3], labels =round(graph_i$stats[3,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[4,1:largoFuncion3], labels =round(graph_i$stats[4,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
################################ VALORES DE LA MEDIA
medias <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,mean)
points(1:largoFuncion3,medias$varNumerica,col="red",cex=1.2, pch=19)
text(1:largoFuncion3,medias$varNumerica,labels = round(medias$varNumerica,1), pos=4,cex=0.8,col="red")
# OUTLIERS ESTE ES MANUAL
# text(2, graph_i$out[1], labels =round(graph_i$out[1],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[2], labels =round(graph_i$out[2],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[3], labels =round(graph_i$out[3],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[4], labels =round(graph_i$out[4],1), col = "red", cex=0.7, pos=4)
# text(6, graph_i$out[5], labels =round(graph_i$out[5],1), col = "red", cex=0.7, pos=4)
# text(6, graph_i$out[6], labels =round(graph_i$out[6],1), col = "red", cex=0.7, pos=4)
https://youtu.be/ypiOM2RaSCk
https://youtu.be/k68SoS0em7M
https://youtu.be/9J2FaEnWDc4
myUrl="https://raw.githubusercontent.com/armandovl/datasets_uno/main/atitanic.csv"
titanic<-read.csv(url(myUrl),stringsAsFactors = TRUE)
head(titanic)
## PassengerId Name Age Pclass Sex Family
## 1 891 Dooley, Mr. Patrick 32 3 male 0
## 2 890 Behr, Mr. Karl Howell 26 1 male 0
## 3 888 Graham, Miss. Margaret Edith 19 1 female 0
## 4 887 Montvila, Rev. Juozas 27 2 male 0
## 5 886 Rice, Mrs. William (Margaret Norton) 39 3 female 5
## 6 885 Sutehall, Mr. Henry Jr 25 3 male 0
## Embarked Survived
## 1 Q muere
## 2 C vive
## 3 S vive
## 4 S muere
## 5 Q muere
## 6 S muere
titanic$Pclass <- as.factor(titanic$Pclass)
str(titanic)
## 'data.frame': 714 obs. of 8 variables:
## $ PassengerId: int 891 890 888 887 886 885 884 883 882 881 ...
## $ Name : Factor w/ 714 levels "Abbing, Mr. Anthony",..: 210 81 279 466 562 640 62 182 442 597 ...
## $ Age : num 32 26 19 27 39 25 28 22 33 25 ...
## $ Pclass : Factor w/ 3 levels "1","2","3": 3 1 1 2 3 3 2 3 3 2 ...
## $ Sex : Factor w/ 2 levels "female","male": 2 2 1 2 1 2 2 1 2 1 ...
## $ Family : int 0 0 0 0 5 0 0 0 0 1 ...
## $ Embarked : Factor w/ 4 levels "C","Q","s","S": 2 1 4 4 2 4 4 4 4 4 ...
## $ Survived : Factor w/ 2 levels "muere","vive": 1 2 2 1 1 1 1 1 1 2 ...
#1 par(mar=c(15,2,1,1))
datos <- titanic
varNumerica <- datos$Age
varCategorica <- datos$Pclass
varCategorica2<- datos$Sex
nombreGrafico="titulo"
nombreX="título x"
nombreY="título y"
######################################################### NO CAMBIAR #################################################################
colores1 <- rainbow(10,alpha = 0.2)
colores2 <- rainbow(10,v=0.6)
################################ PORCENTAJE EXTRA EJE Y
maximo <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,max)
maximo1 <- max(maximo$varNumerica)
maximo2 <- maximo1+(maximo1*.20)
################################ NUMERO DE CAJAS
largoFuncion1 <- length( levels(varCategorica))
largoFuncion2 <- length( levels(varCategorica2))
largoFuncion3 <- largoFuncion1*largoFuncion2
################################ GRAFICAR
graph_i <- boxplot(varNumerica~varCategorica+varCategorica2, #FORMULA
main=nombreGrafico, #TITULO
xlab=nombreX, ylab = nombreY, #NOMBRE ETIQUETA X , Y
border = colores2[1:largoFuncion1], #COLOR DEL BORDE
col=(colores1[1:largoFuncion1]), #COLORE DEL RELLENO
ylim= c(-3,maximo2), # LIMITES
#1 las=2 # PONER TITULOS EN 90 GRADOS
#2 names= c("","FEMENINO","","","MASCULINO",""), #PONER NOMBRES EJE X
xaxt = "n" #ELIMINAR NOMBRES EJE X
)
################################ LEYENDA
legend("topleft", fill = colores1[1:largoFuncion1], legend = names(table(varCategorica)), horiz = T,cex = 0.8,bty = "n")
################################ TEXTO ARRIBA DEL BIGOTE
#2
text(1:largoFuncion3, graph_i$stats[5,1:largoFuncion3], labels =graph_i$names[1:largoFuncion3], col = "black",pos=3,cex=0.7)
################################ VALORES DE LOS CUARTILES
text(1:largoFuncion3, graph_i$stats[2,1:largoFuncion3], labels =round(graph_i$stats[2,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[3,1:largoFuncion3], labels =round(graph_i$stats[3,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
text(1:largoFuncion3, graph_i$stats[4,1:largoFuncion3], labels =round(graph_i$stats[4,1:largoFuncion3],1), col = "blue",pos=2,cex=0.8)
################################ VALORES DE LA MEDIA
medias <- aggregate(varNumerica~varCategorica+varCategorica2,data=datos,mean)
points(1:largoFuncion3,medias$varNumerica,col="red",cex=1.2, pch=19)
text(1:largoFuncion3,medias$varNumerica,labels = round(medias$varNumerica,1), pos=4,cex=0.8,col="red")
# OUTLIERS ESTE ES MANUAL
# text(2, graph_i$out[1], labels =round(graph_i$out[1],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[2], labels =round(graph_i$out[2],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[3], labels =round(graph_i$out[3],1), col = "red", cex=0.7, pos=4)
# text(4, graph_i$out[4], labels =round(graph_i$out[4],1), col = "red", cex=0.7, pos=4)
# text(6, graph_i$out[5], labels =round(graph_i$out[5],1), col = "red", cex=0.7, pos=4)
# text(6, graph_i$out[6], labels =round(graph_i$out[6],1), col = "red", cex=0.7, pos=4)
BOXPLOT ALREDEDOR DE LA VARIABLE CATEGÓRICA CUALQUIERA ,PODEMOS A REPRESENTAR CUATRO NIVELES
1.- EjeX
2.- Colores
3.- 1 Ventada
4.- Doble ventana
5.- Un quinto nivel se puede hacer pero solo en ggplot2 con gganimate
Vamos ahora a graficar las mayor cantidad de variables con scatter plot de ggplot2
str(datos4)
## 'data.frame': 141 obs. of 8 variables:
## $ estado : Factor w/ 2 levels "CHIAPAS","TABASCO": 2 2 2 2 2 2 2 2 2 2 ...
## $ genero : Factor w/ 2 levels "FEMENINO","MASCULINO": 2 1 1 2 2 2 2 2 2 2 ...
## $ impacto_economico : Factor w/ 3 levels "BAJO (0-33)",..: 1 2 2 2 1 2 2 2 2 1 ...
## $ escolaridadAgrupada: Factor w/ 4 levels "sin_estudios",..: 3 2 2 2 2 2 2 2 2 3 ...
## $ edad : int 75 73 74 57 72 25 56 48 38 84 ...
## $ anios_actividad : int 42 12 50 35 45 10 25 15 17 59 ...
## $ superficie_ha : num 6.5 1.5 1 4 2 1 2 4.5 2 2.5 ...
## $ inai_general : num 18.75 33.33 8.33 6.25 14.58 ...
library(ggplot2)
1 valor en X (Numérica)
2 valor Y (Numérica)
3 tamaño (Numérica)
4 Color (Categórica)
5 Forma (Categórica)
plot <- ggplot(data = datos4, aes(x = edad, y = anios_actividad)) +
geom_point(aes(size =inai_general,color =genero, shape=impacto_economico), alpha = 0.7) +
xlab('Edad') +
ylab('Anios Actividad') +
ggtitle('cos categoricas, tres numericas') +
theme_minimal()
plot$labels$colour = "Genero"
plot$labels$size = "INAI"
plot$labels$shape = "Impacto"
plot
1 valor en X (Numérica)
2 valor Y (Numérica)
3 tamaño (Numérica)
3 Color (Categórica)
4 Forma (Categórica)
5 ventana (Categórica)
plot <- ggplot(data = datos4, aes(x = edad, y = anios_actividad)) +
geom_point(aes(size =inai_general,color =genero, shape=impacto_economico), alpha = 0.7) +
xlab('Edad') +
ylab('Anios Actividad') +
ggtitle('Tres variables categoricas, tres numericas') +
theme_minimal() +
#facet_grid(~estado, scales = 'free') #ventana Vertical
facet_grid(estado, scales = 'free') #ventana Horizontal
plot$labels$colour = "Genero"
plot$labels$size = "INAI"
plot$labels$shape = "Impacto"
plot
1 valor en X (Numérica)
2 valor Y (Numérica)
3 tamaño (Numérica)
3 Color (Categórica)
4 Forma (Categórica)
5 ventana (Categórica)
6 doble ventana (Categórica)
plot <- ggplot(data = datos4, aes(x = edad, y = anios_actividad)) +
geom_point(aes(size =inai_general,color =genero, shape=impacto_economico), alpha = 0.7) +
xlab('Edad') +
ylab('Anios Actividad') +
ggtitle('Cuatro Categóricas tres numéricas') +
theme_bw() +
#facet_grid(~estado, scales = 'free') #ventana Vertical
#facet_grid(estado, scales = 'free') #ventana Horizontal
facet_grid(estado~escolaridadAgrupada, scales = 'free') #ventana Horizontal
plot$labels$colour = "Genero"
plot$labels$size = "INAI"
plot$labels$shape = "Impacto"
plot
Se puede hacer una triple ventana o mas pero ya sería mucho hay que irnos con cuidado, tal vez si solo hubiera dos niveles
plot <- ggplot(data = datos4, aes(x = edad, y = anios_actividad)) +
geom_point(aes(size =inai_general,color =genero, shape=impacto_economico), alpha = 0.7) +
xlab('Edad') +
ylab('Anios Actividad') +
ggtitle('Cuatro Categóricas tres numéricas') +
theme_bw() +
#facet_grid(~estado, scales = 'free') #ventana Vertical
#facet_grid(estado, scales = 'free') #ventana Horizontal
facet_grid(estado~escolaridadAgrupada+genero, scales = 'free') #ventana Horizontal
plot$labels$colour = "Genero"
plot$labels$size = "INAI"
plot$labels$shape = "Impacto"
plot
1 valor en X (Numérica)
2 valor Y (Numérica)
3 tamaño (Numérica)
3 Color (Categórica)
4 Forma (Categórica)
5 ventana (Categórica)
6 doble ventana (Categórica)
Logramos graficar tres variables numéricas y 4 categóricas , se puede hacer un séptimo nivel con gganimate o ventana triple para una octava dimensión 7 triple ventana o mas
8 gganimate (Categórica)
FIN