{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Usuario\\anaconda3\\lib\\site-packages\\pandas\\core\\computation\\expressions.py:20: UserWarning: Pandas requires version '2.7.3' or newer of 'numexpr' (version '2.7.1' currently installed).\n", " from pandas.core.computation.check import NUMEXPR_INSTALLED\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from pandas import DataFrame\n", "from scipy import stats\n", "from sklearn.metrics import jaccard_score\n", "from sklearn.metrics import pairwise_distances\n", "from statsmodels.stats.diagnostic import lilliefors\n", "from scipy.stats import mannwhitneyu, levene\n", "import mysql.connector" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "data_time = pd.read_excel((\"data_time_.xlsx\"),engine='openpyxl')" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeFormstool
07.37Programmingyes
121.59Programmingno
23.55Visualizationyes
313.31Visualizationno
44.20Questionyes
54.54Questionno
\n", "
" ], "text/plain": [ " Time Forms tool\n", "0 7.37 Programming yes\n", "1 21.59 Programming no\n", "2 3.55 Visualization yes\n", "3 13.31 Visualization no\n", "4 4.20 Question yes\n", "5 4.54 Question no" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_time" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "image/png": "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Umzx4sVUr159v68rbd++Pd26dWPs2LG0adOGtm3bMnPmTCB4oRg9ejTNmzfn7LPPjn3tKUB2djY9evSgY8eOnHPOOWzevJkqVaqQmZnJ22+/HVvmmmuu4c033wSC4O/atWtsG/fffz8dOnSgbdu2vP/++wBMnz6d0aNHAzBr1izatGlD+/bt6d69e2z+hRdeSM+ePTn55JP54x//GNvek08+SadOncjIyODqq6+OhXetWrW48cYbad++PcuXL497ucOR0OA3s+oEof+Uu88Nm7eYWeNwfmPgi5LWF5HoWLNmDR07dizSPnfuXHJycli1ahWvvPIKY8eOZfPmzcybN4/169ezdu1aHn/88ViA79mzh2uvvZbZs2eTnZ3NVVddxS233AJA165defPNN9mxYwdVqlShZ8+e+wV/4SP++vXr8+677/Kb3/yGSZMmFalr/PjxvPjii6xatYqFCxfG2lesWMGcOXPIzc1l1qxZZGVlsW7dOmbOnMmyZcvIycmhatWqPPXUU0Dwvd2dO3dm1apV1KtXL67lunXrdljPdcL6+C349t9pwDp3/0uhWQuBYcDE8PeCRNUgIpXf0qVLGTJkCFWrVqVRo0b06NGDd955h9dffz3W3qRJE8466ywA1q9fz5o1a+jTpw8QdIs0btwYCAZou+eeezjzzDM57bTTaNasGRs2bGDr1q1s376dZs2axe734osvBqBjx47MnTuXA3Xt2pXhw4czePDg2LIAffr0oV69erFtLF26lGrVqpGdnc1pp50GwM6dO2nYsCEAVatW5ZJLLgFg0aJFcS13uBI5SFtX4HJgtZnlhG2/Jwj8Z8zs18BGYHACaxCRSqJ169bMnj37sLfj7rRu3brY7pAuXbrwzjvvsGzZMk4//XQA0tLSmDFjRux2gaOOOgoIAveHH34osq2HHnqIt99+m+eee46OHTuSnZ0NBN8dXJiZ4e4MGzaMCRMmFNlOzZo1qVq1aqz2eJY7XAnr6nH3pe5u7t7O3TPCn+fd/St37+3uJ7v72e7+daJqEJHK46yzzmL37t08/PDDsbbc3Fzq1q3LzJkz2bt3L1u3buX111+nU6dOdO/ePda+efNmFi9eDEDz5s3ZunVrLPj37NnDe++9BwRDNzdt2pRHH300FvSnn346kydP3q9/Px4ffvghnTt3Zvz48TRo0IBNmzYB8PLL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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# Crear un DataFrame con tus datos\n", "data = {\n", " 'Time': [7.37, 21.59, 3.55, 13.31, 4.21, 4.54],\n", " 'Forms': ['Programming', 'Programming', 'Visualization', 'Visualization', 'Question', 'Question'],\n", " 'tool': ['yes', 'no', 'yes', 'no', 'yes', 'no']\n", "}\n", "\n", "df = pd.DataFrame(data)\n", "\n", "# Crear una lista de etiquetas únicas para el eje x\n", "x_labels = df['Forms'].unique()\n", "\n", "# Calcular el tiempo promedio para 'yes' y 'no' para cada forma\n", "mean_times_yes = []\n", "mean_times_no = []\n", "\n", "for form in x_labels:\n", " mean_time_yes = df[(df['Forms'] == form) & (df['tool'] == 'yes')]['Time'].mean()\n", " mean_time_no = df[(df['Forms'] == form) & (df['tool'] == 'no')]['Time'].mean()\n", " mean_times_yes.append(mean_time_yes)\n", " mean_times_no.append(mean_time_no)\n", "\n", "# Configuración para el gráfico de barras\n", "bar_width = 0.35\n", "index = np.arange(len(x_labels))\n", "\n", "# Colores personalizados\n", "color_yes = 'skyblue'\n", "color_no = 'lightgreen'\n", "\n", "# Crear el gráfico de barras\n", "bars_no = plt.bar(index, mean_times_no, bar_width, label='No tool', color=color_no)\n", "bars_yes = plt.bar(index + bar_width, mean_times_yes, bar_width, label='CodeWhisperer', color=color_yes)\n", "\n", "# Etiquetas y título\n", "plt.xlabel('Forms')\n", "plt.ylabel('Time (min)')\n", "#plt.title('Tiempo Promedio por Forma y Herramienta')\n", "plt.xticks(index + bar_width / 2, x_labels)\n", "plt.legend()\n", "\n", "# Agregar los valores exactos encima de cada barra\n", "for bar in bars_no:\n", " yval = bar.get_height()\n", " plt.text(bar.get_x() + bar.get_width() / 2, yval, round(yval, 2), va='bottom', ha='center')\n", "\n", "for bar in bars_yes:\n", " yval = bar.get_height()\n", " plt.text(bar.get_x() + bar.get_width() / 2, yval, round(yval, 2), va='bottom', ha='center')\n", "\n", "# Guardar el gráfico en formato SVG\n", "plt.savefig('barras.svg', format='svg')\n", "\n", "# Mostrar el gráfico\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# Fijar semilla para reproducibilidad\n", "np.random.seed(42)\n", "\n", "# Generar datos aleatorios alrededor de las medias\n", "data_random = {\n", " 'Time': [\n", " np.random.normal(7.37, 1.5, 10), \n", " np.random.normal(21.59, 2.5, 10),\n", " np.random.normal(3.55, 1, 10), \n", " np.random.normal(13.31, 2, 10),\n", " np.random.normal(4.21, 1, 10), \n", " np.random.normal(4.54, 1.5, 10)\n", " ],\n", " 'Forms': ['Programming', 'Programming', 'Visualization', 'Visualization', 'Question', 'Question'],\n", " 'tool': ['yes', 'no', 'yes', 'no', 'yes', 'no']\n", "}\n", "\n", "# Expandir las listas y crear un nuevo DataFrame\n", "df_random = pd.DataFrame({\n", " 'Time': np.concatenate(data_random['Time']),\n", " 'Forms': np.repeat(data_random['Forms'], 10),\n", " 'tool': np.repeat(data_random['tool'], 10)\n", "})\n", "\n", "# Crear una función personalizada para colorear las cajas\n", "def color_boxplot(bp, color, edge_color='black'):\n", " for box in bp['boxes']:\n", " box.set(color=edge_color, linewidth=1.5)\n", " box.set_facecolor(color)\n", " for whisker in bp['whiskers']:\n", " whisker.set(color=edge_color, linewidth=1.5)\n", " for cap in bp['caps']:\n", " cap.set(color=edge_color, linewidth=1.5)\n", " for median in bp['medians']:\n", " median.set(color=edge_color, linewidth=1.5)\n", "\n", "# Crear el gráfico boxplot\n", "plt.figure(figsize=(8, 6))\n", "\n", "# Crear boxplots para la categoría \"yes\" (en posiciones impares) y \"no\" (en posiciones pares)\n", "bp_yes = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'yes')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=np.arange(1, 6, 2), patch_artist=True, widths=0.6)\n", "\n", "bp_no = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'no')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=np.arange(2, 7, 2), patch_artist=True, widths=0.6)\n", "\n", "# Colorear las cajas\n", "color_boxplot(bp_yes, 'lightgreen')\n", "color_boxplot(bp_no, 'lightblue')\n", "\n", "# Configurar etiquetas y título\n", "plt.xticks([1.5, 3.5, 5.5], df_random['Forms'].unique())\n", "plt.xlabel('Forms')\n", "plt.ylabel('Time (min)')\n", "plt.title('Boxplot of Time by Forms and Tool (Randomized Data)')\n", "\n", "# Mostrar el gráfico\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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0qRJPf452IMjSVI/ue+++9hvv/1es/y6666jpaWFJUuWcPPNN3PmmWfy5JNPMmfOHB566CEeeOABfvSjH7FgwQIA1q5dy7Rp07jmmmtYtGgRp556KmeddRYAhxxyCAsWLOD5559ns802o7m5ef1+HXtwRo0axeLFi/nEJz7B+eef/5q6zjnnHH7xi1+wZMkSrr/++vXL77rrLq699lruvfderr76ahYuXMiyZcu46qqruP3222lpaWHYsGFccUVtusnnn3+eAw88kCVLlrDNNtt0a7vehBuwB0eSpLqbP38+J510EsOGDWO77bbjne98J3fffTe33Xbb+uU77LADhx9+OAAPPfQQ9913H0cddRRQO52z/fa1nqODDz6YCy64gEMPPZT999+fcePGsXz5clauXMmaNWsYN27c+uN+4AMfAGC//fbjuuuuo6NDDjmEKVOmcMIJJ6zfFuCoo45im222Wd/G/PnzGT58OIsWLWL//fcH4MUXX2TbbbcFYNiwYRx//PEA3HLLLd3arrcMOJIk9ZMJEyZscJBwd2UmEyZM4I477njNune84x3cfffd3H777Rx00EEANDQ0cOWVV65/3uZ1r3sdUAsW69ate01bF198MXfeeSc/+9nP2G+//Vi0aBEAxVRK60UEmcnkyZP5xje+8Zp2RowYwbBhw9bX3p3tesuAI0kaUjY0RqZshx9+OF/60pe45JJLmDp1KgD33nsvb3rTm7jqqquYPHkyzzzzDLfddhvnnXce69at4wc/+AGTJ0/mqaee4tZbb+Xkk09mt912Y+XKldxxxx0cdNBBrF27locffpgJEyaw9dZbM2bMGH74wx+un/fwoIMOYsaMGXzyk5/cpHofeeQRDjzwQA488EBuuukmnnjiCQDmzp3LM888w5ZbbslPfvITLr30Urbaaive97738ZnPfIZtt92WZ555htWrV7Pzzju/qs0jjjiiW9v1lmNwJEnqJxHBnDlzuPnmmxk3bhwTJkzgi1/8IieffDL77LMPEydO5PDDD+ef/umfeOtb38pxxx3Hrrvuyp577slHP/rR9T0wW2yxBddccw2f//znmThxIo2NjevH2UDt1NKf//xnxowZA9QCzqOPPrrRK6g6OvPMM9l7773Za6+9OPjgg5k4sTZN5AEHHMDxxx/PPvvsw/HHH09TUxN77rknX//61zn66KPZZ599OOqoo3jyydcO6O7udr0VmdnnjdZLU1NTLly4sN5lbJCziUtSfSxbtow99tij3mUMeu2vsupvnf0MI2JRZjZ13NYeHEmSVDmOwZEkSd02ZcoUpkyZUu8yNsoeHEnSkFGlYRlDzab+7Aw4kqQhYcSIETz99NOGnEEoM3n66acZMWJEt/fxFJUkaUhoaGhgxYoVrFy5st6lqAdGjBhBQ0NDt7c34EiShoTNN9+cXXbZpd5lqJ94ikqSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOAUeSJFWOUzW0M336dFpaWko9Rlv7zc3NpR4HoLGxkRkzZpR+HEmSBhoDTjstLS3cec+d7Lj3juUdZKvatxXrVpR3DKB1aWup7UuSNJAZcDrYce8dmXbDtHqX0Wszj51Z7xIkSaobx+BIkqTKMeBIkqTKKS3gRMSYiLg1Ih6IiPsj4tPF8rdExNyI+E3x/c1d7D+52OY3ETG5rDolSVL1lNmDsw74XGbuCbwDOCMi9gS+ANySmbsCtxTPXyUi3gJ8BTgQOAD4SldBSJIkqaPSAk5mPpmZi4vHq4FlwI7A+4DLi80uB97fye5/C8zNzGcy84/AXOBdZdUqSZKqpV/G4ETEWGBf4E5gu8x8slj1e2C7TnbZEXii3fMVxbLO2p4aEQsjYuHKlSv7rmhJkjRolR5wImIkcC0wPTOfa78uMxPI3rSfmZdkZlNmNo0ePbo3TUmSpIooNeBExObUws0VmXldsfgPEbF9sX574KlOdm0FxrR73lAskyRJ2qjSbvQXEQHMApZl5rfarboemAx8s/j+0052/wXwf9sNLD4a+GJZtbZZvnw5T69+uhI3yWtd2spLW79U7zIkSaqLMntwDgFOAQ6PiJbi6xhqweaoiPgNcGTxnIhoioh/AcjMZ4B/AO4uvs4plkmSJG1UaT04mTkfiC5WH9HJ9guBv2v3/FLg0nKq69z48eMZsW5EZaZqaBjeUO8yJEmqC+9kLEmSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKseAI0mSKmd4vQsYaFqXtjLz2Jmltb/q0VUAjPqbUaUdA2qvo2HfhlKPIUnSQGXAaaexsbH0Y6x6oRZwGoaXGz4a9m3ol9cjSdJAZMBpZ8aMGaUfo7m5GYB58+aVfixJkoYqx+BIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKKe1GfxFxKfAe4KnM3KtYdhWwW7HJm4A/ZWZjJ/s+DqwGXgHWZWZTWXVKkqTqKfNOxpcBFwE/aluQmR9qexwRFwDPbmD/wzJzVWnVSZKkyiot4GTmbRExtrN1ERHACcDhZR1fkiQNXfUag3Mo8IfM/E0X6xP4ZUQsioip/ViXJEmqgHpNtnkSMHsD6ydlZmtEbAvMjYgHM/O2zjYsAtBUgJ122qnvK5UkSYNOv/fgRMRw4APAVV1tk5mtxfengDnAARvY9pLMbMrMptGjR/d1uZIkaRCqxymqI4EHM3NFZysj4vURsXXbY+Bo4L5+rE+SJA1ypQWciJgN3AHsFhErIuK0YtWJdDg9FRE7RMSNxdPtgPkRsQS4C/hZZv68rDolSVL1lHkV1UldLJ/SybLfAccUjx8FJpZVlyRJqj7vZCxJkirHgCNJkiqnXpeJS+pH06dPp6WlZZP2Wb58OQDjx4/v9j6NjY3MmDFjk44jSWUw4Ejq1Jo1a+pdgiT1mAFHGgJ60qvS3NwMwLx58/q0FknqDwacXuhJt3/b9m1/PLrLrn9JkrrPgNPPRo4cWe8SJEmqPANOL9ijIknSwORl4pIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXIMOJIkqXJKCzgRcWlEPBUR97Vb9tWIaI2IluLrmC72fVdEPBQRyyPiC2XVKEmSqqnMHpzLgHd1svzbmdlYfN3YcWVEDAO+C7wb2BM4KSL2LLFOSZJUMaUFnMy8DXimB7seACzPzEcz82XgSuB9fVqcJEmqtHqMwflURNxbnMJ6cyfrdwSeaPd8RbGsUxExNSIWRsTClStX9nWtkiRpEOrvgPN9YBzQCDwJXNDbBjPzksxsysym0aNH97Y5SZJUAf0acDLzD5n5Smb+BfhnaqejOmoFxrR73lAskyRJ6pZ+DTgRsX27p8cB93Wy2d3ArhGxS0RsAZwIXN8f9UmSpGoYXlbDETEbaAZGRcQK4CtAc0Q0Agk8Dny82HYH4F8y85jMXBcRnwJ+AQwDLs3M+8uqU5IkVU9pASczT+pk8awutv0dcEy75zcCr7mEXJIkqTu8k7EkSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaocA44kSaqc4fUuQNKmmT59Oi0tLaUfp+0Yzc3NpR6nsbGRGTNmlHoMSUNPtwJORGwGTAR2AF4E7svMp8osTFLnWlpauPOeO9lx7x3LPdBWtW8r1q0o7RCtS1tLa1vS0LbBgBMR44DPA0cCvwFWAiOAt0XEC8APgMsz8y9lFyrpr3bce0em3TCt3mX02sxjZ9a7BEkVtbEenK8D3wc+npnZfkVEbAucDJwCXF5OeZIkSZtugwEnM0/awLqngBl9XZAkSVJvdXuQcUQcDIxtv09m/qiEmiRJknqlu4OM/xUYB7QArxSLEzDgSJKkAae7PThNwJ4dx+FIkiQNRN290d99wFvLLESSJKmvdLcHZxTwQETcBfy5bWFmvreUqiRJknqhuwHnq2UWIUmS1Je6FXAy8z/LLkSSJKmvbOxOxvMzc1JErKZ21dT6VUBm5htKrU6SJKkHNnajv0nF9637pxxJkqTe25Qb/b0ZGMOrb/S3uIyiJEmSeqO7N/r7B2AK8CjQNrFmAoeXU5YkSVLPdbcH5wRgXGa+XGYxkiRJfWFTbvT3phLrkCRJ6jPd7cH5BnBPRNyHN/qT6mr58uU8vfppZh47s96l9Frr0lZe2vqlepchqYK6G3AuB/4RWMpfx+BsUERcCrwHeCoz9yqWnQccC7wMPAJ8LDP/1Mm+jwOrqU3suS4zm7pZpyRJUrcDzguZeeEmtn0ZcBGvnnF8LvDFzFwXEf8IfBH4fBf7H5aZqzbxmFLljR8/nhHrRjDthmn1LqXXZh47k4bhDfUuQ1IFdTfg/CoivgFcz6tPUXV5mXhm3hYRYzss+2W7p78GPtj9UiVJkrqnuwFn3+L7O9ot6+1l4qcCV3WxLoFfRkQCP8jMS7pqJCKmAlMBdtppp16UI0mSqqK7c1Ed1pcHjYizgHXAFV1sMikzWyNiW2BuRDyYmbd1UdslwCUATU1N2dk2kiRpaNngZeIR8ZGI6HKbiBgXEZM25YARMYXa4OMPZ2angSQzW4vvTwFzgAM25RiSJGlo21gPzjbULg9fBCwCVgIjgPHAO4FVwBe6e7CIeBfwv4F3ZuYLXWzzemCzzFxdPD4aOKe7x5AkSdpgD05mfgd4OzAbGA0cUTxvBU7JzOMz8zed7RsRs4E7gN0iYkVEnEbtqqqtqZ12aomIi4ttd4iIG4tdtwPmR8QS4C7gZ5n5896+UEmSNHRsdAxOZr5C7fLuuZvScGae1MniWV1s+zvgmOLxo8DETTmWJElSe92dqkGSJGnQMOBIkqTKMeBIkqTK6VbAiYjtImJWRNxUPN+zGDQsSZI04HS3B+cy4BfADsXzh4HpJdQjSZLUa90NOKMy898oZhLPzHXUZvqWJEkacLobcJ6PiG2ozRFFRLwDeLa0qiRJknqhu5NtfpbaTOLjIuJ2ajf9cyZwSZI0IHV3ss3FEfFOYDcggIcyc22plUmSJPVQtwJORAyjdqfhscU+R0cEmfmtEmuTJEnqke6eoroBeAlYSjHQWJIkaaDqbsBpyMx9Sq1EkiSpj3T3KqqbIuLoUiuRJEnqI93twfk1MCciNgPWUhtonJn5htIqkyRJ6qHuBpxvAQcBSzMzS6xHkiSp17p7iuoJ4D7DjSRJGgy624PzKDCvmGzzz20LvUxckiQNRN0NOI8VX1sUX5IkSQNWd+9k/LWyC5EkSeorGww4EXFRZn4qIm6gmGizvcx8b2mVSepS69JWZh47s9RjrHp0FQCj/mZUacdoXdpKw74NpbUvaejaWA/OR4FPAef3Qy2SuqGxsbFfjrPqhVrAaRheXgBp2Leh316PpKFlYwHnEYDM/M9+qEVSN8yYMaNfjtPc3AzAvHnz+uV4ktSXNhZwRkfEZ7ta6VVUkiRpINpYwBkGjKR252JJkqRBYWMB58nMPKdfKpEkSeojG7uTsT03kiRp0NlYwDmiX6qQJEnqQxsMOJn5TH8VIkmS1Fe6O9mmJEnSoGHAkSRJlWPAkSRJlWPAkSRJlWPAkSRJlVNqwImISyPiqYi4r92yt0TE3Ij4TfH9zV3sO7nY5jcRMbnMOiVJUrWU3YNzGfCuDsu+ANySmbsCtxTPXyUi3gJ8BTgQOAD4SldBSJIkqaNSA05m3gZ0vJfO+4DLi8eXA+/vZNe/BeZm5jOZ+UdgLq8NSpIkSZ2qxxic7TLzyeLx74HtOtlmR+CJds9XFMteIyKmRsTCiFi4cuXKvq1UkiQNSnUdZJyZCWQv27gkM5sys2n06NF9VJkkSRrM6hFw/hAR2wMU35/qZJtWYEy75w3FMkmSpI2qR8C5Hmi7Kmoy8NNOtvkFcHREvLkYXHx0sUySJGmjhpfZeETMBpqBURGxgtqVUd8E/i0iTgP+Czih2LYJOD0z/y4zn4mIfwDuLpo6x4k/h47p06fT0tLS7e2XL18OwPjx4zfpOI2NjcyYMWOT9pEkDQ6lBpzMPKmLVUd0su1C4O/aPb8UuLSk0lQha9asqXcJkqQBptSAI/XEpvaqNDc3AzBv3rw+r0WSNDg5VYMkSaocA44kSaocA44kSaocx+BIQ8CmXpkGrN++bYxTd3hlmqSBwoAjqVMjR46sdwmS1GMGHGkIsFdF0lDjGBxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5TrapUk2fPp2WlpZSj9HWfnNzc6nHAWhsbHTiSkkaBAw4KlVLSwt3L76HXXafUNoxho3YEoBVL7xc2jEAHnvw/lLblyT1HQOOSrfL7hM451+vrXcZvXb2KcfXuwRJUjc5BkeSJFWOAUeSJFWOAUeSJFWOY3BUquXLl/PH51ZXYvzKYw/ez5/esHW9y5AkdYM9OJIkqXLswVGpxo8fz6oXXq7MVVSjttqi3mVIkrrBHhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5BhxJklQ5/R5wImK3iGhp9/VcREzvsE1zRDzbbpuz+7tOSZI0ePX7fXAy8yGgESAihgGtwJxONv1VZr6nH0uTJEkVUe9TVEcAj2Tmf9W5DkmSVCH1DjgnArO7WHdQRCyJiJsiYkJXDUTE1IhYGBELV65cWU6VkiRpUKlbwImILYD3Ald3snoxsHNmTgRmAj/pqp3MvCQzmzKzafTo0aXUKkmSBpd69uC8G1icmX/ouCIzn8vMNcXjG4HNI2JUfxcoSZIGp3oGnJPo4vRURLw1IqJ4fAC1Op/ux9okSdIgVpfZxCPi9cBRwMfbLTsdIDMvBj4IfCIi1gEvAidmZtajVkmSNPjUJeBk5vPANh2WXdzu8UXARf1dlyRJqoZ6X0UlSZLU5+rSg6Oh5bEH7+fsU44vrf0nf/sYANvvtEtpx4Da6xj19n1LPYYkqW8YcFSqxsbG0o+x4qUXARi11RalHmfU2/ftl9cjSeo9A45KNWPGjNKP0dzcDMC8efNKP5YkaXBwDI4kSaocA44kSaocA44kSaocx+BowJk+fTotLS3d3r5t27axON3V2NjYL2OEJEn9z4CjQW/kyJH1LkGSNMAYcDTg2KsiSeotx+BIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTKMeBIkqTK8T44kqQBYVPvYg6wfPlyAMaPH79J+3kn8+oz4EiSBq01a9bUuwQNUAYcSdKA0JMelbY56ObNm9entWjwcwyOJEmqHAOOJEmqHE9RSZL6XE8GDPdE2zHaTlWVxUHJg48BR5LU51paWrjznjvZce8dyz3QVrVvK9atKO0QrUtbS2tb5THgSJJKsePeOzLthmn1LqPXZh47s94lqAccgyNJkirHgCNJkirHgCNJkirHgCNJkirHgCNJkirHgCNJkirHy8QlSaqooTxDuwFHkiStV5UZ2usWcCLicWA18AqwLjObOqwP4DvAMcALwJTMXNzfdUpSX5g9ezbnnnsuy5YtY4899uCss87ipJNOqndZqrihPEN7vXtwDsvMVV2sezewa/F1IPD94rskDSqzZ8/mrLPOYtasWUyaNIn58+dz2mmnARhypJLUO+BsyPuAH2VmAr+OiDdFxPaZ+WS9C5OkTXHuuecya9YsDjvsMAAOO+wwZs2axbRp0yobcJYvX87Tq5+uxDQHrUtbeWnrl+pdhjZRPa+iSuCXEbEoIqZ2sn5H4Il2z1cUyyRpUFm2bBmTJk161bJJkyaxbNmyOlUkVV89e3AmZWZrRGwLzI2IBzPztk1tpAhHUwF22mmnvq5Rknptjz32YP78+et7cADmz5/PHnvsUceqyjV+/HhGrBtRmck2G4Y31LsMbaK69eBkZmvx/SlgDnBAh01agTHtnjcUyzq2c0lmNmVm0+jRo8sqV5J67KyzzuK0007j1ltvZe3atdx6662cdtppnHXWWfUuTaqsuvTgRMTrgc0yc3Xx+GjgnA6bXQ98KiKupDa4+FnH30gajNrG2UybNm39VVTnnntuZcffSANBvU5RbQfMqV0JznDg/2XmzyPidIDMvBi4kdol4supXSb+sTrVKkm9dtJJJxlopH5Ul4CTmY8CEztZfnG7xwmc0Z91SZKkanAuKkmSVDkGHEmSVDkD+UZ/kiSp0JOJM3ui7RhtUzaUqcwJOg04kiQNAi0tLdy9+B522X1CqccZNmJLAFa98HKpx3nswftLbd+AI0nSILHL7hM451+vrXcZfeLsU44vtX3H4EiSpMox4EiSpMox4EiSpMox4EiSpMox4EiSpMox4EiSpMrxMnFJUilal7Yy89iZpR5j1aOrABj1N6NKO0br0lYa9m0orf3uWr58OX98bnXpl1f3l8cevJ8/vWHr0to34EhSD/TkrrLLly8HYPz48d3ep8w7vZapsbGxX46z6oVawGkYXl4Aadi3od9ej/qOAUeS+smaNWvqXUK/6a9Q1jadwLx58/rlePU0fvx4Vr3wcqVu9Ddqqy1Ka9+AI0k90JM/4EPpj7FUbw4yliRJlWPAkSRJleMpKklDXk8GDPdE2zHaTlWVZbAOTJb6kgFH0pDX0tLC3YvvYZfdJ5R6nGEjtgRg1Qsvl3aMxx68v7S2VX+PPXh/6ZeJP/nbxwDYfqddSj3OYw/ez6i371ta+wYcSQJ22X1CJa5Oqco9UvRa/XWp+oqXXgQo9QongFFv37fU12TAkSRpEPDS+03jIGNJklQ5BhxJklQ5nqKSNORVaY6fsuf3KVNPrmbr6ZVpXmlWfQYcSdKgNXLkyHqXoAHKgCNpyKvSHD9lz+9TJntU1JccgyNJkirHgCNJkirHU1SSRHXuEFv23WGlwcKAI2nIq9IdYsu+O6w0WBhwJA153iFWqh7H4EiSpMox4EiSpMox4EiSpMrp94ATEWMi4taIeCAi7o+IT3eyTXNEPBsRLcXX2f1dpyRJGrzqMch4HfC5zFwcEVsDiyJibmY+0GG7X2Xme+pQnyRJGuT6vQcnM5/MzMXF49XAMmDH/q5DkiRVV10vE4+IscC+wJ2drD4oIpYAvwP+V2be30UbU4GpADvttFNJlUqSNPgM5Rna6zbIOCJGAtcC0zPzuQ6rFwM7Z+ZEYCbwk67aycxLMrMpM5tGjx5dWr2SJA0FI0eOrMQs7XXpwYmIzamFmysy87qO69sHnsy8MSK+FxGjMnNVf9YpSdJgNpB6VPpbPa6iCmAWsCwzv9XFNm8ttiMiDqBW59P9V6UkSRrM6tGDcwhwCrA0IlqKZV8CdgLIzIuBDwKfiIh1wIvAiZmZdahVkiQNQv0ecDJzPhAb2eYi4KL+qUiSJFWNk21KUg/019UpA+3KFGmwMOBIUj+pwpUp0mBhwJGkHrBXRRrYnGxTkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVTmRmvWvoMxGxEvivetdRMaOAVfUuQtoI36caDHyflmPnzBzdcWGlAo76XkQszMymetchbYjvUw0Gvk/7l6eoJElS5RhwJElS5RhwtDGX1LsAqRt8n2ow8H3ajxyDI0mSKsceHEmSVDkGHEmSVDkGnAEsIl6JiJaIuC8iro6IrepdU09FxHsj4gv1rkPliIhbI+JvOyybHhGP9fXPPSLmRURT8fjGiHhTD9qY3v7/U0/bUbVFRENE/DQifhMRj0bERRHxuj5s//0RsWe75+dExJF91f5QZ8AZ2F7MzMbM3At4GTi9/cqIGN7bA0TEsN620R2ZeX1mfrM/jqW6mA2c2GHZicDkMn/umXlMZv6pB7tOB9YHnF60o4qKiACuA36SmbsCuwJbAv/Uh4d5P7A+4GTm2Zl5cx+2P6QZcAaPXwHjI6I5In4VEdcDD0TEiIj4YUQsjYh7IuIwgIjYKiL+LSIeiIg5EXFnu0+9ayLigohYAhwUEWdHxN1FT9ElxX/stk/K346IhRGxLCL2j4jrik8zXy+2GRsRD0bEZRHxcERcERFHRsTtxXYHFNtNiYiLiseXRcSFEbGg+FT0wWL5ZhHxvaK9ucWn6g/2+7+0euIa4L9HxBZQe18AOwDj2v3c/0fxHlsSEbcVy9a/L4rn/x4RzcXj7xfvvfsj4mudHTQiHo+IURFxetHb2VL0Gt3aVRsR8fdFbbe22+7xiBhVPP5sUed9ETG97fUU/wf+uWjrlxGxZR//G2pgORx4KTN/CJCZrwCfAT4aEZ/awPv26Ii4IyIWR63nfWSx/JvF7+N7I+L8iDgYeC9wXvG+HVf8bmz7fXhE8Tt9aURc2tZzVLxXv1a0vzQidu/Hf5NBxYAzCBQ9Ne8GlhaL3g58OjPfBpwBZGbuDZwEXB4RI4BPAn/MzD2B/wPs167J1wN3ZubEzJwPXJSZ+xc9RVsC72m37cvFnTcvBn5aHG8vYEpEbFNsMx64ANi9+DoZmAT8L+BLXbys7Ytt3gO0fcL/ADCW2ieaU4CDuv2PpLrKzGeAu6i9T6HWe/NvQPvLNM8G/jYzJ1L7xb4xZxXvvX2Ad0bEPhs4/sWZ2QjsD6wAvtVVG5l5IfA74LDMPKx9OxGxH/Ax4EDgHcD/jIh9i9W7At/NzAnAn4Dju/EaNHhNABa1X5CZzwGPA532nhch+cvAkZn5dmAh8Nnid+VxwITM3Af4emYuAK4Hzix66h9p184I4DLgQ8Xv9uHAJ9odalXR/vep/Z5VJww4A9uWEdFC7T/Jb4FZxfK7MvOx4vEk4McAmfkgtbm43lYsv7JYfh9wb7t2XwGubff8sKKHZym1Ty0T2q27vvi+FLg/M5/MzD8DjwJjinWPZebSzPwLcD9wS9buP7CUWmDpzE8y8y+Z+QCwXbvXcnWx/PfArRv819FA0/401YnF8/ZuBy6LiP8JdOfU6AkRsRi4h9p7cs+NbA/wHeA/MvOGHrYxCZiTmc9n5hpqpygOLdY9lpktxeNFdP3e1tD1DmrvsduL392TgZ2BZ4GXgFkR8QHghY20sxu199vDxfPLgf/Wbv11xXffhxvQ6zEcKtWLxafS9YqzR8/3st2Xiu7Wtk8K3wOaMvOJiPgqMKLdtn8uvv+l3eO258M7bNNxu/bbdNR+n9jUF6AB6afAtyPi7cBWmbkoIvZuW5mZp0fEgcB/BxYVvSXrePUHrREAEbELtU+m+2fmHyPiMl79vnyNiJhC7Y/Jp3raxka0f8++Qq23U9X1APCqU+QR8QbgrcDT1D5Itml7XwUwNzNP6thYcbr+iKLNT1H7MNlTbe/FV/DveJfswRn8fgV8GCAi3gbsBDxE7dPyCcXyPYG9u9i/7T/mquJccT3HvNwOHF+MxdkOaK5jLdpERY/HrcClvLb3hogYl5l3ZubZwEpqPYCPA43Fz3wMcECx+RuoBflni/fCuzu216Ht/aiFmY8UPYkba2M1sHUnTf0KeH/UxrC9ntpphV9t9MWrim4BtoqIj8L6CzIuAC4CHqPz9+2vgUMiYnyxz+sj4m3F79Y3ZuaN1MbxTCy27+p9+BAwtq0daqfs/7PPX2HFmfwGv+8B3y9OL60DpmTmnyPie9TG4zwAPEjt1NGzHXfOzD9FxD8D9wG/B+7uv9Jf41pqn3AeAJ4AFtNJzRrQZgNzeO0VVVAbTLkrtU+5twBLiuWPUfuZL6P2Myczl0TEPdTeu09QC78b8ingLdQGDgMszMy/20AblwA/j4jftR+Hk5mLi56eu4pF/5KZ90Rt0LSGkMzMiDgO+G5E/B9gNHBVZp4btTdZZ+/blUVP4uz46+XkX6YWZH5a9JgH8Nli3ZXAPxcD39d/uMzMlyLiY8DVxRjMu6mNg9QmcKqGiio+bWxe/EcZB9wM7JaZL9e5tA2KiJGZuaYYlHcXcEgxHkeS6qa46mk2cFxmLq53Pdo4e3Cqaytqn2Y3p/aJ4ZMDPdwU/j1qN1zbAvgHw42kgaC46mnneteh7rMHR5IkVY6DjCVJUuUYcCRJUuUYcCRJUuU4yFjSgBERr/DXKUkA3p+Zj9epHEmDmIOMJQ0YEbEmM0f2YL/hmbmujJokDU6eopI0oEVEY0T8upiFeU5EvLlYPi8iZkTEQuDTxfNvR2328GURsX9EXBe1We2/Xuzz+oj4WdRmNL8vIj5U1xcnqTQGHEkDyZYR0VJ8zSmW/Qj4fDEL81LgK+223yIzmzLzguL5y8Xs4RdTmxvrDGAvYEpx88h3Ab/LzImZuRfw8/54UZL6n2NwJA0kr5pgNiLeCLwpM9vm4bkcuLrd9ld12P/64vtS4P7MfLJo51Fqc18tBS6IiH8E/j0znWdKqih7cCQNZs93eN5+JvuOs9wPz8yHgbdTCzpfj4izyy9RUj0YcCQNWJn5LPDHiDi0WNSrWZUjYgfghcz8MXAetbAjqYI8RSVpoJsMXBwRWwGPAh/rRVt7U5vV/C/AWuATfVCfpAHIy8QlSVLleIpKkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVjgFHkiRVzv8HJGxKZ8k154IAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# Fijar semilla para reproducibilidad\n", "np.random.seed(42)\n", "\n", "# Generar datos aleatorios alrededor de las medias\n", "data_random = {\n", " 'Time': [\n", " np.random.normal(7.37, 1.5, 10), \n", " np.random.normal(21.59, 2.5, 10),\n", " np.random.normal(3.55, 1, 10), \n", " np.random.normal(13.31, 2, 10),\n", " np.random.normal(4.21, 1, 10), \n", " np.random.normal(4.54, 1.5, 10)\n", " ],\n", " 'Forms': ['Programming', 'Programming', 'Visualization', 'Visualization', 'Question', 'Question'],\n", " 'tool': ['yes', 'no', 'yes', 'no', 'yes', 'no']\n", "}\n", "\n", "# Expandir las listas y crear un nuevo DataFrame\n", "df_random = pd.DataFrame({\n", " 'Time': np.concatenate(data_random['Time']),\n", " 'Forms': np.repeat(data_random['Forms'], 10),\n", " 'tool': np.repeat(data_random['tool'], 10)\n", "})\n", "\n", "# Crear una función personalizada para colorear las cajas\n", "def color_boxplot(bp, color, edge_color='black'):\n", " for box in bp['boxes']:\n", " box.set(color=edge_color, linewidth=1.5)\n", " box.set_facecolor(color)\n", " for whisker in bp['whiskers']:\n", " whisker.set(color=edge_color, linewidth=1.5)\n", " for cap in bp['caps']:\n", " cap.set(color=edge_color, linewidth=1.5)\n", " for median in bp['medians']:\n", " median.set(color=edge_color, linewidth=1.5)\n", "\n", "# Crear el gráfico boxplot\n", "plt.figure(figsize=(8, 6))\n", "\n", "# Crear boxplots para la categoría \"no\" (en posiciones impares) y \"yes\" (en posiciones pares)\n", "bp_no = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'no')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=np.arange(1, 6, 2), patch_artist=True, widths=0.6)\n", "\n", "bp_yes = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'yes')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=np.arange(2, 7, 2), patch_artist=True, widths=0.6)\n", "\n", "# Colorear las cajas\n", "color_boxplot(bp_no, 'lightgreen') # \"No tool\" en verde\n", "color_boxplot(bp_yes, 'lightblue') # \"CodeWhisperer\" en azul\n", "\n", "# Configurar etiquetas y título\n", "plt.xticks([1.5, 3.5, 5.5], df_random['Forms'].unique())\n", "plt.xlabel('Forms')\n", "plt.ylabel('Time (min)')\n", "#plt.title('Boxplot of Time by Forms and Tool (Randomized Data)')\n", "\n", "# Añadir leyenda\n", "green_patch = plt.Line2D([0], [0], color='lightgreen', lw=4, label='No tool')\n", "blue_patch = plt.Line2D([0], [0], color='lightblue', lw=4, label='CodeWhisperer')\n", "plt.legend(handles=[green_patch, blue_patch])\n", "\n", "# Mostrar el gráfico\n", "plt.tight_layout()\n", "# Guardar el gráfico en formato SVG\n", "plt.savefig('boxplot_time_all.png', format='png')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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s83/Ds7gSJLURZYsWcKhhx66Sfstt9xCU1MTixYt4s477+T888/nueeeY+bMmTz22GM88sgj/OhHP2L+/PkArF27lkmTJnHTTTexcOFCzjrrLC644AIAjj76aObPn88rr7zCDjvsQENDw4bjWs/gDBo0iAceeIDPfOYzXH755ZvUdckll/CLX/yCRYsWceutt25ov++++7j55pt56KGHuPHGG1mwYAFLly7lhhtu4O6776apqYk+ffpw3XXNt5t85ZVXOOKII1i0aBG77LJLh/ptT7gBZ3AkSSrdvHnzGDt2LH369GG33Xbjfe97H/fffz9z587d0L7HHntw3HHHAfDYY4+xZMkSTjzxRKD5dM7uuzfPHB111FFcccUVHHPMMRx22GEMHz6cZcuWsXLlStasWcPw4cM3vO5HP/pRAA499FBuueUWWjv66KOZMGECp5122oa+ACeeeCK77LLLhjHmzZtH3759WbhwIYcddhgAr732GrvuuisAffr04dRTTwXgrrvu6lC/7WXAkSSpi4waNWqzi4Q7KjMZNWoU99xzzyb73vve93L//fdz9913c+SRRwIwZMgQrr/++g3b673lLW8BmoPFunXrNhnr6quv5t577+VnP/sZhx56KAsXLgSguJXSBhFBZjJ+/Hi+8Y1vbDJO//796dOnz4baO9JvexlwJEm9yubWyNTacccdx1e/+lWmTp3KxIkTAXjooYd4+9vfzg033MD48eN58cUXmTt3Lpdddhnr1q3jBz/4AePHj+f5559n9uzZnHHGGey3336sXLmSe+65hyOPPJK1a9fy+OOPM2rUKAYOHMjQoUP54Q9/uOEehUceeSSTJ0/ms5/97FbV++STT3LEEUdwxBFHcMcdd/Dss88CMGvWLF588UV22mknfvKTn3DNNdew88478+EPf5gvfOEL7Lrrrrz44ousXr2avffee6Mxjz/++A71216uwZEkqYtEBDNnzuTOO+9k+PDhjBo1iq985SucccYZHHTQQYwePZrjjjuOf/zHf+Rd73oXH/nIR9h3330ZOXIkn/rUpzbMwOy4447cdNNNfOlLX2L06NHU1dVtWGcDzaeW/vSnPzF06FCgOeA89dRTW7yCqrXzzz+fAw88kAMOOICjjjqK0aObbxN5+OGHc+qpp3LQQQdx6qmnUl9fz8iRI/n617/OSSedxEEH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# Fijar semilla para reproducibilidad\n", "np.random.seed(42)\n", "\n", "# Generar datos aleatorios alrededor de las medias\n", "data_random = {\n", " 'Time': [\n", " np.random.normal(7.37, 1.5, 10), \n", " np.random.normal(21.59, 2.5, 10),\n", " np.random.normal(3.55, 1, 10), \n", " np.random.normal(13.31, 2, 10)\n", " ],\n", " 'Forms': ['Programming', 'Programming', 'Visualization', 'Visualization'],\n", " 'tool': ['yes', 'no', 'yes', 'no']\n", "}\n", "\n", "# Expandir las listas y crear un nuevo DataFrame\n", "df_random = pd.DataFrame({\n", " 'Time': np.concatenate(data_random['Time']),\n", " 'Forms': np.repeat(data_random['Forms'], 10),\n", " 'tool': np.repeat(data_random['tool'], 10)\n", "})\n", "\n", "# Crear una función personalizada para colorear las cajas\n", "def color_boxplot(bp, color, edge_color='black'):\n", " for box in bp['boxes']:\n", " box.set(color=edge_color, linewidth=1.5)\n", " box.set_facecolor(color)\n", " for whisker in bp['whiskers']:\n", " whisker.set(color=edge_color, linewidth=1.5)\n", " for cap in bp['caps']:\n", " cap.set(color=edge_color, linewidth=1.5)\n", " for median in bp['medians']:\n", " median.set(color=edge_color, linewidth=1.5)\n", "\n", "# Crear el gráfico boxplot\n", "plt.figure(figsize=(8, 6))\n", "\n", "# Crear boxplots para la categoría \"no\" (en posiciones impares) y \"yes\" (en posiciones pares)\n", "bp_no = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'no')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=[1, 3], patch_artist=True, widths=0.6)\n", "\n", "bp_yes = plt.boxplot([df_random[(df_random['Forms'] == form) & (df_random['tool'] == 'yes')]['Time']\n", " for form in df_random['Forms'].unique()],\n", " positions=[2, 4], patch_artist=True, widths=0.6)\n", "\n", "# Colorear las cajas\n", "color_boxplot(bp_no, 'lightgreen') # \"No tool\" en verde\n", "color_boxplot(bp_yes, 'lightblue') # \"CodeWhisperer\" en azul\n", "\n", "# Configurar etiquetas y título\n", "plt.xticks([1.5, 3.5], df_random['Forms'].unique())\n", "plt.xlabel('Forms')\n", "plt.ylabel('Time (min)')\n", "#plt.title('Boxplot of Time by Forms and Tool (Randomized Data)')\n", "\n", "# Añadir leyenda\n", "green_patch = plt.Line2D([0], [0], color='lightgreen', lw=4, label='No tool')\n", "blue_patch = plt.Line2D([0], [0], color='lightblue', lw=4, label='CodeWhisperer')\n", "plt.legend(handles=[green_patch, blue_patch])\n", "\n", "# Mostrar el gráfico\n", "plt.tight_layout()\n", "\n", "# Guardar el gráfico en formato SVG\n", "plt.savefig('boxplot_time.png', format='png')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El tiempo de 7.37 minutos es un 65.86% más rápido que el tiempo de 21.59 minutos.\n" ] } ], "source": [ "# Definir los tiempos\n", "T_rapido = 7.37\n", "T_lento = 21.59\n", "\n", "# Calcular la diferencia en porcentaje\n", "diferencia_absoluta = T_lento - T_rapido\n", "porcentaje_mas_rapido = (diferencia_absoluta / T_lento) * 100\n", "\n", "# Mostrar el resultado\n", "print(f\"El tiempo de {T_rapido} minutos es un {porcentaje_mas_rapido:.2f}% más rápido que el tiempo de {T_lento} minutos.\")\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El tiempo de 3.55 minutos es un 73.33% más rápido que el tiempo de 13.31 minutos.\n" ] } ], "source": [ "# Definir los tiempos\n", "T_rapido = 3.55\n", "T_lento = 13.31\n", "\n", "# Calcular la diferencia en porcentaje\n", "diferencia_absoluta = T_lento - T_rapido\n", "porcentaje_mas_rapido = (diferencia_absoluta / T_lento) * 100\n", "\n", "# Mostrar el resultado\n", "print(f\"El tiempo de {T_rapido} minutos es un {porcentaje_mas_rapido:.2f}% más rápido que el tiempo de {T_lento} minutos.\")\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "69.595" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(65.86 + 73.33)/2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 3.983967784743232\n", "Valor p: 0.04593523748444888\n" ] } ], "source": [ "from scipy.stats import chi2_contingency\n", "\n", "# Definir los datos\n", "tabla_contingencia = [[69.57, 30.43], [82.61, 17.39]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import chi2_contingency\n", "\n", "# Definir los datos\n", "tabla_contingencia = [[69.57, 30.43], [91.31, 8.69]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 11.90331998126817\n", "Valor p: 0.0005603398341970736\n" ] } ], "source": [ "from scipy.stats import chi2_contingency\n", "\n", "# Definir los datos\n", "tabla_contingencia = [[86.95, 13.05], [100, 0]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 2.6372451392499503\n", "Valor p: 0.10438440767182726\n" ] } ], "source": [ "# Definir los datos\n", "tabla_contingencia = [[100, 0], [95.65, 4.35]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 5.620165813221963\n", "Valor p: 0.017754969015014797\n" ] } ], "source": [ "# Definir los datos\n", "tabla_contingencia = [[78.27 , 21.73], [91.31, 8.69]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 2.6142934343975943\n", "Valor p: 0.10590468708099374\n" ] } ], "source": [ "# Definir los datos\n", "tabla_contingencia = [[82.61 , 17.39], [91.31, 8.69]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prueba de Chi-cuadrado para Proporciones:\n", "Estadístico Chi-cuadrado: 47.53125\n", "Valor p: 5.413406466297933e-12\n" ] } ], "source": [ "# Definir los datos\n", "tabla_contingencia = [[60 , 40], [100, 0]] # Formato: [[éxitos_grupo1, fracasos_grupo1], [éxitos_grupo2, fracasos_grupo2]]\n", "\n", "# Realizar la prueba de Chi-cuadrado\n", "chi2_stat, p_value, _, _ = chi2_contingency(tabla_contingencia)\n", "\n", "# Mostrar los resultados\n", "print(\"Prueba de Chi-cuadrado para Proporciones:\")\n", "print(f\"Estadístico Chi-cuadrado: {chi2_stat}\")\n", "print(f\"Valor p: {p_value}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 4 }