Extrae la centralidad de grado media día a día en la partición de estudiantes
Aquí vas a comprobar si la centralidad de grado media en todos los nodos está correlacionada con el número de aristas que se representan a lo largo del tiempo. Puede que no haya necesariamente una correlación fuerte, y lo investigarás para ver si es así.
Este ejercicio forma parte del curso
Análisis de redes intermedio en Python
Instrucciones del ejercicio
- Instancia un nuevo grafo llamado
G_subque contenga un subconjunto de aristas. - Añade nodos desde
G, incluyendo los metadatos de los nodos. - Añade las aristas que cumplan los criterios, usando el método
.add_edges_from(). - Obtén la proyección de estudiantes
G_student_suba partir deG_subusando la funciónnx.bipartite.projected_graph(). - Calcula la centralidad de grado de la proyección de estudiantes usando
nx.degree_centrality()(no uses la versión bipartita). - Añade la centralidad de grado media a la lista
mean_dcs. Asegúrate de convertir primerodc.values()en una lista. - Pulsa "Enviar respuesta" para ver la gráfica.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
from datetime import datetime, timedelta
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
# Initialize a new list: mean_dcs
mean_dcs = []
curr_day = dayone
td = timedelta(days=2)
while curr_day < lastday:
if curr_day.day == 1:
print(curr_day)
# Instantiate a new graph containing a subset of edges: G_sub
G_sub = ____
# Add nodes from G
G_sub.____(____)
# Add in edges that fulfill the criteria
G_sub.____([(u, v, d) for u, v, d in G.edges(data=True) if d['date'] >= curr_day and d['date'] < curr_day + td])
# Get the students projection
G_student_sub = ____
# Compute the degree centrality of the students projection
dc = ____
# Append mean degree centrality to the list mean_dcs
mean_dcs.____(np.mean(____(dc.values())))
# Increment the time
curr_day += td
plt.plot(mean_dcs)
plt.xlabel('Time elapsed')
plt.ylabel('Degree centrality.')
plt.show()