{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Examen IS M8 du 31/03 \n", "------\n", "Le but de cet examen est de tester si vous avez acquis les compétences enseignées sur la première partie de M8.\n", "\n", "**Consignes**\n", " - Le fichier ipynb rempli devra être soumis sur le [dépot moodle](https://moodle.insa-rouen.fr/mod/assign/view.php?id=59084)\n", " - Vous avez accès aux sites suivants pour la documentation, en plus de la fonction help(), :\n", " * https://matplotlib.org/stable/\n", " * https://numpy.org/doc/\n", " * https://docs.scipy.org/doc/scipy/reference/\n", " * https://scikit-learn.org/stable/\n", " - Le barême est indicatif et pourra être amené à changer\n", " - L'efficacité et la simplicité de votre code sera pris en compte\n", " - Afin de garantir l'équité pour tout les groupes, pas de questions. Si vous avez un doute faites au mieux. Si il y a une erreur de ma part, ce sera pris en compte.\n", " - En fin d'examen, déconnectez vous mais **n'éteignez pas** les postes.\n", "______________" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice 1 : du Python [5 points]\n", "Analysez le code suivant et trouver les 8 erreurs qui s'y sont glissées pour calculer correctement une analyse de variance et un coefficient de corrélation. \n", "Le jeu de données `X` correspond aux performances de 41 athletes pour les 10 épreuves( variable `epreuves`) durant deux competitions : JO et Decastar (variable `competition`).\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO'\n", " 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO' 'JO'\n", " 'Decastar' 'Decastar' 'Decastar' 'Decastar' 'Decastar' 'Decastar'\n", " 'Decastar' 'Decastar' 'Decastar' 'Decastar' 'Decastar' 'Decastar'\n", " 'Decastar']\n", "['100m' 'Longueur' 'Poids' 'Hauteur' '400m' '110m H' 'Disque' 'Perche'\n", " 'Javelot' '1500m' 'Points']\n", "la variance totale est de : 4689103.512195122\n", "La variance de la competition JO est de 3747890.964285714\n", "La variance de la competition Decastar est de 752970.923076923\n", "La variance interclasse est de 188241.62483248505\n", "Le rapport de corrélation est de 0.04, donc le type de compétition n'influe pas sur la différence de niveau entre athlètes\n", "-0.5986776720329979\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# on charge les bibliothèques\n", "import numpy as np\n", "import matplotlib.pyplot as plt #erreur 1, a virer\n", "\n", "################\n", "# DEBUT ZONE SANS ERREUR\n", "######################\n", "#on charge les données\n", "\n", "data = np.load('data_decath.npz')\n", "X=data['X'] # X contient toutes les perrfomances pour chaque athlète pour chaque épreuve\n", "competition = data['type_competition'] # Les competitions associées à chaque performance au decathlon (JO et Decastar)\n", "print(competition)\n", "epreuves = data['epreuves'] #La liste des épreuves\n", "print(epreuves)\n", "col_points = np.where(epreuves==\"Points\") #Le total des points pour les 10 épreuves pour chaque athlète\n", "x_points = X[:,col_points]\n", "################\n", "# FIN ZONE SANS ERREUR\n", "######################\n", "\n", "labels,effectifs = np.unique(competition,return_counts=True) # erreur 5 : oubliez le return_counts\n", "plt.pie(effectifs,labels=labels);\n", "\n", "#Analyse de la variance totale avec numpy (voir Annexe) \n", "var_total = np.sum((x_points - np.mean(x_points))**2)\n", "print(f\"la variance totale est de : {var_total}\")\n", "#decoupage des données en jo et decastar\n", "x_jo = []\n", "x_decastar = []\n", "n=x_points.shape[0]\n", "\n", "for i in range(n): #deuxieme erreur, mettre (1,n)\n", " if(competition[i] == 'JO'):\n", " x_jo.append(x_points[i])\n", " else:\n", " x_decastar.append(x_points[i])\n", "x_jo=np.array(x_jo)\n", "n_jo=x_jo.shape[0]\n", "\n", "x_decastar=np.array(x_decastar)\n", "n_decastar=x_decastar.shape[0]\n", "\n", "#variance intra classe jo et decastar\n", "var_jo = np.sum((x_jo - np.mean(x_jo))**2) # erreur 3 : mettre x_points pour la moyenne\n", "var_decastar = np.sum((x_decastar - np.mean(x_decastar))**2) #erreur 8 : mettre le **2 en dehors de la parenthèse\n", "print(f\"La variance de la competition JO est de {var_jo}\")\n", "print(f\"La variance de la competition Decastar est de {var_decastar}\")\n", "\n", "\n", "#variance interclasse\n", "var_inter_classe = n_jo*(np.mean(x_jo) - np.mean(x_points))**2\n", "var_inter_classe += n_decastar*(np.mean(x_decastar) - np.mean(x_points))**2 #erreur 4 : oublier le +\n", "\n", "print(f\"La variance interclasse est de {var_inter_classe}\")\n", "\n", "#calcul rapport de corrélation\n", "rapport_corr = (var_inter_classe)/var_total\n", "print(f\"Le rapport de corrélation est de {rapport_corr:.2f}, donc le type de compétition n'influe pas sur la différence de niveau entre athlètes\")\n", "\n", "#calcul de la corrélation entre 100m et Longueur\n", "c1 = np.where(epreuves==\"100m\")\n", "c2 = np.where(epreuves==\"Longueur\")\n", "corr = np.mean((X[:,c1] - np.mean(X[:,c1]))*(X[:,c2] - np.mean(X[:,c2]))) /(np.prod(np.std(X[:,[c1,c2]],axis=0)))\n", "# avec erreur 6 et 7 : \n", "#corr = np.mean((X[:,c1] - np.mean(X[:,c1]))*(X[:,c2] - np.mean(X))) /(np.prod(np.std(X[:,[c1,c2]])))\n", "print(corr)\n", "\n", "#Comment interprétez vous ce coefficient de corrélation ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Question bonus : Comment interprétez vous le coefficient de corrélation ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice 2 : ACP géographique [10 points]\n", "\n", "Le but de cet exercice est de faire une ACP d'un ensemble de données représentant la température mensuelle ($p = 12$) de $n=15$ villes françaises. Le code suivant permet de charger les données dans la matrice `X`, les latitudes et longitudes de chaque ville dans `latitude` et `longitude`, et enfin le nom des villes dans `villes`. L'ordre donné est consistant, c'est à dire que `X[i,:]` contient toutes les températures observées pour la ville `villes[i]` de coordonnées `latitude[i],longitude[i]`. Les mois sont renseignés dans la variable `mois`. Pour information, la latitude indique un positionnement sur l'axe Nord/Sud, et la longitude sur l'axe Est/Ouest." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "data = np.load('data_temp.npz')\n", "X = data['X'] #les données de températures\n", "latitude = data['latitude'] # les latitudes de chaque ville\n", "longitude = data['longitude'] # les longitudes de chaque ville\n", "villes = data['villes'] # le nom des villes\n", "mois = data['mois'] # les mois de chaque colonne\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualisation des données\n", " 1. Affichez une représentation des températures moyennes de l'ensemble des villes pour chaque mois sous forme de boxplots. Le graphique vous parait-il cohérent ? Observez vous des données aberrantes ? " ] }, { "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": [ "plt.boxplot(X);\n", "plt.xticks(range(1,13), mois);\n", "# cohérent une donnée aberrante pour juillet et Brest." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calcul de l'ACP\n", " 1. Normalisez les données de températures dans une variable `X_norm`" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X_norm = (X - np.mean(X, axis=0))/np.std(X,axis=0)\n", "n,p = X_norm.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 2. Calculez la matrice de variance/covariance de `X_norm`" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "cov = 1/n * (X_norm.T @ X_norm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 3. Affichez la matrice de covariance. La matrice de covariance vous parait elle cohérente." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.matshow(cov)\n", "plt.colorbar();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oui, cohérente car $\\in {-1,1}$, symétrique, diag à 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 4. Calculez les deux premiers axes de l'ACP. \n", " \n", " a) Vérifiez que les deux vecteurs propres sont bien orthogonaux et de norme égale à 1.\n", " \n", " b) En déduire la matrice de projection `P` permettant de passer de l'espace de départ vers un espace à deux dimensions.\n", " " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1102230246251565e-16\n", "0.9999999999999994 0.9999999999999996\n" ] } ], "source": [ "w,v = np.linalg.eigh(cov)\n", "w = w[::-1]\n", "v=v[:,::-1]\n", "P=v[:,:2]\n", "print(P[:,0].T@P[:,1]) #a)\n", "print(np.linalg.norm(P[:,0]), np.linalg.norm(P[:,1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 5. Quel est le pourcentage de variance (information) expliqué par ces deux premiers axes ?\n", " " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pourcentage de variance : 98.81831649664497\n" ] } ], "source": [ "print(f\"Pourcentage de variance : {(np.sum(w[:2])/np.sum(w)) * 100}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 6. Affichez un graphique sous forme de barres montrant le ratio de variance expliquée cumulée pour chaque axe." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.bar(x=range(p), height=np.cumsum(w)/np.sum(w));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Représentation en 2D\n", " 1. Calculez la projection en 2D des données `X_norm` via la matrice de projection `P` calculée plus haut.\n", " " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "X_proj = X_norm@P" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 2. Affichez un graphique avec les nouvelles coordonées de chaque ville. \n", " \n", " Affichez également le nom de chaque ville pour chaque point via la function `plt.text(x,y,\"text\")` (voir annexe). Commentez ce que vous observez." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X_proj[:,0],X_proj[:,1])\n", "for i in range(n):\n", " plt.text(X_proj[i,0],X_proj[i,1], villes[i])\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La position géographique des villes ressort des deux premiers axes de l'ACP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyse corrélation 1er axe/Latitude\n", " 1. Calculez le coefficient de corrélation entre le 1er axe des données projetées et les variables `latitude` et `longitude`" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8389348225053145\n", "[[1. 0.83893482]\n", " [0.83893482 1. ]]\n", "-0.17148391835024834\n" ] } ], "source": [ "def corr(x,y):\n", " mu_x = np.mean(x)\n", " mu_y = np.mean(y)\n", " a = np.sum(x.T @ y - n*mu_x*mu_y)\n", " b = np.linalg.norm(x-mu_x) * np.linalg.norm(y - mu_y)\n", " return a/b\n", "\n", "print(corr(X_proj[:,0],latitude))\n", "print(np.corrcoef(X_proj[:,0],latitude))\n", "print(corr(X_proj[:,0],longitude))\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 2. Commentez les deux coefficients calculés. Cela vous parait il cohérent comme observation ?\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oui, la latitude N/S influe sur la température." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice 3 : L'harmonie moyenne [5 points]\n", "Dans cet exercice, on vous propose de calculer une nouvelle moyenne appelée moyenne harmonique. La moyenne harmonique $c$ d'un ensemble de points $x_i, i \\in 1, \\dots, n$ est définie comme la valeur $c$ minimisant $J(c)$:\n", "\n", "$$\n", "J(c) = \\sum_{i = 1}^n \\left( \\frac{1}{x_i} - \\frac{1}{c} \\right) ^2\n", "$$\n", "\n", "$$\n", "c^\\star = \\underset{c \\in \\mathbb{R}}{\\textrm{ arg min}} J(c)\n", "$$\n", "\n", "\n", "1.Quelle méthode utilisez vous pour trouver $c$ ?\n", "\n", "2.Démontrer sur la copie que $c = \\frac{1}{\\frac{1}{n} \\sum_{i=1}^n \\frac{1}{x_i} } $ ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "J(c) = \\frac{n}{c^2} + \\sum_{i = 1}^n \\frac{1}{x_i^2} - \\frac{2}{x_i c}\n", "$$\n", "\n", "$$\n", "\\nabla_c J(c) = \\frac{2n}{c^3} - \\sum_{i = 1}^n \\frac{2}{x_i c^2}\n", "$$\n", "\n", "$$\n", "\\begin{align}\n", "& \\nabla_c J(c) = 0 \\\\\n", "\\Leftrightarrow & \\frac{n}{c^3} = \\sum_{i = 1}^n \\frac{1}{x_i c^2} \\\\\n", " \\Leftrightarrow & \\frac{n}{c} = \\sum_{i = 1}^n \\frac{1}{x_i}\\\\\n", " \\Leftrightarrow & \\frac{1}{c} = \\frac{1}{n} \\sum_{i = 1}^n \\frac{1}{x_i} \\\\\n", " \\Leftrightarrow & {c} = \\frac{1}{ \\frac{1}{n} \\sum_{i = 1}^n \\frac{1}{x_i}}\\\\ \n", "\\end{align}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Application numérique. Soit le trajet en voiture suivant : \n", " |Distance (km) | 0-20 | 20-40 | 40-60 | 60-80 | 80-100 |\n", " |--- | --- | ---|--- | --- | --- |\n", " |Vitesse (km/h) | 40 | 80 | 100 | 40 | 80 |\n", " \n", " \n", " a. Calculez la moyenne et la médiane des vitesses\n", " \n", " b. Calculez le temps de parcours et en déduire la vitesse moyenne\n", " \n", " c. Calculez la moyenne harmonique. Comparez avec la vitesse moyenne et la moyenne des vitesses. Commentez." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "x = np.array([40,80,100,40,80])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Moyenne des vitesses : 68.0\n", "Médiane des vitesses : 80.0\n", "vitesse moyenne : 58.82352941176471\n", "58.8235294117647\n" ] } ], "source": [ "#a \n", "print(f\"Moyenne des vitesses : {np.mean(x)}\")\n", "print(f\"Médiane des vitesses : {np.median(x)}\")\n", "#b\n", "temps_total = np.sum(20/x)\n", "print(f\"vitesse moyenne : {100/temps_total}\")\n", "\n", "\n", "\n", "def moy_h(x):\n", " n = len(x)\n", " return 1/((1/n) * np.sum(1/x))\n", "\n", "#c\n", "print(moy_h(x))\n", "# la moyenne harmonique est plus représentative que les autres mesures car on parcourt plus ou moins de temps à chacune des vitesses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ANNEXES\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(2, 1, 'text')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Utilisation de plt.text\n", "a = [1,2,3]\n", "b=[0.5,1,2]\n", "import matplotlib.pyplot as plt\n", "plt.scatter(a,b)\n", "plt.text(a[1],b[1],\"text\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Formulaire\n", "\n", "- Moyenne empirique: $\\bar{x} = \\frac{1}{n} \\sum_{i = 1}^n x_i $\n", "- Variance empirique: $s^2_{x} = \\frac{1}{n} \\sum_{i = 1}^n (x_i - \\bar{x})^2$\n", "- Covariance: $s_{jk} = \\frac{1}{n} \\sum_{i=1}^n (x_{i,j}- \\bar{x}_j)(x_{i,k}- \\bar{x}_k)$\n", "- Corrélation: $r_{j,k} = \\frac{s_{jk}}{s_j s_k} $\n", "- Variance totale: $s^2 = \\sum_{i=1}^{n} (y_i - \\bar{y})^2 = \\sum_{j \\in \\Omega_x} \\sum_{i=1}^{n_j} (y_{ij} - \\bar{y})^2 =\n", " s^2_{\\textrm{inter}} + s^2_{\\textrm{intra}}$\n", "- Variance intra-classe: $s^2_{\\textrm{intra}} = \\sum_{j \\in \\Omega_x}\\sum_{i=1}^{n_j} (y_{ij} - \\bar{y_j})^2$\n", "- Variance inter-classe: $s^2_{\\textrm{inter}} = \\sum_{j \\in \\Omega_x}\\sum_{i=1}^{n_j} (\\bar{y_j} - \\bar{y})^2 = \\sum_{j \\in\\Omega_x} n_j (\\bar{y_j} - \\bar{y})^2$\n", "- Rapport des variances: $\\eta_{Y/X}^2 = \\frac{s^2_{\\textrm{inter}}}{s^2} = \\frac{\\sum_{j \\in\n", " \\Omega_x} n_j (\\bar{y_j} - \\bar{y})^2}{\\sum_{i=1}^{n} (y_i - \\bar{y})^2}$\n", "- Coefficient de corrélation: $r = \\frac{s_{xy}}{s_x s_y} = \\frac{\\frac{1}{n} \\displaystyle \\sum_{i=1}^{n} (x_i-\\bar{x})(y_i - \\bar{y})}{s_x s_y} = \n", "\\frac{( \\sum_{i=1}^n x_i y_i) - n \\bar{x} \\bar{y}}{\\sqrt{ \\sum_{i=1}^n (x_i - \\bar{x})^2}\\sqrt{ \\sum_{i=1}^n (y_i - \\bar{y})^2}}$\n" ] } ], "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.10.7" } }, "nbformat": 4, "nbformat_minor": 4 }