viernes, 27 de marzo de 2020

Estudio estático. Comparación de ciudades según la evolución del número de agrupaciones conexas

En el último post, explicamos en qué consistía una agrupación conexa dentro de un grafo, visualizamos de forma gráfica cómo evolucionaba el número de agrupaciones conexas conforme aumentábamos el radio de influencia de cada nodo y estudiamos si había correlación lineal al aplicar logaritmos a ambos ejes. 

En esta ocasión, vamos a comprobar si hay ciudades que presenten un comportamiento similar en este experimento para tratar de establecer similitudes entre las redes de bicicletas. Para ello, vamos a estudiar la correlación que presentan las curvas de cada una de las ciudades.

Para el cálculo de la correlación, es necesario que las curvas estén normalizadas tanto en el eje X (número de agrupaciones conexas) como en el eje Y (porcentaje de diámetro que se toma como radio). Por tanto, será necesario hacer un procesamiento previo de los datos.


NORMALIZAR EL EJE Y


Normalizar el eje Y es una tarea sencilla. Solo tenemos que dividir el número de agrupaciones conexas entre el número total de estaciones que tiene la red. Si el número de agrupaciones conexas es igual al número de estaciones, el resultado de la división será 1 (valor máximo posible) y, a medida que el número de agrupaciones disminuya, el resultado de la división tenderá a 0 (valor mínimo posible).



NORMALIZAR EL EJE X


Para normalizar el eje X necesitamos conocer cuál es el porcentaje del diámetro que hace que el número de agrupaciones conexas sea 1. Este valor no lo tenemos, así que, debemos diseñar un algoritmo que lo calcule. 

Para la investigación que estamos haciendo, no es necesario saber el valor exacto, nos basta con una buena aproximación. Si nos fijamos en cómo son las curvas, veremos que siempre son decrecientes. Podemos apoyarnos en esto para construir nuestro algoritmo.



La idea consiste en hacer un algoritmo en dos pasadas:
  • Primera pasada (de derecha a izquierda): escogemos un valor de porcentaje que sea muy alto, de manera que nos aseguremos de que, con ese porcentaje, el número de agrupaciones conexas es 1, por ejemplo, 60%. A continuación, vamos reduciendo el porcentaje una cantidad constante (step 1), por ejemplo, 1%, hasta que el número de agrupaciones conexas es mayor que 1.
  • Segunda pasada (de izquierda a derecha): incrementamos el valor de porcentaje que hemos obtenido de la primera pasada una cantidad constante (step 2), por ejemplo, 0.01%, hasta que el número de agrupaciones conexas sea 1. 
Cuanto menor sea el valor de step 2, más preciso será el resultado que se obtiene. Podríamos haber planteado un algoritmo de una única pasada empezando desde el 0% e incrementando una cantidad pequeña, si bien, el coste computacional es mucho más alto. 

Para que poder establecer la correlación, todas las ciudades deben tener la misma cantidad de valores en el eje X. Así que, vamos a tomar N valores comprendidos entre (0, Pmax] siendo Pmax el porcentaje del diámetro donde el número de agrupaciones conexas es 1. 

Supongamos que N = 100. Esto quiere decir que para cada ciudad tenemos 100 muestras en el eje X y que la primera de estas muestras es el 1% del porcentaje que hace que el número de agrupaciones conexas sea 1.

De esta forma, ya tendríamos todos nuestros datos normalizados.


MATRIZ DE CORRELACIÓN DE PEARSON


Para el calculo de la correlación, vamos a usar una función incorporada dentro de la librería de Pandas en Python. Para usarla, tenemos que crear un DataFrame que tenga una columna por cada ciudad y una fila para cada valor de agrupaciones conexas. Si tenemos 83 ciudades y hemos tomado un valor de N = 100, tendremos un DataFrame de 83 ciudades y 100 filas. En el resultado que se va a mostrar, se ha tomado un valor de N = 1000.

Importante: debemos ordenar las ciudades según el número de estaciones para que podamos estudiar si la correlación depende del número de estaciones. 

Si nuestro DataFrame se llama df, la función a aplicar sería:

df.corr(method='pearson')

El resultado es otro DataFrame que representa una matriz cuadrada que tendrá tantas filas y columnas como ciudades, es decir, 83x83. Si visualizamos el resultado como un mapa de calor, lo que se obtiene es:


Las ciudades están ordenadas según el número de estaciones de menor a mayor, las columnas situadas más a la izquierda tienen menor número de estaciones que las situadas a la derecha.

A primera vista, hay correlación alta entre muchas ciudades pero, no hay un dependencia aparente con el número de estaciones de la ciudad.



No hay comentarios:

Publicar un comentario

Teoría de Redes Complejas (Parte 1). Conceptos básicos

Para continuar con nuestro proyecto vamos a hacer un estudio aplicando teoría de grafos y de redes complejas con el objetivo de demostrar...