Por: Julia Torrez
Paso 1: Definición del Problema
Objetivo del Proyecto: Simular y analizar la propagación de COVID-19 en una comunidad ficticia para evaluar la efectividad de diversas medidas preventivas.
Paso 2: Metodología
2.1 Simulación de Datos Ficticios
Generaremos datos ficticios que representan la información sobre la infección en la comunidad a lo largo del tiempo.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Generar datos ficticios
personas = 500
dias = 120
fechas = pd.date_range('2022-01-01', periods=dias, freq='D')
datos = {'Fecha': [], 'Infectados': [], 'Recuperados': [], 'Susceptibles': []}
# Inicialización de la simulación
infectados_iniciales = 5
recuperados_iniciales = 0
susceptibles_iniciales = personas - infectados_iniciales - recuperados_iniciales
for fecha in fechas:
datos['Fecha'].append(fecha)
datos['Infectados'].append(infectados_iniciales)
datos['Recuperados'].append(recuperados_iniciales)
datos['Susceptibles'].append(susceptibles_iniciales)
nuevos_infectados = np.random.randint(0, 10)
nuevos_recuperados = np.random.randint(0, 5)
infectados_iniciales += nuevos_infectados
recuperados_iniciales += nuevos_recuperados
susceptibles_iniciales = personas - infectados_iniciales - recuperados_iniciales
# Crear un DataFrame
df = pd.DataFrame(datos)
2.2 Modelado de la Propagación
Modelaremos la propagación del virus aplicando un modelo simple.
# Parámetros del modelo
tasa_contagio = 0.03
tasa_recuperacion = 0.02
# Simulación de la propagación
for i in range(1, len(df)):
nuevos_infectados = np.round(df['Susceptibles'][i - 1] * tasa_contagio * df['Infectados'][i - 1] / personas)
nuevos_recuperados = np.round(df['Infectados'][i - 1] * tasa_recuperacion)
df.at[i, 'Infectados'] = df['Infectados'][i - 1] + nuevos_infectados - nuevos_recuperados
df.at[i, 'Recuperados'] = df['Recuperados'][i - 1] + nuevos_recuperados
df.at[i, 'Susceptibles'] = personas - df['Infectados'][i] - df['Recuperados'][i]
# Visualización de la simulación
plt.figure(figsize=(10, 6))
plt.plot(df['Fecha'], df['Infectados'], label='Infectados')
plt.plot(df['Fecha'], df['Recuperados'], label='Recuperados')
plt.plot(df['Fecha'], df['Susceptibles'], label='Susceptibles')
plt.xlabel('Fecha')
plt.ylabel('Número de Personas')
plt.title('Simulación de Propagación de COVID-19')
plt.legend()
plt.show()
2.3 Análisis de resultados
Calcular estadísticas descriptivas y analizar la efectividad de las medidas preventivas.
# Estadísticas descriptivas
estadisticas = df.describe()
# Análisis de la efectividad de medidas preventivas
porcentaje_reduccion_contagio = 0.5
df['Infectados_Preventiva'] = df['Infectados'] * (1 - porcentaje_reduccion_contagio)
# Visualización de resultados con y sin medidas preventivas
plt.figure(figsize=(10, 6))
plt.plot(df['Fecha'], df['Infectados'], label='Infectados Sin Prevención')
plt.plot(df['Fecha'], df['Infectados_Preventiva'], label='Infectados Con Prevención')
plt.xlabel('Fecha')
plt.ylabel('Número de Personas Infectadas')
plt.title('Efectividad de Medidas Preventivas')
plt.legend()
plt.show()
Paso 3: Resultados y Recomendaciones
Analizar los resultados y proporcionar recomendaciones basadas en la simulación y análisis de la propagación.
# Resultados
print(estadisticas)
# Recomendaciones
if df['Infectados'].max() > 0:
print("Se recomienda implementar medidas preventivas para reducir la propagación del virus.")
else:
print("Las medidas preventivas han sido efectivas en controlar la propagación del virus.")



No hay comentarios:
Publicar un comentario