Los datos iniciales muestran que tenemos 2 datasets, los cuales constan de el número de observaciones (records) y de familias en el 2017 y 2022 respectivamente:
zona
nobs_2017
nobs_2022
nfam_2017
nfam_2022
Amarilis
530
357
109
101
Huánuco-Quisqui
525
549
112
102
Molino-Umari
497
620
114
113
Total
1,552
1,526
335
316
Nota
Una familia puede tener asociada más observaciones (records) que otras familias.
Hay familias en el muestreo del 2022 que no necesariamente coinciden con las familias del 2017, esto se debe a que hay familias que ya no cumplian con el criterio establecido o estuvieron ausentes por razones descritas en la encuesta.
2 Procesamiento de datos
Para el procesamiento de los datos se van a considerar ciertos criterios:
En la variable fuente_semilla se filtro por “comprado”,“propio”, “regalado”.
En destino producción se filtró por “semilla”,“semilla y procesamiento”,“semilla y otros”. Los cuales fueron reetiquetados por “semilla”.
En clasificación se filtró por “hortalizas”, “leguminosas”,“cereal”, “tuberculos_y_raices”.
Las respuestas de categoria múltiple del 2017 no son tomadas en cuenta, puesto que en el 2022 solo hay respuestas únicas. (Ver sub tópico de consideraciones especiales).
Las familias en el 2022 difieren en un $30%$ respecto al 2022
Referente a las unidades de cantidad de semilla existen 2 categorias: cantidad de semilla expresada en peso (ej. kg.) y cantidad de semilla expresada en unidades de conteo (ej. 3 unidades).
Teniendo en cuenta estas consideraciones, la tabla de resumen general se redujo a:
zona
nobs_2017
nobs_2022
nfam_2017
nfam_2022
Amarilis
272
223
86
93
Huánuco-Quisqui
306
336
102
99
Molino-Umari
319
464
102
112
Total
897
1,023
290
304
2.1 Nota
Bajo el filtro de solo considerar categorias singulares en fuente de semilla el periodo 2017 y 2022, alrededor de 100 familias fueron descartadas del estudio. Estas 107 familias no tienen categorias múltiples en el 2022. Del mismo modo para destino de producción, alrededor de 36 familias ya no fueron consideradas.
Al considerar los criterios o filtros anteriores, el número de familias en el 2017 y 2022 se reduce a 140 y 137 respectivamente.
Considerando las notas anteriores tendremos:
zona
nobs_2017
nobs_2022
nfam_2017
nfam_2022
Amarilis
272
223
86
93
Huánuco-Quisqui
306
336
102
99
Molino-Umari
319
464
102
112
Total
897
1,023
290
304
3 Descripción del estudio
Se realizó un estudio de encuestas de GIS participativo (PGIS) que se llevo a cabo en la región Huanuco en 3 distritos en los años distintos 2017 y 2022 . El estudio cuenta con 1920 observaciones y con 50 variables. A continuación un resumen.
Además, para el presente estudio se tuvieron las siguientes consideraciones:
Se consideraron los datos relacionados a tubérculos y raices, cereales hortalizas y leguminosas. En un segundo caso tambien se considero dividir los datos en cultivos para huerto y chacra.
4 Análisis Inferencial
5 Fuente de semilla
5.1 Comparación temporal 2017-2022 de fuente de semillas según clasificación
Para la variable de respuesta, destino_producción, fijamos como categoria de referencia (o nivel 0) a consumo-procesamiento. Por lo tanto buscaremos estimar en función de semilla (o nivel 1).
Modelamos la respuesta para cada tipo de clasificación, considerando un nivel de referencia para las variables explicativas fuente de semilla (ref: comprado) y anual (ref =2017).
Dumbell plot para la clasificación de tuberculos_y_raices
Dumbell plot para la clasificación de leguminosas
Dumbell plot para la clasificación de hortalizas
Dumbell plot para la clasificación de cereal
6.2 Modelos GLM-Logístico para destino_producción
Para la variable de respuesta, destino_producción, fijamos como categoria de referencia (o nivel 0) a consumo-procesamiento. Por lo tanto buscaremos estimar en función de semilla (o nivel 1).
Modelamos la respuesta para cada tipo de clasificación, considerando un nivel de referencia para las variables explicativas fuente de semilla (ref: comprado) y anual (ref =2017).
Flujo del destino de semilla para el cultivo de acelga
Flujo del destino de semilla para el cultivo de achira
Flujo del destino de semilla para el cultivo de aji
Flujo del destino de semilla para el cultivo de albahaca
Flujo del destino de semilla para el cultivo de alfalfa
Flujo del destino de semilla para el cultivo de arracacha
Flujo del destino de semilla para el cultivo de arveja
Flujo del destino de semilla para el cultivo de arverja
Flujo del destino de semilla para el cultivo de avena
Flujo del destino de semilla para el cultivo de betarraga
Flujo del destino de semilla para el cultivo de beterraga
Flujo del destino de semilla para el cultivo de brocoli
Flujo del destino de semilla para el cultivo de camote
Flujo del destino de semilla para el cultivo de cebada
Flujo del destino de semilla para el cultivo de cebolla
Flujo del destino de semilla para el cultivo de espinaca
Flujo del destino de semilla para el cultivo de frijol
Flujo del destino de semilla para el cultivo de haba
Flujo del destino de semilla para el cultivo de maiz
Flujo del destino de semilla para el cultivo de mani
Flujo del destino de semilla para el cultivo de mashua
Flujo del destino de semilla para el cultivo de oca
Flujo del destino de semilla para el cultivo de olluco
Flujo del destino de semilla para el cultivo de papa
Flujo del destino de semilla para el cultivo de papa cholon
Flujo del destino de semilla para el cultivo de pepinillo
Flujo del destino de semilla para el cultivo de pepino
Flujo del destino de semilla para el cultivo de pimienta
Flujo del destino de semilla para el cultivo de pimiento
Flujo del destino de semilla para el cultivo de pituca
Flujo del destino de semilla para el cultivo de poro
Flujo del destino de semilla para el cultivo de quinua
Flujo del destino de semilla para el cultivo de remolacha
Flujo del destino de semilla para el cultivo de sorgo
Flujo del destino de semilla para el cultivo de tara
Flujo del destino de semilla para el cultivo de tarwi
Flujo del destino de semilla para el cultivo de tomate
Flujo del destino de semilla para el cultivo de trigo
Flujo del destino de semilla para el cultivo de vainita
Flujo del destino de semilla para el cultivo de yacon
Flujo del destino de semilla para el cultivo de yuca
Flujo del destino de semilla para el cultivo de zapallo
7 Cantidad de semilla
Veamos la diferencias entre la cantidad semilla. Para ellos dividimos la variable cantidad de semilla en 2 partes:
Cantidad de semilla expresada en unidades de peso
Cantidad de semilla expresada en unidades de conteo
7.1 Cantidad de semilla expresada en unidades de peso vs año
Prueba de Kruskal-Wallis para ver diferencias entre cantidad de semilla (peso) y el año
Tablas de las diferencias
Source Code
---title: "Análisis de Datos del Estudio de Semilla a través de PGIS completo Participativo 2017-2022-Comparativo general"author: "Omar Benites Alfaro"format: html: self-contained: true code-fold: show code-summary: "Show the code" code-overflow: wrap code-tools: true code-block-border-left: "#ade6d8" smooth-scroll: trueeditor: visualtoc: truetoc-depth: 4toc-title: "Tabla de contenido"number-sections: trueexecute: echo: true warning: falsedf-print: kable---```{r}#| echo: true#| message: false#| warning: falseknitr::opts_chunk$set(echo =FALSE, message = F,warning = F, ft.keepnext = F, tab.topcaption =TRUE,ft.align ="left", tab.cap.pre ="Tabla ", tab.cap.sep =": ")library(tidyverse)library(agricolae)library(janitor)library(data.table)library(cluster)library(forcats)library(gower)library(officer)library(flextable)library(knitr)library(dumbbell)library(ggplot2)library(sf)library(rnaturalearth)library(rnaturalearthdata)### librarias para modeloslibrary(gmodels)library(nnet)library(ggalluvial)set.seed(123)autonum <-run_autonum(seq_id ="tab", bkm ="TC1", bkm_all =TRUE)options(knitr.duplicate.label ="allow")#source("R/curacion_seedsystem.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/bar_plot.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/dumbbell_plot.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/dumbbell_utils.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/count_utils.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/upset_tools.R")source("E:/omar/METRIKA-GROUP/Github/agrograf/upset_plot.R")#source("E:/omar/METRIKA-GROUP/Github/analisis_datos_cip/SeedSystems/R/curacion_seedsystem_backup.R")#source("E:/omar/Analisis_colegas/yanapai/yanapai_variedades/R/utils.R")source("R/utils.R")library(corrplot)library(agricolae)library(ggpubr)library(sjPlot)library(emmeans)library(DT)params_models <-function(model){ dfre<-df.residual(model) MSerror<-deviance(model)/dfre out <-list(df=dfre, MSerror=MSerror)}``````{r}#| echo: true#| message: false#| warning: falsetbl_sseeds <- readxl::read_xlsx("Data/curado/bd_pgis_semillas.xlsx")tbl_sseeds <- tbl_sseeds %>%mutate(codigo_familia =as.character(codigo_familia))## Agregar una columna con las unidades metricas}tbl_sseeds <- tbl_sseeds %>% dplyr::mutate(units_cant_semilla_sembro =gsub("[0-9]", "", cant_semilla_sembro) %>%str_trim(side="both") )tbl_sseeds <- tbl_sseeds %>%mutate(units_cant_semilla_sembro =tolower(units_cant_semilla_sembro))## Quitar los characteres de los números#tbl_sseeds <- tbl_sseeds %>% dplyr::mutate(cant_semilla_sembro = gsub("[^0-9.-//]", "", cant_semilla_sembro) %>% as.numeric() )tbl_sseeds <- tbl_sseeds %>% dplyr::mutate(cant_semilla_sembro =gsub("[^0-9.-//]", "", cant_semilla_sembro) )## convertir kgtbl_sseeds <- tbl_sseeds %>%mutate(cu_units_cant_semilla_sembro =case_when( str_detect(units_cant_semilla_sembro,". kg|. Kg|/ kg|/ Kg|kg") ~"kg",str_detect(units_cant_semilla_sembro, "lata|latas|latas| lata") ~"latas",str_detect(units_cant_semilla_sembro, "mantada|mantadas|sacos|. saco_o_costal|. sacos|/ costal|costal|costales|/ saco|saco|sacos|saco_o_costal" ) ~"saco_o_costal",str_detect(units_cant_semilla_sembro, "arroba|arrobas" ) ~"arrobas",str_detect(units_cant_semilla_sembro, "malla|mallas" ) ~"mallas",str_detect(units_cant_semilla_sembro, "planta|plantas" ) ~"mallas",str_detect(units_cant_semilla_sembro, "planton|plantones|plantos" ) ~"plantones",str_detect(units_cant_semilla_sembro, "tarro|tarro - gr|tarros") ~"tarros",str_detect(units_cant_semilla_sembro, "unidad|unidades") ~"unidades",TRUE~units_cant_semilla_sembro ))# tbl_sseeds <- tbl_sseeds %>% dplyr::mutate(cant_semilla_sembro =case_when( cant_semilla_sembro=="1/4"~"0.25", cant_semilla_sembro=="1/2"~"0.5", cant_semilla_sembro=="1/8"~"0.125", cant_semilla_sembro=="3/4"~"0.75",TRUE~ cant_semilla_sembro ))# tbl_sseeds <- tbl_sseeds %>% dplyr::mutate(conversion_units =case_when(##unidades con conversion a kg cu_units_cant_semilla_sembro=="kg"~"1", cu_units_cant_semilla_sembro=="gr"~"0.001", cu_units_cant_semilla_sembro=="latas"~"20", cu_units_cant_semilla_sembro=="mallas"~"20", cu_units_cant_semilla_sembro=="saco_o_costal"~"60", cu_units_cant_semilla_sembro=="fanegas"~"100", cu_units_cant_semilla_sembro=="arrobas"~"12.5", cu_units_cant_semilla_sembro=="amarro"~"2",###unidades que no son de medida( sino de conteo) cu_units_cant_semilla_sembro=="unidades"~"1", ##unidades pero no peso cu_units_cant_semilla_sembro=="caja"~"50", #50 ##unidades pero no peso cu_units_cant_semilla_sembro=="tarros"~"1",## sin conversion cu_units_cant_semilla_sembro=="plantones"~"1", ## sin conversion cu_units_cant_semilla_sembro=="bulbos"~"1", ##unidades pero no peso cu_units_cant_semilla_sembro=="estacas"~"1",## sin conversion cu_units_cant_semilla_sembro=="paquetes"~"1",## sin conversion cu_units_cant_semilla_sembro==""~"", cu_units_cant_semilla_sembro=="."~"",TRUE~"" ))#convertir a formato numericotbl_sseeds$stand_cant_semilla_sembro <-as.numeric(tbl_sseeds$conversion_units)tbl_sseeds$conversion_units <-as.numeric(tbl_sseeds$conversion_units)#crear una variable curada de cantidad de semilla para variables de pesotbl_sseeds <- tbl_sseeds %>%mutate(cu_cant_peso_semilla_sembro=case_when( cu_units_cant_semilla_sembro=="kg"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="gr"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="latas"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="mallas"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="saco_o_costal"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="fanegas"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="arrobas"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="amarro"~ stand_cant_semilla_sembro*conversion_units,TRUE~999 ) )#crear variable cant. semilla con unidades de conteo (no peso)tbl_sseeds <- tbl_sseeds %>%mutate(cu_cant_nopeso_semilla_sembro=case_when( cu_units_cant_semilla_sembro=="unidades"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="caja"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="tarros"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="plantones"~ stand_cant_semilla_sembro*conversion_units , cu_units_cant_semilla_sembro=="bulbos"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="estacas"~ stand_cant_semilla_sembro*conversion_units, cu_units_cant_semilla_sembro=="paquetes"~ stand_cant_semilla_sembro*conversion_units,TRUE~999))## crear una columna dicotomicatbl_sseeds <- tbl_sseeds %>%mutate(destino_produccion_mod =case_when( str_detect(destino_produccion,"semilla")~"uso semilla",TRUE~"consumo-procesamiento-otros" ) )## crear tablas con 2017 y 2022tbl_pgis17 <- tbl_sseeds %>%filter(anual ==2017)tbl_pgis22 <- tbl_sseeds %>%filter(anual ==2022)```## Preliminares```{r}#| echo: true#| message: false#| warning: falsen17 <-nrow(tbl_pgis17)n22 <-nrow(tbl_pgis22)fam17 <- tbl_pgis17$codigo_familia %>%unique()nfam17 <- fam17 %>%length()fam22 <- tbl_pgis22$codigo_familia %>%unique() nfam22 <- fam22 %>%length()```Los datos iniciales muestran que tenemos 2 datasets, los cuales constan de el número de observaciones (records) y de familias en el 2017 y 2022 respectivamente:```{r}dfr_fam <-count_distinct(tbl_sseeds %>%as.data.frame(),group =c("anual","zona"),variable ="codigo_familia") %>% tidyr::pivot_wider(names_from ="anual",values_from ="n_codigo_familia",names_prefix ="nfam_")dfr_obs <- tbl_sseeds %>%group_by(anual, zona) %>%count() %>% tidyr::pivot_wider(names_from ="anual",values_from ="n",names_prefix ="nobs_")tbl_summary <-left_join(dfr_obs, dfr_fam) %>%adorn_totals(where =c("row"),name ="Total")tbl_summary %>% flextable %>%theme_booktabs()```Nota: Una familia puede tener asociada más observaciones (records) que otras familias.: Hay familias en el muestreo del 2022 que no necesariamente coinciden con las familias del 2017, esto se debe a que hay familias que ya no cumplian con el criterio establecido o estuvieron ausentes por razones descritas en la encuesta.## Procesamiento de datosPara el procesamiento de los datos se van a considerar ciertos criterios:1. En la variable *fuente_semilla* se filtro por "comprado","propio", "regalado".2. En *destino producción* se filtró por "semilla","semilla y procesamiento","semilla y otros". Los cuales fueron reetiquetados por "semilla".3. En clasificación se filtró por "hortalizas", "leguminosas","cereal", "tuberculos_y_raices".4. Las respuestas de **categoria múltiple** del 2017 no son tomadas en cuenta, puesto que en el 2022 solo hay respuestas únicas. (Ver sub tópico de consideraciones especiales).5. Las familias en el 2022 difieren en un \$30%\$ respecto al 20226. Referente a las unidades de *cantidad de semilla* existen 2 categorias: cantidad de semilla expresada en peso (ej. kg.) y cantidad de semilla expresada en unidades de conteo (ej. 3 unidades).Teniendo en cuenta estas consideraciones, la tabla de resumen general se redujo a:```{r}tbl_sseeds <- tbl_sseeds %>% dplyr::filter(fuente_semilla %in%c("comprado","propio", "regalado","intercambiado") ) %>% dplyr::filter(clasificacion %in%c("hortalizas", "leguminosas","cereal", "tuberculos_y_raices") ) ``````{r}dfr_fam <-count_distinct(tbl_sseeds %>%as.data.frame(),group =c("anual","zona"),variable ="codigo_familia") %>% tidyr::pivot_wider(names_from ="anual",values_from ="n_codigo_familia",names_prefix ="nfam_")dfr_obs <- tbl_sseeds %>%group_by(anual, zona) %>%count() %>% tidyr::pivot_wider(names_from ="anual", values_from ="n", names_prefix ="nobs_")``````{r}#fam_critcoincidence <- intersect(tbl_sseeds %>% filter(anual == 2017) %>% select(codigo_familia) %>% pull() %>% unique(), tbl_sseeds %>% filter(anual == 2022) %>% select(codigo_familia) %>% pull() %>% unique())#nfam_crit_coincidence <- length(fam_critcoincidence)#tbl_sseeds <- tbl_sseeds %>% filter(codigo_familia %in% fam_critcoincidence)tbl_summary <-left_join(dfr_obs, dfr_fam) %>%adorn_totals(where =c("row"), name ="Total")tbl_summary %>%flextable() %>%theme_booktabs()```### Nota- Bajo el filtro de solo **considerar categorias singulares en fuente de semilla** el periodo 2017 y 2022, alrededor de 100 familias fueron descartadas del estudio. Estas 107 familias no tienen categorias múltiples en el 2022. Del mismo modo para **destino de producción**, alrededor de 36 familias ya no fueron consideradas.- Al considerar los criterios o filtros anteriores, el número de familias en el 2017 y 2022 se reduce a 140 y 137 respectivamente.Considerando las notas anteriores tendremos:```{r}dfr_fam <-count_distinct(tbl_sseeds %>%as.data.frame(), group =c("anual", "zona"), variable ="codigo_familia") %>% tidyr::pivot_wider(names_from ="anual", values_from ="n_codigo_familia", names_prefix ="nfam_")dfr_obs <- tbl_sseeds %>%group_by(anual, zona) %>%count() %>% tidyr::pivot_wider(names_from ="anual", values_from ="n", names_prefix ="nobs_")tbl_summary <-left_join(dfr_obs, dfr_fam) %>%adorn_totals(where =c("row"), name ="Total")tbl_summary %>%flextable() %>%theme_booktabs()```## Descripción del estudioSe realizó un estudio de encuestas de GIS participativo (PGIS) que se llevo a cabo en la región Huanuco en 3 distritos en los años distintos 2017 y 2022 . El estudio cuenta con `r nrow(tbl_sseeds)` observaciones y con `r ncol(tbl_sseeds)` variables. A continuación un resumen.Además, para el presente estudio se tuvieron las siguientes consideraciones:- Se consideraron los datos relacionados a ***tubérculos y raices, cereales hortalizas y leguminosas***. En un segundo caso tambien se considero dividir los datos en **cultivos para huerto y chacra**.```{r}tbl_resume_pgis <-create_resume_table(tbl_sseeds)tbl_resume_pgis <- tbl_resume_pgis %>% dplyr::filter(!Variable %in%c("latitud","longitud","global_id_parcela","global_id_familia","area_parcela_m2", "area_parcela_ha","altitud","codigo_familia","variedad_cultivo", "codigo_de_parcela","t_parcela_casa_min","t_parcela_carretera_min","no_variedades"))nom_header <-names(tbl_resume_pgis)val_header <-c("Var.", "Tipo", "Media", "SD", "Categorias")names(val_header) <- nom_headerft_tbl_resumen_pgis <-flextable(tbl_resume_pgis)ft_tbl_resumen_pgis <-set_header_labels(ft_tbl_resumen_pgis,values = val_header )#ft_tbl_resumen_pgis```## Análisis Inferencial```{r}nobs17 <- tbl_sseeds %>%filter(anual==2017) %>%nrow()nobs22 <- tbl_sseeds %>%filter(anual==2022) %>%nrow()#fam22 <- tbl_sseeds$codigo_familia %>% unique() nfam <- tbl_sseeds$codigo_familia %>%unique() %>%length()```## Fuente de semilla```{r}tbl17 <- tbl_sseeds %>%filter(fuente_semilla %in%c("comprado","propio"), anual==2017) %>%tabyl(codigo_familia, fuente_semilla,clasificacion) tbl22 <- tbl_sseeds %>%filter(fuente_semilla %in%c("comprado","propio"), anual==2022) %>%tabyl(codigo_familia, fuente_semilla,clasificacion) get_tbl_count <-function(list_tbl, nombre="fuente_semilla"){ list_tbl <-lapply(list_tbl, function(df) { df %>%pivot_longer(cols =2:3, names_to = nombre) }) add_sublist_name <-function(df, sublist_name) { df %>%mutate(Sublist = sublist_name) }out <-map2(list_tbl, names(list_tbl), add_sublist_name)out <- data.table::rbindlist(out) %>%as.data.frame() %>% dplyr::filter(value!=0)return(out)}tbl17 <-get_tbl_count(tbl17,nombre ="fuente_semilla") %>%mutate(anual=2017)tbl22 <-get_tbl_count(tbl22) %>%mutate(anual=2022)tbl1722 <-rbind(tbl17,tbl22)```### Comparación temporal 2017-2022 de fuente de semillas según clasificación```{r}tbl_res <- tbl_sseeds %>%group_by(clasificacion,anual) %>%count(fuente_semilla) %>%mutate(pctg=pct_fun(n))col_2017 <- tbl_res %>% dplyr::filter(anual=="2017")col_2022 <- tbl_res %>% dplyr::filter(anual=="2022")com_tbl <-left_join(col_2017, col_2022, by =c("fuente_semilla", "clasificacion"))names(com_tbl) <-c("clasificacion","anual_2017","fuente_semilla","n_2017","p_2017","anual_2022","n_2022","p_2022")com_tbl <- com_tbl %>%select(clasificacion, fuente_semilla, anual_2017, n_2017, p_2017, anual_2022, n_2022,p_2022)flextable(com_tbl)```#### Gráfico de comparaciones con Dumbell plot::: panel-tabset```{r results='asis'}#| results: asisclasificacion_vars <- com_tbl$clasificacion %>% unique() %>% sort(decreasing = TRUE)tbl_comp_anual <- com_tbl %>% rownames_to_column(var = "id")for(i in clasificacion_vars){ cat('\n\n#####',i,'\n\n') cat("Dumbell plot para la clasificación de ",i,"\n\n") gg_fuentsem_anual <- dumbell_plot(tbl_comp_anual %>% dplyr::filter(clasificacion == i), cat_id = "id", y = "fuente_semilla", x_i = "p_2017", x_f = "p_2022", pointsize = 4, subtitle = "Fuente de semilla", i_legend_lab = "2017", f_legend_lab = "2022", title = paste("Variación porcentual 2017-2022 para ", i)) + xlab("Porcentaje") + ylab("Fuente de semilla")print(gg_fuentsem_anual)}```:::### Modelos GLM-Poisson para fuente de semillaExploramos los datos a través de un Violin Plot```{r results='asis'}ggplot(data = tbl1722 , aes(x=factor(anual), y=value, fill=fuente_semilla)) + geom_violin(scale="width", adjust=2) + geom_point(position = position_jitterdodge(jitter.width=.5, jitter.height=.1, dodge.width = 1), alpha=.1)+ facet_wrap(~Sublist)```#### Resultados en escala log para el GLM-Poisson::: panel-tabset```{r results='asis'}#| echo: true#| results: asistbl_mixtos <- tbl1722 #%>% filter(fuente_semilla %in% c("comprado","propio"))names(tbl_mixtos) <- c("codigo_familia" ,"fuente_semilla" ,"value", "clasificacion","anual")clasificacion_vars <- tbl_mixtos$clasificacion %>% unique() %>% sort(decreasing = TRUE)modelos_list <- out <- out2 <- vector(mode = "list",length = length(clasificacion_vars))for(i in 1:length(clasificacion_vars)){ cat('\n\n#####',clasificacion_vars[i],'\n\n') cat("Resultados del modelos aplicado a ",clasificacion_vars[i],"\n\n") #print(paste("Resultados del modelos aplicado a ",clasificacion_vars)) modelos_list[[i]] <- glm(value ~ fuente_semilla+anual, data = tbl_mixtos %>% dplyr::filter(clasificacion==clasificacion_vars[i]), family="poisson") #print(paste("Contraste en los efectos de ",clasificacion_vars)) out[[i]] <- emmeans(modelos_list[[i]], ~ fuente_semilla+anual, type="response") print(htmltools::tagList(DT::datatable(out[[i]] %>% as.data.frame(),options = list(scrollX='400px')) %>% formatRound(purrr::map_lgl(.$x$data, is.numeric), digits = 4) )) #DT::datatable(out[[i]] %>% as.data.frame())}```:::#### Resultado en forma de cociente::: panel-tabset```{r results='asis'}#| echo: true#| results: asisfor(i in 1:length(clasificacion_vars)){ cat('\n\n#####',clasificacion_vars[i],'\n\n') cat("Cociente de efectos de ",clasificacion_vars[i],"\n\n") out2[[i]] <- pairs(out[[i]], reverse = TRUE) %>% as.data.frame() print(htmltools::tagList(DT::datatable(out2[[i]] %>% as.data.frame(), options = list(scrollX='400px') ) %>% formatRound(purrr::map_lgl(.$x$data, is.numeric), digits = 4))) #DT::datatable(out2[[i]]) #simplermarkdown::md_table(out2[[i]])}# Close the tabset```:::### Modelo GLM-Poisson para fuente de semilla y alturaViolin plot para la relacion entre fuente de semilla, altura y clasificacion de cultivo.```{r}tbl_altura <- tbl_sseeds %>%select(codigo_familia,clasificacion,fuente_semilla,anual,altitud)tbl_mixto_alt <-left_join(tbl_mixtos, tbl_altura) ggplot(data = tbl_mixto_alt , aes(x=factor(anual), y=altitud, fill=fuente_semilla)) +geom_violin(scale="width", adjust=2) +geom_point(position =position_jitterdodge(jitter.width=.5,jitter.height=.1,dodge.width =1),alpha=.1)+facet_wrap(~clasificacion)```Line plot```{r}ggplot(tbl_mixto_alt, aes(x =as_factor(anual), y = altitud, group =as_factor(fuente_semilla), color =as_factor(fuente_semilla) )) +stat_summary(fun.y = mean, geom ="point") +stat_summary(fun.y = mean, geom ="line") +facet_wrap(~ clasificacion,nrow =4) +theme_bw()+theme(axis.text.x =element_text(angle =90, vjust =0.5, hjust=1))```#### Log-Odds::: panel-tabset```{r results='asis'}#| echo: true#| results: asisclasificacion_vars <- tbl_mixto_alt$clasificacion %>% unique() %>% sort(decreasing = TRUE)modelos_list <- out <- out2 <- vector(mode = "list",length = length(clasificacion_vars))for(i in 1:length(clasificacion_vars)){ cat('\n\n#####',clasificacion_vars[i],'\n\n') cat("Resultados del datasets ",clasificacion_vars[i],"\n\n") modelos_list[[i]] <- glm(altitud ~ fuente_semilla + anual, data = tbl_mixto_alt %>% dplyr::filter(clasificacion==clasificacion_vars[i]), family="gaussian") out[[i]] <- emmeans(modelos_list[[i]], ~ fuente_semilla+anual, type="response") print(htmltools::tagList(DT::datatable(out[[i]] %>% as.data.frame(), options = list(scrollX='400px') ) %>% formatRound(purrr::map_lgl(.$x$data, is.numeric), digits = 4) ) )}```:::#### Cociente de odds::: panel-tabset```{r results='asis'}#| echo: true#| results: asisfor(i in 1:length(clasificacion_vars)){ cat('\n\n#####',clasificacion_vars[i],'\n\n') cat("Resultados del datasets ",clasificacion_vars[i],"\n\n") #print(paste("Contraste en los efectos de ",clasificacion_vars)) out[[i]] <- emmeans(modelos_list[[i]], ~ fuente_semilla + anual, type="response") #print(paste("La respuesta",clasificacion_vars[i])) #flextable(out[[i]]) # out2[[i]] <- pairs(out[[i]]) %>% as.data.frame() print(htmltools::tagList(DT::datatable(out2[[i]] %>% as.data.frame(), options = list(scrollX='400px') ) %>% formatRound(purrr::map_lgl(.$x$data, is.numeric), digits = 4)))}```:::### Flujo de fuente de semilla según clasificación de cultivos::: panel-tabset```{r results='asis'}#| results: asisloop <- tbl_res$clasificacion %>% unique()for(i in loop){ cat('\n\n#####',i,'\n\n') cat("Flujo de semilla según clasificación de ",i,"\n\n") p <- ggplot(tbl_res %>% filter(clasificacion == i,fuente_semilla %in% c("comprado","propio","regalado")), aes(x = factor(anual), stratum = fuente_semilla, alluvium = fuente_semilla, y = n, fill = fuente_semilla, label = fuente_semilla))+ geom_stratum(alpha = .5)+ geom_alluvium()+ geom_text(stat = "stratum", size = 4)+ #ggrepel::geom_text_repel()+ ggtitle(paste0("Flujo de fuente de semilla de ", i))+ theme(legend.position="bottom") print(p)}```:::### Comparación temporal 2017-2022 de fuente de semillas según cultivo```{r}tbl_res <- tbl_sseeds %>%#filter(cultivo=="papa") %>% group_by(cultivo,anual) %>%count(fuente_semilla) %>%mutate(pctg=pct_fun(n))col_2017 <- tbl_res %>% dplyr::filter(anual=="2017")col_2022 <- tbl_res %>% dplyr::filter(anual=="2022")com_tbl <-left_join(col_2017, col_2022, by =c("fuente_semilla", "cultivo"))names(com_tbl) <-c("cultivo","anual_2017","fuente_semilla","n_2017","p_2017","anual_2022","n_2022","p_2022")com_tbl <- com_tbl %>%select(cultivo, fuente_semilla, anual_2017, n_2017, p_2017, anual_2022, n_2022,p_2022)flextable(com_tbl)```### Flujo de fuente de semilla para los cultivos::: panel-tabset```{r results='asis'}#| results: asisloop <- tbl_res$cultivo %>% unique()for(i in loop){ cat('\n\n#####',i,'\n\n') cat("Flujo de semilla el cultivo de ",i,"\n\n") p <- ggplot(tbl_res %>% filter(cultivo == i,fuente_semilla %in% c("comprado","propio","regalado")), aes(x = factor(anual), stratum = fuente_semilla, alluvium = fuente_semilla, y = n, fill = fuente_semilla, label = fuente_semilla))+ geom_stratum(alpha = .5)+ geom_alluvium()+ geom_text(stat = "stratum", size = 4)+ #ggrepel::geom_text_repel()+ ggtitle(paste0("Flujo de fuente de semilla de ", i))+ theme(legend.position="bottom") print(p)}```:::### Modelos GLM-Logístico para Fuente de SemillaPara la variable de respuesta, destino_producción, fijamos como categoria de referencia (o nivel 0) a consumo-procesamiento. Por lo tanto buscaremos estimar en función de semilla (o nivel 1).```{r}tbl_sseeds2 <- tbl_sseeds %>%filter(fuente_semilla %in%c("propio","comprado"))tbl_sseeds2$fuente_semilla <-factor(tbl_sseeds2$fuente_semilla)#tbl_sseeds$anual <- factor(tbl_sseeds$anual)tbl_sseeds2$fuente_semilla <-relevel(tbl_sseeds2$fuente_semilla, ref="comprado")```Modelamos la respuesta para cada tipo de clasificación, considerando un nivel de referencia para las variables explicativas fuente de semilla (ref: comprado) y anual (ref =2017).::: panel-tabset```{r}#| echo: true#| results: asisclasificacion_values <-unique(tbl_sseeds2$clasificacion)tbl_sseeds2$anual <-factor(tbl_sseeds2$anual)mod_fuen_lg <- out <-vector(mode="list",length =length(clasificacion_values))tbl_sseeds2$fuente_semilla <-as.factor(tbl_sseeds2$fuente_semilla)for(i in1:length(clasificacion_values)){mod_fuen_lg[[i]] <-glm(fuente_semilla ~ anual+ altitud, data = tbl_sseeds2 %>%filter(clasificacion==clasificacion_values[i]), family =binomial(link ="logit")) out[[i]] <- broom::tidy(mod_fuen_lg[[i]]) %>%as.data.frame()}for(i in1:length(clasificacion_values)){cat('\n\n#####',clasificacion_values[i],'\n\n')cat("Modelo logistico para destino de produccion según clasificación de ",clasificacion_values[i],"\n\n")#print(DT::datatable(out[[i]] %>% dplyr::select(1,2)) )print(htmltools::tagList(DT::datatable(out[[i]],options =list(scrollX='400px') ) %>%formatRound(purrr::map_lgl(.$x$data, is.numeric), digits =4) ) )#print(sjPlot::tab_model(mod_dest_lg[[i]], p.style = "numeric_stars", transform = NULL)) }```:::```{r}DT::datatable(data.frame(NULL=0),rownames =FALSE)```#### Gráfico del efecto de la altitud para las clasificacionesLos resultados obtenidos son:::: panel-tabset```{r}#| echo: true#| results: asisfor(i in1:length(clasificacion_values)){cat('\n\n#####',clasificacion_values[i],'\n\n')cat("Efectos de GLM-Logistico para ",clasificacion_vars[i],"\n\n")print(plot(effects::allEffects(mod_fuen_lg[[i]]),1))}```:::#### Gráfico del efecto del año y la fuente de semilla::: panel-tabset```{r results='asis'}#| echo: true#| results: asisfor(i in 1:length(clasificacion_values)){ cat('\n\n#####',clasificacion_values[i],'\n\n') cat("Resultados del datasets ",clasificacion_vars[i],"\n\n") print(plot(effects::allEffects(mod_fuen_lg[[i]]),2))}```:::## Producción de semilla### Comparación temporal 2017-2022 del destino producción de semilla según clasificación```{r}tbl_res <- tbl_sseeds %>%mutate(destino_produccion_mod) %>%group_by(clasificacion,anual) %>%count(destino_produccion_mod) %>%mutate(pctg=pct_fun(n)) col_2017 <- tbl_res %>% dplyr::filter(anual=="2017")col_2022 <- tbl_res %>% dplyr::filter(anual=="2022")com_tbl <-left_join(col_2017, col_2022, by =c("destino_produccion_mod", "clasificacion"))names(com_tbl) <-c("clasificacion","anual_2017","destino_produccion_mod","n_2017","p_2017","anual_2022","n_2022","p_2022")com_tbl <- com_tbl %>%select(clasificacion, destino_produccion_mod, anual_2017, n_2017, p_2017, anual_2022, n_2022,p_2022)flextable(com_tbl)```#### Gráfico de comparaciones con Dumbell plot::: panel-tabset```{r results='asis'}clasificacion_vars <- com_tbl$clasificacion %>% unique() %>% sort(decreasing = TRUE)tbl_comp_anual <- com_tbl %>% rownames_to_column(var = "id")for(i in 1:length(clasificacion_vars)){ cat('\n\n#####',clasificacion_vars[i],'\n\n') cat("Dumbell plot para la clasificación de ",clasificacion_vars[i],"\n\n") gg_destino_anual <- dumbell_plot(tbl_comp_anual %>% dplyr::filter(clasificacion == clasificacion_vars[i]), cat_id = "id", y = "destino_produccion_mod", x_i = "p_2017", x_f = "p_2022", pointsize = 4, subtitle = "Destino de producción", i_legend_lab = "2017", f_legend_lab = "2022", title = paste("Variación porcentual 2017-2022")) + xlab("Porcentaje") + ylab("Destino de producción")print(gg_destino_anual)}```:::### Modelos GLM-Logístico para destino_producciónPara la variable de respuesta, destino_producción, fijamos como categoria de referencia (o nivel 0) a consumo-procesamiento. Por lo tanto buscaremos estimar en función de semilla (o nivel 1).```{r}tbl_sseeds$destino_produccion_mod <-factor(tbl_sseeds$destino_produccion_mod)tbl_sseeds$anual <-factor(tbl_sseeds$anual)tbl_sseeds$destino_produccion_mod <-relevel(tbl_sseeds$destino_produccion_mod, ref="consumo-procesamiento-otros")```Modelamos la respuesta para cada tipo de clasificación, considerando un nivel de referencia para las variables explicativas fuente de semilla (ref: comprado) y anual (ref =2017).::: panel-tabset```{r}#| echo: true#| results: asisclasificacion_values <-unique(tbl_sseeds$clasificacion)mod_dest_lg <- out <-vector(mode="list",length =length(clasificacion_values))for(i in1:length(clasificacion_values)){mod_dest_lg[[i]] <-glm(destino_produccion_mod ~ fuente_semilla*anual+ altitud, data = tbl_sseeds %>%filter(fuente_semilla %in%c("comprado","propio"),clasificacion==clasificacion_values[i]), family =binomial(link ="logit")) out[[i]] <- broom::tidy(mod_dest_lg[[i]]) %>%as.data.frame()}for(i in1:length(clasificacion_values)){cat('\n\n#####',clasificacion_values[i],'\n\n')cat("Modelo logistico para destino de produccion según clasificación de ",clasificacion_values[i],"\n\n")#print(DT::datatable(out[[i]] %>% dplyr::select(1,2)) )print(htmltools::tagList(DT::datatable(out[[i]],options =list(scrollX='400px') ) %>%formatRound(purrr::map_lgl(.$x$data, is.numeric), digits =4) ) )#print(sjPlot::tab_model(mod_dest_lg[[i]], p.style = "numeric_stars", transform = NULL)) }```:::Para```{r}DT::datatable(data.frame(NULL=0),rownames =FALSE)```#### Gráfico del efecto de la altitud para las clasificacionesLos resultados obtenidos son:::: panel-tabset```{r results='asis'}#| echo: true#| results: asisfor(i in 1:length(clasificacion_values)){ cat('\n\n#####',clasificacion_values[i],'\n\n') cat("Efectos de GLM-Logistico para ",clasificacion_vars[i],"\n\n") print(plot(effects::allEffects(mod_dest_lg[[i]]),1))}```:::#### Gráfico del efecto del año (2017) y fuente de semilla sobre el destino de producción de la semilla.::: panel-tabset```{r results='asis'}#| echo: true#| results: asisfor(i in 1:length(clasificacion_values)){ cat('\n\n#####',clasificacion_values[i],'\n\n') cat("Resultados del datasets ",clasificacion_vars[i],"\n\n") print(plot(effects::allEffects(mod_dest_lg[[i]]),2))}```:::#### Gráfico de las interacciones::: panel-tabset```{r results='asis'}#| results: asisfor(i in 1:length(clasificacion_values)){ cat('\n\n#####',clasificacion_values[i],'\n\n') print(emmip(mod_dest_lg[[i]], fuente_semilla ~ anual, CIs=TRUE, plotit=T)+theme_bw())}```:::#### Flujo del destino de producción según clasificación del cultivo::: panel-tabset```{r results='asis'}#| echo: true#| results: asiscultivo_vars <- tbl_res$clasificacion %>% unique() %>% sort(decreasing = TRUE)for(i in cultivo_vars){ cat('\n\n#####',i,'\n\n') cat("Flujo del destino de semilla según clasificación del cultivo de ",i,"\n\n") p <- ggplot(tbl_res %>% filter(clasificacion == i), aes(x = factor(anual), stratum = destino_produccion_mod, alluvium = destino_produccion_mod, y = n, fill = destino_produccion_mod, label = destino_produccion_mod))+ geom_stratum(alpha = .5)+ geom_alluvium()+ geom_text(stat = "stratum", size = 4)+ #ggrepel::geom_text_repel()+ ggtitle(paste0("Flujo del destino de producción de semilla"))+ theme(legend.position="bottom") print(p)}```:::### Comparación temporal 2017-2022 del destino de producción de semilla según el cultivo```{r}tbl_res <- tbl_sseeds %>%#filter(cultivo=="papa") %>% group_by(cultivo,anual) %>%count(destino_produccion_mod) %>%mutate(pctg=pct_fun(n))col_2017 <- tbl_res %>% dplyr::filter(anual=="2017")col_2022 <- tbl_res %>% dplyr::filter(anual=="2022")com_tbl <-left_join(col_2017, col_2022, by =c("destino_produccion_mod", "cultivo"))names(com_tbl) <-c("cultivo","anual_2017","destino_produccion_mod","n_2017","p_2017","anual_2022","n_2022","p_2022")com_tbl <- com_tbl %>%select(cultivo, destino_produccion_mod, anual_2017, n_2017, p_2017, anual_2022, n_2022,p_2022)flextable(com_tbl)```#### Flujo del destino de producción de semillas para los cultivos::: panel-tabset```{r results='asis'}loop <- tbl_res$cultivo %>% unique()for(i in loop){ cat('\n\n#####',i,'\n\n') cat("Flujo del destino de semilla para el cultivo de ",i,"\n\n") p <- ggplot(tbl_res %>% filter(cultivo == i), aes(x = factor(anual), stratum = destino_produccion_mod, alluvium = destino_produccion_mod, y = n, fill = destino_produccion_mod, label = destino_produccion_mod))+ geom_stratum(alpha = .5)+ geom_alluvium()+ geom_text(stat = "stratum", size = 4)+ #ggrepel::geom_text_repel()+ ggtitle(paste0("Flujo de destino de semillas de ", i))+ theme(legend.position="bottom") print(p)}```:::## Cantidad de semillaVeamos la diferencias entre la cantidad semilla. Para ellos dividimos la variable cantidad de semilla en 2 partes:a. Cantidad de semilla expresada en unidades de pesob. Cantidad de semilla expresada en unidades de conteo### Cantidad de semilla expresada en unidades de peso vs año```{r}clasificacion_values <-c("cereal","hortalizas","leguminosas","tuberculos_y_raices")result <- rwix <- tbl_datos <-vector(mode="list",length =length(clasificacion_values))#tbl_sseeds <- tbl_sseeds %>% mutate(mep = paste(fuente_semilla,anual,sep="_"))for(i in1:length(clasificacion_values)){#cat('\n\n#####',clasificacion_values[i],'\n\n')#cat("Cantidad de semilla (unidades de peso) para ",clasificacion_values[i],"\n\n")## tabla de datos tbl_datos[[i]] <- tbl_sseeds %>% dplyr::filter(cu_cant_peso_semilla_sembro!=999, clasificacion==clasificacion_values[i], fuente_semilla %in%c("propio","comprado"))result[[i]] <-kruskal.test(cu_cant_peso_semilla_sembro ~factor(anual), data = tbl_datos[[i]] )rwix[[i]] <-pairwise.wilcox.test(tbl_datos[[i]]$cu_cant_peso_semilla_sembro, tbl_datos[[i]]$anual)}```Prueba de Kruskal-Wallis para ver diferencias entre cantidad de semilla (peso) y el año```{r}map(result, broom::tidy) %>% dplyr::bind_rows() %>%mutate(clasificacion=clasificacion_values) %>% DT::datatable( as.data.frame(.) ,options =list(scrollX='400px')) %>%formatRound(purrr::map_lgl(.$x$data, is.numeric), digits =4) ```Tablas de las diferencias```{r}map(rwix, broom::tidy) %>% dplyr::bind_rows() %>%mutate(clasificacion=clasificacion_values) %>% DT::datatable( as.data.frame(.),options =list(scrollX='400px')) %>%formatRound(purrr::map_lgl(.$x$data, is.numeric), digits =4) ```