{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# M8 - Final 2022\n", "\n", "## Consignes\n", "### Procédures examen \n", "\n", "1. Récupérez le sujet ainsi que les données sur Moodle\n", "2. Configurez le proxy pour accéder aux sites web : Renseignez \"asi-examen.insa-rouen.fr\" et port 80 pour le protocole HTTPS afin de pouvoir accéder à la documentation en ligne. Vous avez une vidéo de démo plus bas. Attention, Moodle n'est alors plus disponible.\n", "3. Une fois votre travail terminé, désactivez le proxy : Paramètres -> Proxy -> \"Pas de proxy\".\n", "4. Déposez votre fichier ipynb dans le dépot moodle prévu à cet effet. Attention à bien tout sauvegarder. *Pas* de fichier html, pdf ou autre.\n", "5. Déconnectez vous mais n'éteignez pas la machine. Cela permettra de faire une sauvegarde de votre session en cas de problème.\n", "\n", "### Consignes générales\n", "- Le fichier ipynb rempli devra être soumis sur le [dépot moodle](https://moodle.insa-rouen.fr/mod/assign/view.php?id=61313)\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", "- Justifiez vos réponses. Si la réponse n'est pas justifiée, elle sera considérée comme non correcte." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercice 1 : Régression de chenilles\n", "\n", "Le dataset `pine_full` est tiré d'un article analysant des parcelles de terrain et le nombre de nids de chenilles processionnaires. Pour tenter d'expliquer ce nombre de nids pour une parcelle donnée, on considère les variables explicatives suivantes :\n", "\n", "1. altitude (en mètres)\n", "2. pente (en degres)\n", "3. nombre de pins dans la parcelle\n", "4. hauteur (en mètres) de l'arbre échantilloné au centre de la parcelle\n", "5. diamètre (en mètres) de l'arbre échantilloné au centre de la parcelle\n", "6. indice de la densité de population\n", "7. orientation de la parcelle (1 plein sud jusqu'à 2 sinon)\n", "8. hauteur (en mètres) de l'arbre dominant\n", "9. Nombre de strates de végétation\n", "10. Indice de mixité de la population (entre 1 (non mixte) et 2 (mixte))\n", "\n", "La variable à expliquer est un logarithme appliqué au nombre moyen de nids de chenilles observés par arbre dans la parcelle.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Chargement des données\n", "Le code suivant permet de charger le dataset avec les variables explicatives dans `data_pine` et la propriété dans `y_pine`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "data_pine = np.loadtxt('pine_full.csv',delimiter=\",\")\n", "y_pine = data_pine[:,-1]\n", "data_pine = data_pine[:,:-1]\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.boxplot(data_pine);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Donnez le nombre d'observations ainsi que le nombre de variables explicatives à partir des données chargées" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "58 10\n" ] } ], "source": [ "n,p = data_pine.shape\n", "print(n,p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Calculez les covariances entre chaque variable explicative et la propriété à prédire. Quelles sont les variables les plus prometteuses pour prédire le nombre de nids ?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.42934193, -0.28597597, -0.20753543, -0.03053795, 0.18922899,\n", " -0.19514481, -0.17313584, -0.30904139, -0.40388614, -0.31669936])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data_pine_norm = (data_pine - np.mean(data_pine,axis=0))/np.std(data_pine,axis=0)\n", "y_norm = (y_pine-np.mean(y_pine))/np.std(y_pine)\n", "cov_y = 1/n * data_pine_norm.T@y_norm\n", "plt.matshow(np.abs(cov_y).reshape(1,-1))\n", "plt.colorbar()\n", "cov_y\n", "#meilleur est 1 et 9 (0 et 8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Effectuez une régression sur ce jeu de données et donnez le $R^2$ associé" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.5813220444153613\n" ] } ], "source": [ "def reg(X,y):\n", " X=np.hstack([X,np.ones((n,1))])\n", " alpha = np.linalg.solve(X.T@X, X.T@y)\n", " z = X@alpha\n", " SCT = np.mean((y - np.mean(y))**2)\n", " SCM = np.mean((z-np.mean(y))**2)\n", "\n", " return SCM/SCT,alpha,z\n", "R2,alpha,z =reg(data_pine,y_pine) \n", "print(R2)\n", "#pas ouf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Calculez les résidus de votre modèle. Affichez les sous forme de nuage de points en fonction de `y`. Quel observation faites vous ? " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "e = z-y_pine\n", "plt.plot(y_pine,e,'o')\n", "\n", "# variance pas équivalente, pb de y \"loin\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* On décide d'analyser le problème. Calculez les effets leviers de chacune des observations. Détectez vous des points potentiellement problématiques ?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# leviers, contributions\n", "H = data_pine@np.linalg.inv(data_pine.T@data_pine)@data_pine.T\n", "h=np.diag(H)\n", "plt.bar(range(n),h)\n", "#Non" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Calculez les contributions de chaque observation ? Quelles remarques pouvez vous faire ?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s2 = (1/(n-p)) * np.sum(e**2) \n", "c = (h / (p*(1-h)**2))*(e**2/s2)\n", "plt.bar(range(n),c)\n", "# probleme pour deux valeurs, elles correspondent aux y élevés ? oui !" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(y_pine,c,'o')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Afin d'améliorer les résultats, proposez et implémentez une méthode pour améliorer le $R^2$. Donnez le nouveau $R^2$ et portez un regard critique sur votre nouveau modèle." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "X_norm = (data_pine-np.mean(data_pine,axis=0)) / np.std(data_pine, axis=0)\n", "\n", "X = np.hstack([X_norm,X_norm**(4)])\n", "R2,alpha,z = reg(X,y_pine)\n", "print(R2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Quel est le meilleur modèle à une seule variable ?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "R2s = []\n", "for i in range(p):\n", " sub_X = data_pine[:,i].reshape(-1,1)\n", " R2,alpha,z = reg(sub_X,y_pine) \n", " R2s.append(R2)\n", "print(R2s)\n", "print(np.max(R2s),np.argmax(R2s))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Proposez le meilleur modèle possible avec un nombre de variables que vous déterminerez. Détaillez et justifier votre méthode" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice 2 : Une différence de poids " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les données suivantes ont été récupérées sur des modèles de voiture conçues en Europe et au Japon. On cherche à savoir si il y une différence dans le poids des voitures conçues. \n", "La variable `poids_voiture_japon` correspond au poids en kg de 68 voitures du Japon, et `poids_voiture_europe` le poids de 79 voitures européennes. \n", "\n", "On suppose que le poids des voitures japonaises est distribué selon une loi normale d'espérance $\\mu_j$ et de variance inconnue $\\sigma^2$, et que les voitures européennes une loi normale d'espérance $\\mu_e$ et de même variance inconnue $\\sigma^2$.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "poids_voiture_japon = np.loadtxt('car_weight_japan.csv')\n", "poids_voiture_europe = np.loadtxt('car_weight_europe.csv')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Posez les hypothèses du test statistique associé à la question posée" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$H_0$ : u_j = u_e\n", "$H_1$ : u_j /= u_e\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Donnez une estimation de chacune des moyennes des deux groupes " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2433.470588235294 2221.227848101266\n" ] } ], "source": [ "print(np.mean(poids_voiture_japon),np.mean(poids_voiture_europe))\n", "mean_japon = np.mean(poids_voiture_japon)\n", "mean_europe = np.mean(poids_voiture_europe)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Quel test statistique allez vous utiliser pour répondre à la question ?\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "meme variance inconnue : t-test de student " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Calculez la statistique associé à ce test." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-3.1394711516628906" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nj = len(poids_voiture_japon)\n", "ne = len(poids_voiture_europe)\n", "\n", "\n", "est_var = (1/(nj+ne-2)) * (np.sum((poids_voiture_europe - mean_europe)**2) + np.sum((poids_voiture_japon - mean_japon)**2))\n", "est_var\n", "\n", "stat_t = (mean_europe - mean_japon)/(np.sqrt(est_var*(1/nj + 1/ne)))\n", "stat_t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Donnez la p-valeur de cette statistique. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0020512576756942535" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import t\n", "pval = t.cdf(stat_t,nj+ne-2)*2\n", "pval" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Ttest_indResult(statistic=-3.1394711516628906, pvalue=0.0020512576756942535)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import ttest_ind\n", "ttest_ind(poids_voiture_europe,poids_voiture_japon)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Pour un risque $\\alpha = 0.05$, que concluez vous ? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "pval < alpha => H_0 rejetée" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Calculez les variances sur chaque groupe. Est ce que votre test est adapté ? Que concluez vous de nouveau ?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "variances trop éloignées" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import norm \n", "x = np.linspace(2200-4*np.sqrt(est_var), 2200+4*np.sqrt(est_var))\n", "plt.plot(x,norm.pdf(x,loc=mean_japon,scale=np.std(poids_voiture_japon)))\n", "plt.plot(x,norm.pdf(x,loc=mean_europe,scale=np.std(poids_voiture_europe)))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import norm \n", "x = np.linspace(2200-4*np.sqrt(est_var), 2200+4*np.sqrt(est_var))\n", "plt.plot(x,norm.pdf(x,loc=mean_japon,scale=np.std(poids_voiture_japon)/np.sqrt(nj)))\n", "plt.plot(x,norm.pdf(x,loc=mean_europe,scale=np.std(poids_voiture_europe)/np.sqrt(ne)))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PizzACP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le jeu de données suivant renseigne sur les données nutritionnelles de pizzas issues de 10 marques différentes. La variable `pizza_marques` code les différentes marques par un entier différent. La variable `pizza_data` contient les variables suivantes :\n", "1. id - Sample analised\n", "2. mois - Amount of water per 100 grams in the sample\n", "3. prot - Amount of protein per 100 grams in the sample\n", "4. fat - Amount of fat per 100 grams in the sample\n", "5. ash - Amount of ash per 100 grams in the sample\n", "6. sodium - Amount of sodium per 100 grams in the sample\n", "7. carb - Amount of carbohydrates per 100 grams in the sample\n", "8. cal - Amount of calories per 100 grams in the sample\n", "\n", "On se propose d'effectuer une analyse descriptive de ce jeu de données via une ACP\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "pizza_marques = np.loadtxt('pizza_marque.csv')\n", "pizza_data = np.loadtxt('pizza_data.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Parmi les données présentées, une variable devrait être supprimée avant tout calcul. Laquelle ? Supprimez cette colonne du jeu de données." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# supp de la premiere colonne\n", "pizza_data=pizza_data[:,1:]\n", "n,p = pizza_data.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Affichez la boite à moustaches des données. Quelle opération déduisez vous de cette observation ?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.boxplot(pizza_data);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Normalisez les données" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "pizza_norm = (pizza_data-np.mean(pizza_data,axis=0))/np.std(pizza_data,axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. Calculez et affichez la matrice de covariance. Est ce qu'elle vous parait cohérente ?\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cov = (1/n) * (pizza_norm.T@pizza_norm)\n", "plt.matshow(cov)\n", "plt.colorbar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Calculez les valeurs et vecteurs propres de la matrice de covariance. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from scipy.linalg import eigh\n", "w,v = eigh(cov)\n", "w=w[::-1]\n", "v=v[:,::-1]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "6. Combien faut il d'axes factoriels au minimum pour représenter 90% de l'information ? Pensez à justifier." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, True, True, True, True, True, True])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w.cumsum()/w.sum() > 0.9\n", "#2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "7. Calculez la projection 2D des données selon l'ACP" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "pizza_proj = pizza_norm@v[:,:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "8. Affichez les données projetées avec une couleur différente par étiquette (cf. Annexe, utilisez `plt.scatter`).Commentez le graphique obtenu" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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fpr777/f32H5nNaaq6++mptvvplhw4b5O5xG8cADDxAeHk58fDz79u3jm2++8XdIDW7Hjh28+uqr3HTTTf4ORXghMzMTl8tFmzZtKh1v06YNaWlpfopK+JJpmtx1112MGTOGfv36+TucBrF+/XoiIiKw2WzcfPPNzJo1iz59+nh9fkAnJA8++GCViarHf23ZsgWAe+65h3HjxjFgwABuvvlmXnjhBV599VXsdrufn8I73j7rq6++Sn5+Pg899JC/Q66z2vy5Avztb39j9erV/PLLL1gsFq666ip0MylQXNtnBThw4ACnn346F110ETfccIOfIq+dujynEM3JbbfdxoYNG5g5c6a/Q2kwPXv2ZM2aNSxdupRbbrmFqVOnsmnTJq/PD+jS8RkZGRw+fNhjmy5duhAcHFzl+MaNG+nXrx9btmyhZ8+eDRWiz3j7rBdffDHfffcdSqmK4y6XC4vFwuWXX84HH3zQ0KHWW33+XPfv309SUhKLFi2qVVeiv9T2WVNTUxk3bhyjRo1ixowZGEbz+JmjLn+mM2bM4K677iInJ6eBo2t4DoeDsLAwvvjiC6ZMmVJxfOrUqeTk5AR0r55SilmzZlV67kBz++23880337Bw4UKSk5P9HU6jmThxIl27duWtt97yqr21gePxq4SEBBISEup07po1azAMg9atW/s4qobh7bO+8sorPPnkkxWvU1NTmTRpEp9++ikjR45syBB9pj5/rqZpAjSbnq/aPOuBAwcYP348Q4cOZfr06c0mGYH6/ZkGguDgYIYOHcrcuXMrPphN02Tu3Lncfvvt/g1O1JnWmjvuuINZs2Yxf/78FpWMQNnf4dp8rw3ohMRbixcvZunSpYwfP57IyEgWL17M3XffzRVXXEFsbKy/w/Opjh07VnodEREBQNeuXenQoYM/QmowS5cuZfny5Zx44onExsayc+dOHnnkEbp27dosekdq48CBA4wbN45OnTrx/PPPk5GRUfFe27Zt/RiZ7+3bt4+srCz27duHy+WqqKHTrVu3ir/PzdE999zD1KlTGTZsGCNGjOCll16isLCQa665xt+h+VxBQQE7duyoeL17927WrFlDXFxcle9Rzdltt93GJ598wjfffENkZGTFfKDo6GhCQ0P9HJ1vPfTQQ0yePJmOHTuSn5/PJ598wvz58/n555+9v0jDLPZpXlauXKlHjhypo6OjdUhIiO7du7d++umndUlJib9Da3C7d+8O2GW/69at0+PHj9dxcXHaZrPpzp0765tvvlnv37/f36H53PTp0zVQ7VegmTp1arXPOW/ePH+HVm+vvvqq7tixow4ODtYjRozQS5Ys8XdIDWLevHnV/hlOnTrV36H5lLt/k9OnT/d3aD537bXX6k6dOung4GCdkJCgJ0yYoH/55ZdaXSOg55AIIYQQonloPoPMQgghhAhYkpAIIYQQwu8kIRFCCCGE30lCIoQQQgi/k4RECCGEEH4nCYkQQggh/E4SEiGEEEL4nSQkQgghhPA7SUiEEEII4XeSkAghhBDC7yQhEUIIIYTfSUIihBBCCL/7f0sBncqjW8KgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(pizza_proj[:,0],pizza_proj[:,1],c=pizza_marques)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "9. Donnez les contributions de chaque variable au premier axe de l'ACP. Quelle la variable qui contribue le plus ? Comment interpréter vous cette contribution ?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.06470937, -0.3787609 , -0.44666592, -0.47188953, -0.43570289,\n", " 0.42491371, -0.2444873 ])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v[:,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Annexes" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#utilisation de plt.text\n", "coords = np.random.rand(10,2)\n", "plt.plot(coords[:,0],coords[:,1],'o')\n", "for i,coord in enumerate(coords):\n", " print(coord)\n", " plt.text(coord[0],coord[1],i,fontsize='large')" ] }, { "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", "- Problème de la régression : $min_\\alpha \\| X \\alpha - y \\|^2_2$\n", "- Paramètres de la régression $\\alpha = (X^\\top X )^{-1}X^\\top y$\n", "- Coefficient de détermination $R^2$ : $\\frac{\\sum_{i=1}^{n} (z_i - \\bar{y})^2}{\\sum_{i=1}^{n} (y_i - \\bar{y})^2}$\n", "- Influence de l'observation $i$ : $H(i,i) = \\|H(i,:)\\|^2$ avec $H= X(X^\\top X)^{-1}X^\\top$\n", "- Contribution de l'observation $i$ (Distance de Cook) : $c_i = \\frac{H_{ii}}{p(1 - H_{ii})^2} \\frac{\\varepsilon_i^2}{s^2}$ avec $p$ le nombre de dimensions et $s^2 = \\frac{1}{n-p} \\sum_{i=1}^n \\varepsilon_i^2 $ \n", "- $C_p$ de Mallows : $Cp = \\frac{1}{s^2} \\sum_{i=1}^n (y_i - z_i^{(0)})^2 -n + 2 p_0$ avec $s^2 = \\frac{1}{n-p} \\sum_{i=1}^n (y_i - z_i)^2$ et $z_i^{(0)}$ l'estimation de $y_i$ faite avec la sous matrice $X^{(0)} \\in \\mathbb{R}^{n \\times p_0}$\n", "- Distance du $\\chi^2$ : $ D(O,T) = \\sum_{i=1}^I \\sum_{j=1}^J \\frac{(O_{ij} - T_{ij})^2}{T_{ij}} $" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "mlenv", "language": "python", "name": "mlenv" }, "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 }