|
5 | 5 | "id": "f4324d27", |
6 | 6 | "metadata": {}, |
7 | 7 | "source": [ |
8 | | - "<a href=\"https://colab.research.google.com/github/fralfaro/MAT281_2022/blob/main/labs/lab_10/lab_10.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n", |
| 8 | + "<a href=\"https://colab.research.google.com/github/fralfaro/MAT281/blob/main/docs/labs/lab_10.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n", |
9 | 9 | "\n", |
10 | 10 | "\n", |
11 | 11 | "# MAT281 - Laboratorio N°10\n", |
12 | 12 | "\n", |
13 | | - "<a id='p1'></a>\n", |
14 | | - "## I.- Problema 01\n", |
| 13 | + "**Objetivo**: Analizar y modelar series temporales de datos delictivos en Montreal, aplicando métodos estadísticos y de aprendizaje automático para la predicción.\n", |
15 | 14 | "\n", |
16 | | - "Lista de actos delictivos registrados por el Service de police de la Ville de Montréal (SPVM).\n", |
| 15 | + "> **Nota**: Puede ayudarse de algún asistente virtual como **ChatGPT, Gemini** u otros, así como del autocompletado de **Google Colab**, para avanzar en este laboratorio debido a su extensión.\n" |
| 16 | + ] |
| 17 | + }, |
| 18 | + { |
| 19 | + "cell_type": "markdown", |
| 20 | + "id": "b4b1c4d4", |
| 21 | + "metadata": {}, |
| 22 | + "source": [ |
| 23 | + "### Conjunto de datos\n", |
17 | 24 | "\n", |
18 | 25 | "\n", |
19 | | - "<img src=\"http://henriquecapriles.com/wp-content/uploads/2017/02/femina_detenida-1080x675.jpg\" width=\"480\" height=\"360\" align=\"center\"/>\n", |
20 | 26 | "\n", |
21 | | - "El conjunto de datos en estudio `interventionscitoyendo.csv` corresponde a todos los delitos entre 2015 y agosto de 2020en Montreal. Cada delito está asociado en grandes categorías, y hay información sobre la ubicación, el momento del día, etc.\n", |
| 27 | + "<img src=\"https://svgsilh.com/svg/3350822.svg\" width=\"350\" align=\"center\"/>\n", |
22 | 28 | "\n", |
23 | | - "> **Nota**: Para más información seguir el siguiente el [link](https://donnees.montreal.ca/ville-de-montreal/actes-criminels)." |
| 29 | + "\n", |
| 30 | + "El conjunto de datos **`interventionscitoyendo.csv`** proviene del *Service de police de la Ville de Montréal* (SPVM) y contiene el registro de todos los **actos delictivos ocurridos en Montreal entre 2015 y agosto de 2020**.\n", |
| 31 | + "\n", |
| 32 | + "Cada incidente está clasificado en **categorías generales de delito** e incluye información contextual como la **ubicación geográfica**, la **fecha y hora** del suceso, así como otros atributos relevantes para el análisis.\n", |
| 33 | + "\n", |
| 34 | + "Este dataset resulta especialmente útil para estudios de **series temporales**, ya que permite agrupar los delitos por intervalos de tiempo (días, semanas, meses) y analizar patrones de comportamiento delictual en la ciudad.\n", |
| 35 | + "\n", |
| 36 | + "> **Nota**: Puede consultarse más información oficial en el [portal de datos abiertos de Montreal](https://donnees.montreal.ca/ville-de-montreal/actes-criminels).\n" |
24 | 37 | ] |
25 | 38 | }, |
26 | 39 | { |
27 | 40 | "cell_type": "code", |
28 | | - "execution_count": 1, |
| 41 | + "execution_count": 2, |
29 | 42 | "id": "d7c49bbd", |
30 | 43 | "metadata": {}, |
31 | 44 | "outputs": [], |
|
52 | 65 | }, |
53 | 66 | { |
54 | 67 | "cell_type": "code", |
55 | | - "execution_count": 2, |
| 68 | + "execution_count": 3, |
56 | 69 | "id": "b6a6ae12", |
57 | 70 | "metadata": {}, |
58 | 71 | "outputs": [], |
|
205 | 218 | }, |
206 | 219 | { |
207 | 220 | "cell_type": "code", |
208 | | - "execution_count": 3, |
| 221 | + "execution_count": 6, |
209 | 222 | "id": "94c2e804", |
210 | 223 | "metadata": {}, |
211 | 224 | "outputs": [ |
|
316 | 329 | "13686 -73.575381 45.562090 " |
317 | 330 | ] |
318 | 331 | }, |
319 | | - "execution_count": 3, |
| 332 | + "execution_count": 6, |
320 | 333 | "metadata": {}, |
321 | 334 | "output_type": "execute_result" |
322 | 335 | } |
|
328 | 341 | " 'Introduction', 'Méfait','Vol dans / sur véhicule à moteur', 'Vol de véhicule à moteur',\n", |
329 | 342 | "]\n", |
330 | 343 | "\n", |
331 | | - "df = pd.read_csv(\"https://raw.githubusercontent.com/fralfaro/MAT281_2022/main/labs/lab_10/data/interventionscitoyendo.csv\", sep=\",\", encoding='latin-1')\n", |
| 344 | + "df = pd.read_csv(\"https://raw.githubusercontent.com/fralfaro/MAT281/main/docs/labs/data/interventionscitoyendo.csv\", sep=\",\", encoding='latin-1')\n", |
332 | 345 | "df.columns = df.columns.str.lower()\n", |
333 | 346 | "df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')\n", |
334 | 347 | "\n", |
|
364 | 377 | "id": "8c4d30b7", |
365 | 378 | "metadata": {}, |
366 | 379 | "source": [ |
367 | | - "El objetivo de este laboratorio es poder realizar un análisis completo del conjunto de datos en estudio, para eso debe responder las siguientes preguntas:\n", |
368 | 380 | "\n", |
369 | | - "1. Realizar un gráfico para cada serie temporal $y\\_{si}, i =1,2,3,4$.\n" |
| 381 | + "\n", |
| 382 | + "El objetivo de este laboratorio es realizar un **análisis integral** del conjunto de datos, aplicando técnicas de visualización y modelado de series temporales. Para ello, se deben abordar las siguientes tareas:\n", |
| 383 | + "\n", |
| 384 | + "1. **Visualizar las series temporales** \\$y\\_{si}, ; i=1,2,3,4\\$, generando gráficos que permitan identificar patrones, tendencias y estacionalidades.\n", |
| 385 | + "\n" |
370 | 386 | ] |
371 | 387 | }, |
372 | 388 | { |
|
384 | 400 | "id": "cc6afc99", |
385 | 401 | "metadata": {}, |
386 | 402 | "source": [ |
387 | | - "2. Escoger alguna serie temporal $y\\_{si}, i =1,2,3,4$. Luego:\n", |
388 | 403 | "\n", |
389 | | - "* Realizar un análisis exploratorio de la serie temporal escogida\n", |
390 | | - "* Aplicar el modelo de pronóstico $SARIMA(p,d,q)x(P,D,Q,S)$, probando varias configuraciones de los hiperparámetros. Encuentre la mejor configuración. Concluya.\n", |
391 | | - "* Para el mejor modelo encontrado, verificar si el residuo corresponde a un ruido blanco.\n", |
392 | 404 | "\n", |
393 | | - "> **Hint**: Tome como `target_date` = '2021-01-01'. Recuerde considerar que su columna de valores se llama `pdq`.\n" |
| 405 | + "1. Seleccione una de las series temporales \\$y\\_{si}, ; i=1,2,3,4\\$ y desarrolle lo siguiente:\n", |
| 406 | + "\n", |
| 407 | + "* **Análisis exploratorio**: examine la serie elegida identificando patrones, tendencias y posibles estacionalidades.\n", |
| 408 | + "* **Modelado con SARIMA**: ajuste un modelo \\$SARIMA(p,d,q) \\times (P,D,Q,S)\\$ probando distintas configuraciones de hiperparámetros. Compare resultados, seleccione la mejor configuración y justifique su elección.\n", |
| 409 | + "* **Validación del modelo**: evalúe los residuos del modelo óptimo y determine si se comportan como **ruido blanco**.\n", |
| 410 | + "\n", |
| 411 | + "> **Nota**: Utilice como `target_date` = `'2021-01-01'`. Recuerde que la columna de valores se llama `pdq`.\n", |
| 412 | + "\n" |
394 | 413 | ] |
395 | 414 | }, |
396 | 415 | { |
|
490 | 509 | "id": "5070f8c3", |
491 | 510 | "metadata": {}, |
492 | 511 | "source": [ |
493 | | - "3. Resuelva el ejercicio anterior utilizando la librería de `Prophet`." |
| 512 | + "\n", |
| 513 | + "\n", |
| 514 | + "\n", |
| 515 | + "3. Resuelva el ejercicio anterior utilizando la librería **`Prophet`**, desarrollada por Facebook para el modelado de series temporales.\n", |
| 516 | + "\n", |
| 517 | + "* **Ajuste del modelo**: entrene un modelo con `Prophet` sobre la misma serie seleccionada en el punto anterior.\n", |
| 518 | + "* **Evaluación del desempeño**: compare la capacidad predictiva de `Prophet` frente al modelo **SARIMA** previamente ajustado, considerando métricas de error (por ejemplo, MAE, RMSE o MAPE).\n", |
| 519 | + "* **Análisis comparativo**: discuta las diferencias en los supuestos de ambos métodos, su facilidad de implementación y la calidad de las predicciones obtenidas.\n", |
| 520 | + "* **Conclusiones**: señale en qué situaciones `Prophet` puede ser preferible a SARIMA y viceversa.\n" |
494 | 521 | ] |
495 | 522 | }, |
496 | 523 | { |
|
514 | 541 | ], |
515 | 542 | "metadata": { |
516 | 543 | "kernelspec": { |
517 | | - "display_name": "Python 3 (ipykernel)", |
| 544 | + "display_name": "docs-py3.10", |
518 | 545 | "language": "python", |
519 | 546 | "name": "python3" |
520 | 547 | }, |
|
528 | 555 | "name": "python", |
529 | 556 | "nbconvert_exporter": "python", |
530 | 557 | "pygments_lexer": "ipython3", |
531 | | - "version": "3.8.10" |
| 558 | + "version": "3.10.11" |
532 | 559 | } |
533 | 560 | }, |
534 | 561 | "nbformat": 4, |
|
0 commit comments