Anotaciones

Atajos del teclado

# 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

Anotaciones R markdown

# 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

Bibliografía

# 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/

1.- Importar la base

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

2.-Inspeccionar los datos

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 ...

3.-Individualmente empezamos a analizar las variables Cuantitativas

Estadísticos de los datos cuantitativos

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.

Visualización gráfica de nuestros datos cuantitativos

#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))

4.-Individual Cualitativas variables

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 ...

6.-Análisis de variables caulitativas agrupadas

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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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.8, ########################### 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))

7.- Cruce categóricas en torno a una numérica

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

1 Nivel , 1 variable categórica en torno a 1 numérica

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) 


2 Nivel , 2 variable categóricas en torno a 1 numérica

#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)

8.-Implementar con nuevo datos

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)

9. Scatterplot el mejor gráfico


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