Análisis de apicultura

Introducción

Las abejas son un polinizador muy importante en el ecosistema, permiten el funcionamiento de la agricultura humana, ganadería y manufactura de ropa. Aun con esta importancia, la humanidad no le ha dado su lugar al problema de la extinción de las abejas, esto se refleja en la poca cantidad de colmenas presentes en el país que se han reducido en los últimos años. La producción natural de las abejas se ha visto reducida en todo el mundo por múltiples factores. Una de las principales razones por las que está desapareciendo las abejas en Norte América y Europa es por el cambio de la temperatura causa del cambio climático, esto se puede observar en la reducción de especies de abejas que estaban presentes desde en 1901, este declive de abejas esta mayormente presente en México. Otros factores importantes en la reducción de colmenas son los pesticidas de los cuales aumenta su uso cada año, la poca nutrición de las abejas causada por el monocultivo masivo que requiere la alimentación global, las avispas asiáticas y los parásitos Acarapis Woodi y Varroa Destructor que infectan, enferman y finalizan colmenas enteras.

Información recuperada de: https://www.greenandgrowing.org/why-are-the-bees-disappearing/ y https://news.culturacolectiva.com/mexico/por-que-las-abejas-son-tan-importantes-y-como-rescatarlas/.

Objetivos

  1. Conocer la importancia de las abejas.
  2. Analizar la información a través del modelado de datos.

Antecedentes

Las abejas han tenido presencia en la vida del ser humano desde la apicultura primitiva que consistía en cazar enjambres silvestres las cuales colocaban en colmenas hechas de paja, barro o tronco de árbol hueco, después de matar la mayoría de las abejas para recortar los panales y colar la miel separando la cera. La apicultura se gestó entre los años 8000 y 4000 antes de Cristo, pasando de la recolección a la construcción de paneles. En México la apicultura tiene gran importancia ya que ha llegado a ser una de las principales actividades pecuarias en generación de divisas, esta actividad además de la producción de miel, polen, jalea real y propóleos es de gran importancia para el equilibrio ambiental. En el país se utilizan abejas europeas y abejas de la península de Yucatán para la comercialización de sus productos, el territorio nacional se divide en cinco regiones para su producción: la Región Norte, Región de la Costa del Pacífico, Región del Golfo, Región del Altiplano y la Región Sureste.

Información recuperada de: https://abejas.org/la-apicultura/historia-apicultura/ y https://www.gob.mx/inaes/articulos/historia-e-importancia-de-la-apicultura?idiom=es.

Importancia de la abeja en México

Las abejas meliponas son la especie nativa de México, éstas son de vital importancia debido a su función como polinizadoras de plantas de interés como el café, el chile, variedades de granos, semillas y frutos. Asimismo, la fabricación de miel es muy importante, existen más de 43 mil apicultores a nivel nacional, quienes en los últimos 10 años su trabajo ha colocado a México como el quinto lugar como exportador de miel y el noveno lugar como productor de miel. Se cuenta con un inventario de colmenas se cuenta con 2’172,107, lo que aportó a que se produjera 61 mil toneladas de este dulce producto con un valor estimado en $2,278,810 (miles de pesos). En cuanto a su exportación se considera un promedio anual de 33 mil toneladas teniendo como principales clientes a Alemania y Reino Unido de Gran Bretaña.

Datos obtenidos de la secretaría de agricultura en México: https://www.gob.mx/agricultura/articulos/la-apicultura-en-mexico?idiom=es.

setwd("~/EALMV9/U1A9")# Este es el directorio de trabajo. 
library(pacman) # Importación la biblioteca pacman.
p_load("base64enc", "htmltools", "mime", "xfun", "prettydoc","readr", "knitr","DT","dplyr", "ggplot2","plotly", "gganimate","gifski","scales")
## Disponible para descargar el código
xfun::embed_file("U1A9.Rmd")

Download U1A9.Rmd

numCol <- read.csv("ColmenasMX_14-19.csv")
numCol
##   ï..anio colmena
## 1    2014  198116
## 2    2015  201793
## 3    2016  185935
## 4    2017  185381
## 5    2018  217211
## 6    2019  215787
anios <- seq(from=2014,to=2019, by=1)
gcol <- ggplot(data=numCol)+
  geom_line(aes(anios,colmena,color="Colmenas"))+
  ggtitle("Número de colmeas en México")+
  xlab("Año") +
  ylab("Cantidad de comlmenas") +
  labs(colour="")+
  scale_y_continuous(labels = comma)+
  transition_reveal(anios)
gcol

library(readxl)
reporte <- read_excel("reporte2020.xlsx")
produccion<-ggplot(data=reporte,aes(x=Total,y=Estado,color="Cantidad de producción de miel")) +
  geom_bar(stat = "Identity",fill="darkgreen")+
  xlab("Toneladas")+
  labs(colour="")+
  ggtitle("Número de producción de Miel en Mexico en 2020. Fuente SIAP")
ggplotly(produccion)
library(readxl)
pecuaria2019 <- read_excel("produccion_pecuaria2019.xlsx")
estados <- pecuaria2019$Estado
avances <- pecuaria2019$Avance
ggplot(pecuaria2019,aes(num,x = estados,y= avances)) +
  geom_bar(stat="Identity",fill="brown",colour="black") +
  xlab("Estado")+
  ylab("Avance")+
  ggtitle("Avance Pecuario en 2019")+
  theme(axis.text.x = element_text(angle=90,hjust=1),axis.text.y =element_text(size = 6))

abejas <- read_excel("ColmenaMX.xlsx")
View(abejas)
relacion <- ggplot(abejas,aes(x = anio,y= temperatura, color = colmena)) +
  geom_point(stat="identity",fill ="darkgreen",width = 0.7,orientation = "vertical") +
  xlab("Año")+
  ylab("Temperatura")+
  ggtitle("Relación temperatura cantidad de colmenas de 2014 a 2019")
## Warning: Ignoring unknown parameters: width, orientation
ggplotly(relacion)
# Datos recuperados de: https://smn.conagua.gob.mx/es/climatologia/temperaturas-y-lluvias/resumenes-mensuales-de-temperaturas-y-lluvias.

Conclusión

Con la investigación realizada, podemos ver que el área apicola es de suma importancia, desde la agricultura hasta la moda, ya que teniendo en cuenta que las abejas son la responsable de polinizar, son responsables del mas del 60% de lo que consumimos. En lo largo de los años, se ha notado un descontrol en el area apícola, por lo que puedo suponer que se ha debido a los cambios de temperatura, que en los ultimos años han sido muy cambiantes.

Segunda Parte

Importar paquetes

ipak <- function(pkg){
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
  if (length(new.pkg)) 
    install.packages(new.pkg, dependencies = TRUE)
  sapply(pkg, require, character.only = TRUE)
}
packages <- c("tidyverse","cluster", "factoextra","NbClust","tidyr")
ipak(packages)
## Loading required package: tidyverse
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v tibble  3.0.5     v stringr 1.4.0
## v tidyr   1.1.2     v forcats 0.5.1
## v purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x scales::col_factor() masks readr::col_factor()
## x purrr::discard()     masks scales::discard()
## x plotly::filter()     masks dplyr::filter(), stats::filter()
## x dplyr::lag()         masks stats::lag()
## Loading required package: cluster
## Loading required package: factoextra
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## Loading required package: NbClust
##  tidyverse    cluster factoextra    NbClust      tidyr 
##       TRUE       TRUE       TRUE       TRUE       TRUE
produccionEstados <- read_excel("reporte2020Numeros (1).xlsx")
produccionEstados
## # A tibble: 32 x 14
##    Estado Enero Febrero Marzo  Abril   Mayo  Junio  Julio Agosto Septiembre
##     <dbl> <dbl>   <dbl> <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>      <dbl>
##  1      1     0    0      0   511    511    511    511    511        511   
##  2      2     0    0      0     0      4      5      5     11         34   
##  3      3     0    1      1    87     92     97    102    107        112   
##  4      4    12  269    733     2.18   4.41   6.14   7.52   7.52       7.52
##  5      5     0    0      0    10     30     35    100    105        116   
##  6      6    82  136    151   162    210    226    239    255        255   
##  7      7   844    1.63   2.1   2.44   2.99   3.44   3.46   3.49       3.52
##  8      8     0    0      0     0    191    191    191    191        241   
##  9      9     0    0      0     0     13     17     18     18         18   
## 10     10     0    0      0     8    106    114    126    137        149   
## # ... with 22 more rows, and 4 more variables: Octubre <dbl>, Noviembre <dbl>,
## #   Diciembre <dbl>, Total <dbl>
tablaEstados <- read_excel("tablaEstados.xlsx")
df <- scale(produccionEstados)
head(produccionEstados)
## # A tibble: 6 x 14
##   Estado Enero Febrero Marzo  Abril   Mayo  Junio  Julio Agosto Septiembre
##    <dbl> <dbl>   <dbl> <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>      <dbl>
## 1      1     0       0     0 511    511    511    511    511        511   
## 2      2     0       0     0   0      4      5      5     11         34   
## 3      3     0       1     1  87     92     97    102    107        112   
## 4      4    12     269   733   2.18   4.41   6.14   7.52   7.52       7.52
## 5      5     0       0     0  10     30     35    100    105        116   
## 6      6    82     136   151 162    210    226    239    255        255   
## # ... with 4 more variables: Octubre <dbl>, Noviembre <dbl>, Diciembre <dbl>,
## #   Total <dbl>
m.distancia <- get_dist(df, method = "euclidean") #el método aceptado también puede ser: "maximum", "manhattan", "canberra", "binary", "minkowski", "pearson", "spearman" o "kendall"
fviz_dist(m.distancia, gradient = list(low = "black", mid = "yellow", high = "orange"))

#Elbow, silhouette o gap_stat  method
fviz_nbclust(df, kmeans, method = "wss")

fviz_nbclust(df, kmeans, method = "silhouette")

fviz_nbclust(df, kmeans, method = "gap_stat")

k2 <- kmeans(df, centers = 2, nstart = 25)
k2
## K-means clustering with 2 clusters of sizes 7, 25
## 
## Cluster means:
##        Estado       Enero     Febrero      Marzo      Abril       Mayo
## 1  0.05330018 -0.11962383  0.05073058  0.4479393  1.5400838  1.6550640
## 2 -0.01492405  0.03349467 -0.01420456 -0.1254230 -0.4312235 -0.4634179
##        Junio      Julio     Agosto Septiembre     Octubre  Noviembre  Diciembre
## 1  1.6733319  1.6891938  1.6901193   1.683307  0.35444508 -0.1485386 -0.5488364
## 2 -0.4685329 -0.4729743 -0.4732334  -0.471326 -0.09924462  0.0415908  0.1536742
##        Total
## 1  1.5272346
## 2 -0.4276257
## 
## Clustering vector:
##  [1] 1 2 2 2 2 2 2 2 2 2 2 1 1 2 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2 2 1
## 
## Within cluster sum of squares by cluster:
## [1]  79.11901 180.55279
##  (between_SS / total_SS =  40.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
str(k2)
## List of 9
##  $ cluster     : int [1:32] 1 2 2 2 2 2 2 2 2 2 ...
##  $ centers     : num [1:2, 1:14] 0.0533 -0.0149 -0.1196 0.0335 0.0507 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:2] "1" "2"
##   .. ..$ : chr [1:14] "Estado" "Enero" "Febrero" "Marzo" ...
##  $ totss       : num 434
##  $ withinss    : num [1:2] 79.1 180.6
##  $ tot.withinss: num 260
##  $ betweenss   : num 174
##  $ size        : int [1:2] 7 25
##  $ iter        : int 1
##  $ ifault      : int 0
##  - attr(*, "class")= chr "kmeans"
fviz_cluster(k2, data = df)

fviz_cluster(k2, data = df, ellipse.type = "euclid",repel = TRUE,star.plot = TRUE) #ellipse.type= "t", "norm", "euclid"

fviz_cluster(k2, data = df, ellipse.type = "norm")

pruebaBolas <- fviz_cluster(k2, data = df, ellipse.type = "norm",palette = "Set2", ggtheme = theme_minimal())
datatable(tablaEstados)
ggplotly(pruebaBolas)
reporteTemperaturas <- read_excel("temperaturasNumeros2020.xlsx")
reporteTemperaturas
## # A tibble: 32 x 14
##    Entidad   Ene   Feb   Mar   Abr   May   Jun   Jul   Ago   Sep   Oct   Nov
##      <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1       1  21.6  23.7  29    31.1  30.6  30.2  28.1  26.9  26    27.4  25.9
##  2       2  20.2  21    19.9  24.6  29.8  31.4  33.9  35.4  34.3  30.6  23.5
##  3       3  24.6  25.3  26.3  29    31.4  33.4  34.6  35.3  35.3  33.1  29.3
##  4       4  30.2  32.4  34.9  38.5  36.7  34.1  35    34.4  34    32.2  31  
##  5       5  21.6  23.5  29.2  31.5  34.1  34.8  35.7  35.5  30.4  31.2  27.2
##  6       6  32.6  31.9  33.2  33.5  33.2  33.9  34.1  33.2  33.1  34.3  34.4
##  7       7  31.1  32.3  32.8  34.9  33.5  30.9  31.8  31.3  30.8  30.2  30  
##  8       8  20    20.9  25.4  28.9  33.4  35.3  33.6  35.1  30.4  30.7  26.7
##  9       9  23    25.9  27.9  28.4  27.3  26.5  26.1  24.9  23.9  24.5  23.7
## 10      10  21.1  23.3  27.8  30.5  32.1  32.7  30.9  31.2  27.5  28.5  26.5
## # ... with 22 more rows, and 2 more variables: Dic <dbl>, Anual <dbl>
df_Temps <- scale(reporteTemperaturas)
head(df_Temps)
##        Entidad        Ene        Feb        Mar        Abr        May
## [1,] -1.652306 -1.0289386 -0.9620715 -0.3345295 -0.3757699 -0.6346787
## [2,] -1.545705 -1.4000856 -1.7317287 -3.1020013 -2.3545076 -0.9095988
## [3,] -1.439105 -0.2336237 -0.5059783 -1.1556475 -1.0150544 -0.3597587
## [4,] -1.332504  1.2509640  1.5179350  1.4597653  1.8769469  1.4615868
## [5,] -1.225904 -1.0289386 -1.0190832 -0.2737060 -0.2540014  0.5680965
## [6,] -1.119304  1.8872159  1.3754059  0.9427651  0.3548409  0.2588115
##             Jun        Jul        Ago         Sep        Oct        Nov
## [1,] -0.5246291 -0.9755552 -1.0170094 -0.97892650 -0.7922686 -0.6986555
## [2,] -0.1668004  0.5498285  0.9702503  1.03347968  0.1577116 -1.4247279
## [3,]  0.4295809  0.7339266  0.9468708  1.27593825  0.8998836  0.3299469
## [4,]  0.6383143  0.8391254  0.7364551  0.96074210  0.6327016  0.8442482
## [5,]  0.8470478  1.0232235  0.9936299  0.08789123  0.3358328 -0.3053664
## [6,]  0.5786762  0.6024280  0.4559008  0.74252939  1.2561261  1.8728506
##             Dic       Anual
## [1,] -0.7282027 -0.91798080
## [2,] -1.4789271 -0.88354307
## [3,] -0.0675652  0.18402663
## [4,]  1.1335939  1.32047180
## [5,] -0.9984635  0.01183797
## [6,]  2.0945212  1.25159633
m.distancia <- get_dist(df_Temps, method = "euclidean") #el método aceptado también puede ser: "maximum", "manhattan", "canberra", "binary", "minkowski", "pearson", "spearman" o "kendall"
fviz_dist(m.distancia, gradient = list(low = "blue", mid = "white", high = "red"))

#Elbow, silhouette o gap_stat  method
fviz_nbclust(df_Temps, kmeans, method = "wss")

fviz_nbclust(df_Temps, kmeans, method = "silhouette")

fviz_nbclust(df_Temps, kmeans, method = "gap_stat")

#the index to be calculated. This should be one of : "kl", "ch", "hartigan", "ccc", "scott",
#"marriot", "trcovw", "tracew", "friedman", "rubin", "cindex", "db", "silhouette", "duda",
#"pseudot2", "beale", "ratkowsky", "ball", "ptbiserial", "gap", "frey", "mcclain", "gamma",
#"gplus", "tau", "dunn", "hubert", "sdindex", "dindex", "sdbw", "all" (all indices except GAP,
#Gamma, Gplus and Tau), "alllong" (all indices with Gap, Gamma, Gplus and Tau included).
resnumclust<-NbClust(df_Temps, distance = "euclidean", min.nc=2, max.nc=10, method = "kmeans", index = "alllong")
## Warning in pf(beale, pp, df2): NaNs produced

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 9 proposed 2 as the best number of clusters 
## * 10 proposed 3 as the best number of clusters 
## * 1 proposed 6 as the best number of clusters 
## * 1 proposed 8 as the best number of clusters 
## * 1 proposed 9 as the best number of clusters 
## * 5 proposed 10 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  3 
##  
##  
## *******************************************************************
fviz_nbclust(resnumclust)
## Among all indices: 
## ===================
## * 2 proposed  0 as the best number of clusters
## * 1 proposed  1 as the best number of clusters
## * 9 proposed  2 as the best number of clusters
## * 10 proposed  3 as the best number of clusters
## * 1 proposed  6 as the best number of clusters
## * 1 proposed  8 as the best number of clusters
## * 1 proposed  9 as the best number of clusters
## * 5 proposed  10 as the best number of clusters
## 
## Conclusion
## =========================
## * According to the majority rule, the best number of clusters is  3 .

k2 <- kmeans(df_Temps, centers = 2, nstart = 25)
k2
## K-means clustering with 2 clusters of sizes 19, 13
## 
## Cluster means:
##       Entidad        Ene        Feb        Mar        Abr        May        Jun
## 1  0.06452127  0.6007592  0.5427359  0.5073965  0.5358914  0.6078876  0.5363017
## 2 -0.09430032 -0.8780327 -0.7932293 -0.7415795 -0.7832260 -0.8884511 -0.7838256
##          Jul        Ago        Sep        Oct        Nov        Dic     Anual
## 1  0.5456759  0.5088123  0.5549430  0.5998898  0.6563610  0.5930723  0.684280
## 2 -0.7975264 -0.7436488 -0.8110706 -0.8767621 -0.9592969 -0.8667980 -1.000102
## 
## Clustering vector:
##  [1] 2 2 1 1 1 1 1 2 2 2 2 1 2 1 2 1 1 1 1 1 2 2 1 1 1 1 1 1 2 2 1 2
## 
## Within cluster sum of squares by cluster:
## [1] 128.9845 102.1923
##  (between_SS / total_SS =  46.7 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
str(k2)
## List of 9
##  $ cluster     : int [1:32] 2 2 1 1 1 1 1 2 2 2 ...
##  $ centers     : num [1:2, 1:14] 0.0645 -0.0943 0.6008 -0.878 0.5427 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:2] "1" "2"
##   .. ..$ : chr [1:14] "Entidad" "Ene" "Feb" "Mar" ...
##  $ totss       : num 434
##  $ withinss    : num [1:2] 129 102
##  $ tot.withinss: num 231
##  $ betweenss   : num 203
##  $ size        : int [1:2] 19 13
##  $ iter        : int 1
##  $ ifault      : int 0
##  - attr(*, "class")= chr "kmeans"
#plotear los cluster
fviz_cluster(k2, data = df_Temps)

fviz_cluster(k2, data = df_Temps, ellipse.type = "euclid",repel = TRUE,star.plot = TRUE) #ellipse.type= "t", "norm", "euclid"

fviz_cluster(k2, data = df_Temps, ellipse.type = "norm")

pruebaBolas2 <- fviz_cluster(k2, data = df_Temps, ellipse.type = "norm",palette = "Set2", ggtheme = theme_minimal())
ggplotly(pruebaBolas2)
library(readxl)
reporteTempCol <- read_excel("tempColmenasEstados2020.xlsx")
relTempCol<-ggplot(data=reporteTempCol,aes(x=Anual,y=Entidad,color="Temperatura en los Estados más productivos")) +
  geom_bar(stat = "Identity",fill="darkgreen")+
  xlab("Temperatura Max")+
  labs(colour="")+
  ggtitle("Temperatura. Fuente CONAGUA")
ggplotly(relTempCol)
library(readxl)
reporteTemperaturas <- read_excel("temperaturas2020.xlsx")
numCol <- read.csv("ColmenasMX_14-19.csv")
relTemperaturas<-ggplot(data=reporteTemperaturas,aes(x=Anual,y=Entidad,color="Temperaturas en el país")) +
  geom_bar(stat = "Identity",fill="darkgreen")+
  xlab("Temperatura Max")+
  labs(colour="")+
  ggtitle("Temperatura. CONAGUA")
ggplotly(relTemperaturas)

¿Qué relación tiene la temperatura con la producción de miel en México?

La mayor parte de la apicultura de México está en las regiones templadas, las cuales suelen tener una temperatura promedio de 14°C y una mínima promedio que superan los 6°C. Los estados que cumplen estos requisitos son los estados de Aguascalientes, Guanajuato, San Luis Potosí, Zacatecas, etc.Cuando la temperatura es muy alta, las abajas se mueren, no soportan las altas temperatura, y podemos suponer que en los diferentes estados en las cuales la producción es grande, es debido a que tienen las condiciones apropiadas en todo el año, para que las colonias de abejas puedan producir una cantidad de miel bastante grande.

Conclusión

Con la investigación realizada, podemos ver que el área apicola es de suma importancia, desde la agricultura hasta la moda, ya que teniendo en cuenta que las abejas son la responsable de polinizar, son responsables del mas del 60% de lo que consumimos. En lo largo de los años, se ha notado un descontrol en el area apícola, por lo que puedo suponer que se ha debido a los cambios de temperatura, y que en las diferentes regiones de nuestro pais donde algunos climas son muy extremos, pues no sobreviven mucho tiempo.

Referencias

  1. INAES. (2018). Historia e importancia de la Apicultura. Gobierno de México. Recuperado de: https://www.gob.mx/inaes/articulos/historia-e-importancia-de-la-apicultura?idiom=es
  2. Fundación Amigos de las Abejas. (2014). Apicultura antigua. Fundación Amigos de las Abejas. Recuperado de: https://abejas.org/la-apicultura/historia-apicultura/
  3. Eubanks, W. (2017). Why are the bees disappearing?. Green Growwing. Recuperado de: https://www.greenandgrowing.org/why-are-the-bees-disappearing/
  4. Olivares, V. (2018). Rescata a las abejas y salva tu vida. CC News. Recuperado de: https://news.culturacolectiva.com/mexico/por-que-las-abejas-son-tan-importantes-y-como-rescatarlas/
  5. Secretaría de Agricultura y Desarrollo Rural (2020) La apicultura en México. Gob. Recuperado de: https://www.gob.mx/agricultura/articulos/la-apicultura-en-mexico?idiom=es