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
- Conocer la importancia de las abejas.
- 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("~/Estadistica Aplicada")# 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")Descarga de código
xfun::embed_file("U1A10_v2.Rmd")Descarga de Datos
xfun::embed_file("ColmenasMX_14-19.csv")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)
gcolDescarga de Datos
xfun::embed_file("reporte2020.xlsx")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)Descarga de Datos
xfun::embed_file("produccion_pecuaria2019.xlsx")Download produccion_pecuaria2019.xlsx
pecuaria2019 <- read_excel("produccion_pecuaria2019.xlsx")
estados <- pecuaria2019$Estado
avances <- pecuaria2019$Avanceggplot(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))Descarga de Datos
xfun::embed_file("ColmenaMX.xlsx")abejas <- read_excel("ColmenaMX.xlsx")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.K-means
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
Descarga de Datos
xfun::embed_file("reporte2020Numeros.xlsx")Download reporte2020Numeros.xlsx
produccionEstados <- read_excel("reporte2020Numeros.xlsx")
df_produccion <- scale(produccionEstados)Matriz de estados por producción
m.distancia <- get_dist(df_produccion, method = "euclidean")
fviz_dist(m.distancia, gradient = list(low = "black", mid = "yellow", high = "orange"))Descarga de Datos
xfun::embed_file("tablaEstados.xlsx")estados <- read_excel("tablaEstados.xlsx")
datatable(estados)Estimar clústeres
Para crear los clústeres es necesario saber cuántos van a ser necesarios, para esto es necesario hacer la estimación de los datos optimizados, ya que si los datos son muy diferentes el efecto de los outliers será mayor, afectando nuestros resultados.
A continuación se utilizan tres métodos para validar la cantidad óptima de particiones a formar.
Método Wass
En el siguiente método, el valor de wss deja de disminuir a partir del clúster número dos.
fviz_nbclust(df_produccion, kmeans, method = "wss")Método Silhouette
En el método de Silhouette se indica que el número de clústeres con valores similares son de dos, como en el método anterior.
fviz_nbclust(df_produccion, kmeans, method = "silhouette")Método Gap Stat
En cambio, en el método de Gap Stat, se indica que los clústeres óptimos son cuatro, a diferencia de los dos métodos anteriores.
fviz_nbclust(df_produccion, kmeans, method = "gap_stat")Clústers producción
A partir de la diferencia en uno de los tres métodos, podemos deducir que la producción en relación a los estados no se puede dividir de manera óptima. Esto es notorio en los clústeres a continuación.
k2_produccion <- kmeans(df_produccion, centers = 2, nstart = 20)
k2_produccion## 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_produccion)## 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"
estadosProduccion <- fviz_cluster(k2_produccion, data = df_produccion, ellipse.type = "norm",palette = "Set5", ggtheme = theme_minimal())
estadosProduccionggplotly(estadosProduccion)Descarga de Datos
xfun::embed_file("temperaturasNumeros2020.xlsx")Download temperaturasNumeros2020.xlsx
df_Temps <- read_excel("temperaturasNumeros2020.xlsx")
df_Temps <- scale(df_Temps)Matriz de estados por temperatura
m.temperaturas <- get_dist(df_Temps, method = "euclidean")
fviz_dist(m.temperaturas, gradient = list(low = "black", mid = "yellow", high = "orange"))Estimar clústeres
Método Silhouette
En el método de Silhouette se indica que el número de clústeres para los estados por temperatura es de dos.
fviz_nbclust(df_Temps, kmeans, method = "silhouette")Método Gap Stat
De nuevo, al no ser clústeres que se puedan optimizar al máximo, el resultado del método Gap Stat es diferente al del método anterior.
fviz_nbclust(df_Temps, kmeans, method = "gap_stat")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 .
Clústers temperatura
Se mantienen tres clústeres para agrupar los estados según sus temperaturas, como resultado los siete estados más productivos se mantienen en dos clústeres separados, esto se puede apreciar en la gráfica que señala la diferencia de temperatura máxima entre estos siete estados.
k2_temp <- kmeans(df_Temps, centers = 3, nstart = 20)
str(k2_temp)## List of 9
## $ cluster : int [1:32] 3 1 1 2 1 2 2 1 3 1 ...
## $ centers : num [1:3, 1:14] -0.647 0.174 0.192 -0.893 0.91 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:3] "1" "2" "3"
## .. ..$ : chr [1:14] "Entidad" "Ene" "Feb" "Mar" ...
## $ totss : num 434
## $ withinss : num [1:3] 43.9 69.4 53.7
## $ tot.withinss: num 167
## $ betweenss : num 267
## $ size : int [1:3] 7 15 10
## $ iter : int 2
## $ ifault : int 0
## - attr(*, "class")= chr "kmeans"
temperaturas <- fviz_cluster(k2_temp, data = df_Temps, ellipse.type = "norm",palette = "Set2", ggtheme = theme_minimal())
ggplotly(temperaturas)Temperatura en los estados más productivos
Descarga de Datos
xfun::embed_file("tempColmenasEstados2020.xlsx")Download tempColmenasEstados2020.xlsx
reporteTempCol <- read_excel("tempColmenasEstados2020.xlsx")relTempCol<-ggplot(data=reporteTempCol,aes(x=Anual,y=Entidad)) +
geom_bar(stat = "Identity",fill="darkgreen")+
xlab("Temperatura Max")+
labs(colour="") +
ggtitle("Temperatura. Fuente CONAGUA")
ggplotly(relTempCol)Temperatura en todos los estados
Descarga de Datos
xfun::embed_file("temperaturas2020.xlsx")Download temperaturas2020.xlsx
reporteTemperaturas <- read_excel("temperaturas2020.xlsx")relTemperaturas<-ggplot(data=reporteTemperaturas,aes(x=Anual,y=Entidad)) +
geom_bar(stat = "Identity",fill="darkgreen")+
xlab("Temperatura Max")+
labs(colour="") +
ggtitle("Temperatura. Fuente CONAGUA")
ggplotly(relTemperaturas)Conclusiones generales
Contar con una temperatura constante, influye en la estabilidad de la apicultura. Como se observa en las gráficas, los lugares que pueden mantener las temperaturas ideales, son aquellos que más producción tienen, pues la temperatura ayuda a las abejas a poder desarrollarse de manera correcta.
Referencias
- 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
- Fundación Amigos de las Abejas. (2014). Apicultura antigua. Fundación Amigos de las Abejas. Recuperado de: https://abejas.org/la-apicultura/historia-apicultura/
- Eubanks, W. (2017). Why are the bees disappearing?. Green Growwing. Recuperado de: https://www.greenandgrowing.org/why-are-the-bees-disappearing/
- 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/
- 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