REFEFO Potential to Enhance Productive Connectivity

El Potencial de la REFEFO para Mejorar la Conectividad Productiva

REFEFO
Productive Connectivity
Autor/a

Martin Olmos

Fecha de publicación

26 de abril de 2024

La mayoría de los países de la región tienen algún tipo de estrategia más o menos definida y articulada para mejorar la conectvidad digital de las poblaciones vulnerables, aquellas que viven en zonas de baja densidad poblacional donde a veces el sector privado por sí solo no tiene los incentivos para invertir en infraestrutura, o para llevar la conectividad a servicios de educación y salud. Sin embargo, no siempre se ha pensado en la conectividad productiva, es decir, en cómo la conectividad puede mejorar la productividad de las empresas y de los trabajadores.

Un presupuesto importante para llegar con conectividad a un lugar es que existan redes troncales que permitan luego desarrollar la denominada “última milla” desde estas redes hasta los hogares y empresas. Argentina, por ejemplo, cuenta con la Red Federal de Fibra Óptica (REFEFO) gestionada por ARSAT, que es una red troncal que atraviesa las 23 provincias del país, llegando a unas 1.300 localidades, muchas de las cuales tienen poblaciones de menos de 10.000 habitantes. Por supuesto que existen también redes troncales de fibra óptica de operadores privados, pero el tendido de las mismas y la ubicación de los nodos de conexión no está disponible públicamente.

Pero volviendo al punto anterior, analicemos el potencial de la REFEFO para mejorar la conectividad productiva. Tomemos por ejemplo el sector agropecuario, que es uno de los más importantes de la economía argentina y el mayor generador de divisas.

Podemos utilizar los datos del ex Ministerio de Desarrollo Productivo para georrefenciar las empresas agropecuarias y calcular la distancia de cada una de ellas al nodo de la REFEFO más cercano y luego analizar la distribución de estas distancias.

En primer lugar, obtenemos, filtramos y cruzamos los datos necesarios para el análisis:

Código
import pandas as pd
import geopandas as gpd
from requests import Request
from shapely.geometry import box

# Obtengo los datos de establecimientos productivos
estab = pd.read_csv('https://cdn.produccion.gob.ar/cdn-cep/establecimientos-productivos/distribucion_establecimientos_productivos_sexo.csv')

# Obtengo datos del nomenclador de AFIP
clae = pd.read_csv('https://cdn.produccion.gob.ar/cdn-cep/clae_agg.csv')

# Uno los datos de establecimientos con el nomenclador
estab = estab.merge(clae[['clae6', 'letra_desc']], left_on='clae6', right_on='clae6')

# Filtro los del sector agropecuario
estab_agro = estab[estab['letra_desc'] == ' AGRICULTURA, GANADERÍA, CAZA, SILVICULTURA Y PESCA']

# Transformo los datos de establecimientos a un GeoDataFrame
estab_agro_gpd = gpd.GeoDataFrame(estab_agro, geometry=gpd.points_from_xy(estab_agro.lon, estab_agro.lat), crs='EPSG:4326')

# Obtengo los datos de los nodos de REFEFO
idecom_url = 'https://www.idecom.gob.ar/geoserver/ows'
params = {
    'service': 'wfs',
    'version': '1.3.0',
    'request': 'GetFeature',
    'typeName': 'idera:a010504-NODOS-FO',
    'outputFormat': 'json'
}

refefo_nodos_url = Request('GET', idecom_url, params=params).prepare().url

refefo_nodos = gpd.read_file(refefo_nodos_url)

# Obtengo los datos de la geometría de las provincias
ign_url = 'https://wms.ign.gob.ar/geoserver/ows'
params = {
    'service': 'wfs',
    'version': '1.1.0',
    'request': 'GetFeature',
    'typeName': 'ign:provincia',
    'outputFormat': 'json'
}

prov_url = Request('GET', ign_url, params=params).prepare().url
prov = gpd.read_file(prov_url)

# Recorto las provincias a la parte continental de Argentina
bbox = (-76.36532,
        -56.75009,
        -51.20850,
        -20.91625)
bbox = gpd.GeoSeries([box(*bbox)], crs=prov.crs)

prov_clipped = gpd.clip(prov, bbox)

# Cruzo los establecimientos agropecuarios con el nodo de REFEFO más cercano y obtengo la distancia
estab_agro_refefo_gpd = estab_agro_gpd.to_crs(crs=3857).sjoin_nearest(refefo_nodos.to_crs(3857), how='left', distance_col='distance')

Luego vamos a plotear en un mapa cada uno de los establecimientos agropecuarios y asignarle un color en función de la distancia con el nodo de la REFEFO más cercano.

Código
from matplotlib import cm
import matplotlib as mpl
import matplotlib.pyplot as plt

# Size
fig_size_bar = (7, 4)
size_labels = 10
size_tick_labels = 8

fuente_bar_pos_x = 0.0
fuente_bar_pos_y = -0.4

fuente_map_pos_x = -74.0
fuente_map_pos_y = -59.0

fontname = 'Avenir'
font_weight = 'ultralight'

norm = mpl.colors.Normalize(vmin=0, vmax=150000)

fig, ax = plt.subplots(figsize=(10, 10))

prov_clipped.boundary.plot(ax=ax, color='black', linewidth=0.5)

estab_agro_refefo_gpd.to_crs('EPSG:4326').plot(ax=ax, c=estab_agro_refefo_gpd['distance'], markersize=5, alpha=0.5, legend=True)

ax.set_axis_off()

cbar = fig.colorbar(cm.ScalarMappable(norm), ax=ax, orientation='horizontal')
cbar.set_label('Distancia a nodo de red (m)', fontname=fontname, fontsize=size_labels, weight=font_weight)
cbar.ax.tick_params(labelsize=size_tick_labels)
plt.show()

Mapa de Establecimientos Agropecuarios y Distancia a Nodo de REFEFO

Además, vamos a plotear el histograma de las distancias para poder analizar su distribución.

Código
import matplotlib.ticker as mticker
import numpy as np

color1 = [160.0/255.0, 160.0/255.0, 160.0/255.0, 1.0]
color2 = [0.0, 200.0/255.0, 200.0/255.0, 1.0]
color3 = [0.0, 255.0/255.0, 255.0/255.0, 1.0]
color4 = [94.0/255.0, 144.0/255.0, 227.0/255.0, 1.0]
color5 = [111.0/255.0, 109.0/255.0, 163.0/255.0, 1.0]

colors = [color1, color2, color3, color4, color5]

# Style
def crossval_style(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['left'].set_visible(False)
    ax.spines['bottom'].set_visible(False)
    ax.grid(axis='y', linestyle='-', alpha=0.4)

counts, bins = np.histogram(estab_agro_refefo_gpd[estab_agro_refefo_gpd['distance'] < 150000]['distance'], bins=15)

density = counts / np.sum(counts)

fig, ax = plt.subplots(figsize=(7, 4))

# ax = estab_agro_refefo_gpd[estab_agro_refefo_gpd['distance'] < 150000]['distance'].hist(density=True, bins=15)
ax.hist(bins[:-1], bins, weights=density, color=colors[1])

# Format the yticklabels to show actual proportions
# ax.yaxis.set_major_formatter(mticker.PercentFormatter(xmax=0.0001))
ax.yaxis.set_major_formatter(mticker.PercentFormatter(xmax=1))

# Set the font family and size of the x-axis label
ax.set_xlabel('Distancia (m)', fontname=fontname, fontsize=size_labels, weight=font_weight)

# Set the font family and size of the y-axis label
ax.set_ylabel('Proporción', fontname=fontname, fontsize=size_labels, weight=font_weight)

# Set the font family and size of the x-axis tick labels
ax.set_xticklabels(ax.get_xticklabels(), fontname=fontname, fontsize=size_tick_labels, weight=font_weight)

# Set the font family and size of the y-axis tick labels
ax.set_yticklabels(ax.get_yticklabels(), fontname=fontname, fontsize=size_tick_labels, weight=font_weight)

crossval_style(ax)

ax.text(x = fuente_bar_pos_x, y = -0.3, s = f"Fuente: Elaboración propia en base a datos del CEP XXI e IDECOM", transform=ax.transAxes, fontname=fontname, fontsize=size_tick_labels, weight=font_weight)

plt.show()

Histograma de Distancias a Nodo de REFEFO

Como se puede observar en el mapa y en el histograma, la mayoría de los establecimientos agropecuarios se encuentran a menos de 10 km de un nodo de la REFEFO. Para obtener los números precisos observemos la media y los cuartiles de las distancias.

Código
estab_agro_refefo_gpd['distance'].describe()

La media de las distancias de establecimientos agropecuarios al nodo de REFEFO más cercano es de 25.544 metros o 25,5 KMs. Sin embargo, como se observa en el histograma, las distancias no tienen una distribución normal sino que se trata de una distribución asimétrica a la derecha, con la mayor cantidad de distancias con valores bajos y unas pocas distancias con valores muy altos. En estos casos, la mediana es más representativa que la media. Aquí la mediana es de 8.580 metros u 8,6 KMs. Esto quiere decir que el 50% de los establecimientos agropecuarios se encuentran a menos de 8,6 KMs de un nodo de REFEFO. Finalmente, el tercer cuartil es de 35.895 metros o casi 36 KMs, lo que significa que el 75% de los establecimientos agropecuarios se encuentran a menos de 36 KMs de un nodo de REFEFO.

Hay muchas formas de mejorar este análisis preliminar pero esta primera aproximación parece indicar que la distancia a redes troncales no debería ser un impedimento para el desarrollo de la conectividad rural productiva en la Argentina.