Resultados Dashboard con R

Créditos agropecuarios y evaluaciones agropecuarias en café

Autor/a

Edimer David Jaramillo

1 Importando bibliotecas

library(readr)
library(dplyr)
library(ggplot2)

2 Importando datos

# Datos de créditos agropecuarios en café
creditos_cafe <- read_csv("datos/créditos_café_colombia.csv")
creditos_cafe |> head()
# Datos de evaluaciones agropecuarias
eva_cafe <- read_csv("datos/evas_café.csv")
eva_cafe |> head()

3 Municipios en ambas tablas

  • Primero identificamos a partir de cuáles variables podríamos unir las dos bases de datos.
  • ¿Unimos los créditos a las EVAs o las EVAs a los créditos? En este caso nos interesan municipios que estén en ambas bases de datos.
    • ¿Cuántos municipios hay en la base de datos de créditos?
    • ¿Cuántos municipios hay en la base de datos de EVAs?
# Total de municipios direrentes
mpios_unicos_creditos <-unique(creditos_cafe$id_munic)
mpios_unicos_evas <- unique(eva_cafe$codigo_dane_municipio)

length(mpios_unicos_creditos)
length(mpios_unicos_evas)
  • ¿Cuántos municipios comparten las dos bases de datos?
sum(unique(creditos_cafe$id_munic) %in% unique(eva_cafe$codigo_dane_municipio))

4 Resumen por municipio

  • Para simplificar el ejercicio vamos a calcular algunas métricas estadísticas por municipio.
resumen_creditos <-
  creditos_cafe |>
  group_by(id_depto,
           departamento_inversion,
           id_munic,
           municipio_inversion) |>
  reframe(
    promedio_plazo = mean(plazo, na.rm = TRUE),
    promedio_valor = mean(vlr_inic_garantia, na.rm = TRUE)
  )

resumen_creditos |> 
  head()
resumen_evas <-
  eva_cafe |>
  group_by(codigo_dane_departamento,
           departamento,
           codigo_dane_municipio,
           municipio) |>
  reframe(
    promedio_rto = mean(rendimiento_t_ha, na.rm = TRUE),
    promedio_pdn = mean(produccion_t, na.rm = TRUE)
  )

resumen_evas |> 
  head()

5 Unión de datos

  • Ahora unimos los dos resúmenes. La unión se realiza teniendo en cuenta la variable municipio, pero es importante tener en cuenta que tienen diferente nombre en cada tabla.
names(resumen_creditos)
names(resumen_evas)
  • Opcional: para facilitar el proceso podemos hacer dos cosas antes de unir las bases de datos:
    • Editar los nombres de la variable que es común en ambas tablas y a través de la cual realizamos la unión.
    • Como el nombre del municipio y departamento está en ambas tablas, solo es necesario que lo mantengamos en una tabla, ya que se repetirá.
# Editando nombres y seleccionando columnas en evas
resumen_evas2 <-
  resumen_evas |>
  select(id_munic = codigo_dane_municipio, promedio_rto, promedio_pdn)

resumen_evas2 |> head()
  • Ahora unimos las dos tablas.
df_completa <-
  inner_join(resumen_creditos, resumen_evas2, by = "id_munic")

df_completa |> head()
  • ¿Cuál es la dimensión de esta nueva base de datos?
df_completa |> dim()

6 Visualizaciones

  • Plazo del crédito:
df_completa |> 
  ggplot(aes(x = promedio_plazo)) +
  geom_histogram(color = "black") +
  labs(x = "Plazo (meses)",
       y = "Frecuencia",
       title = "Distribución del plazo en créditos agropecuarios",
       subtitle = "Colombia") +
  theme_minimal()
  • Valor del crédito:
df_completa |> 
  ggplot(aes(x = promedio_valor)) +
  geom_histogram(color = "black") +
  labs(x = "Valor ($)",
       y = "Frecuencia",
       title = "Distribución del valor en créditos agropecuarios",
       subtitle = "Colombia") +
  theme_minimal()
  • Promedio de rendimiento:
df_completa |> 
  ggplot(aes(x = promedio_rto)) +
  geom_histogram(color = "black") +
  labs(x = "Rendimiento (t/ha)",
       y = "Frecuencia",
       title = "Distribución del rendimiento promedio en café",
       subtitle = "Colombia") +
  theme_minimal()
  • Producción en toneladas del cultivo de café:
df_completa |> 
  ggplot(aes(x = promedio_pdn)) +
  geom_histogram(color = "black") +
  labs(x = "Producción (t)",
       y = "Frecuencia",
       title = "Distribución de producción promedio en café",
       subtitle = "Colombia") +
  theme_minimal()
  • ¿En qué departamentos se solicita mayor monto de créditos?
df_completa |> 
  ggplot(aes(x = departamento_inversion, y = promedio_valor)) +
  geom_boxplot() +
  labs(x = "Departamento",
       y = "Valor ($)",
       title = "Distribución de monto de crédito por departamento",
       subtitle = "Colombia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
  • ¿En qué departamentos hay mayores rendimientos?
df_completa |> 
  ggplot(aes(x = departamento_inversion, y = promedio_rto)) +
  geom_boxplot() +
  labs(x = "Departamento",
       y = "Rendimiento (t/ha)",
       title = "Distribución del rendimiento por departamento",
       subtitle = "Colombia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
  • ¿Existe asociación entre el monto del crédito y el rendimiento?
cor(df_completa$promedio_valor, df_completa$promedio_rto, use = "pairwise.complete.obs")
  • Graficamos el diagrama de dispersión:
df_completa |> 
  # filter(promedio_valor <= 4e+07) |>
  ggplot(aes(x = promedio_valor, y = promedio_rto)) +
  geom_point() +
  labs(x = "Valor ($)",
       y = "Rendimiento (t/ha)",
       title = "Monto del crédito vs rendimiento",
       subtitle = "Colombia") +
  theme_minimal()
  • Ahora relacionamos el valor del crédito con la producción:
cor(df_completa$promedio_valor, df_completa$promedio_pdn, use = "pairwise.complete.obs")
  • Gráfico:
df_completa |> 
  # filter(promedio_valor <= 4e+07) |>
  ggplot(aes(x = promedio_valor, y = promedio_pdn)) +
  geom_point() +
  labs(x = "Valor ($)",
       y = "Producción (t)",
       title = "Monto del crédito vs producción",
       subtitle = "Colombia") +
  theme_minimal() +
  scale_y_log10()