{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TP 10 : P-valeurs\n",
    "Le but du TP est de réaliser des simulations de variable aléatoire et des calculs de P-valeurs.\n",
    "\n",
    "| Numéro        | Compétence           | \n",
    "|:------------- |:--------------------:|\n",
    "|TS001|\tSavoir définir une hypothèse nulle|\n",
    "|TS002|\tConnaître les différences entre les deux types d’erreurs|\n",
    "|TS003|\tSavoir interpréter une p-valeur|\n",
    "|PY601|\tSavoir calculer une p-valeur|\n",
    "|PY602|\tÊtre capable de calculer une statistique avec scipy|\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io as sio\n",
    "import scipy.stats as st"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ex. 0 : Échauffement\n",
    "1. Qu'est-ce que le module scipy.stats ?\n",
    "2. Que font les méthodes `pdf`, `cdf`, `sf`, `ppf` et `isf` de `scipy.stats.norm` ?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3\\. Dessinez les densités de probabilité d'une loi normale centrée réduite et une autre loi Normale $\\mathcal{N}(\\frac{1}{2}, 1.5^2)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.stats import norm\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = np.linspace(-4, 4, 100)\n",
    "plt.plot(x, norm.?(?))\n",
    "plt.plot(x, norm.?(?, loc=?, scale=?))\n",
    "plt.legend(['N(0,1)','N(1/2,1.5^2)'])\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4\\. Calculez, pour $X$ une variable aléatoire suivant une loi normale $\\mathcal{N}(0,1)$ et $t \\in R^+$, $\\mathbb{P}(X < t)$ et $\\mathbb{P}(|X| < t)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = 1.96\n",
    "#P(X <t)\n",
    "pr1 = norm.?(?)\n",
    "pr2 = ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ex. 1: Pile ou face"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. Générez $n=1000$ répétitions d’un échantillon de $p=10$ tirages pile ou face avec une pièce « honnête » (telle que: $pr=\\mathbb{P}(X=pile) =.5)$\n",
    "\n",
    ">**aide** : vous pouvez utiliser la méthode `choice` de `numpy.random`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "n, p = 1000, 10\n",
    "rand = np.random.choice(?, size=[?, ?])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. Comptez le nombre de pile de chaque tirage et affichez l'histogramme correspondant. Sachant qu'une loi binomiale tend vers une loi normale $\\mathcal{N}(p*pr,p*pr*(1-pr))$, tracez la densité de probabilité correspondante."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "nb_pile =  ?\n",
    "plt.hist(nb_pile,bins=11)\n",
    "\n",
    "pr = 1/2\n",
    "\n",
    "x = np.linspace(-1, 11, 100)\n",
    "plt.plot(x, ?*norm.?(x, loc=?, scale=?))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. Comptez le nombre d’échantillons dans lesquels vous avez tiré de $k=0 $ à $p= 10$ fois piles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "mods,freqs = ?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4. Comptez le nombre théorique moyen d’échantillon dans lesquels vous auriez du avoir de $k=0$ à $p=10$ fois piles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "5. Approchez ce nombre en utilisant la loi normale"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "6. Affichez vos résultats. À savoir les effectifs observés, les effectifs prédits par la loi binomiale ainsi que les effectifs prédits par la loi normale."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "7. que se passe t’il lorsque $n=1000000$ et $p= 20$ ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "n, p = 1000000, 20"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ex. 2: La binômiale"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On propose un questionnaire comprenant 10 questions avec chacune deux réponses possibles,l’une vraie et l’autre fausse. Pour tester si une personne interrogée répond correctement, on adopte la règle suivante : si 7 réponses ou plus sont correctes on admet que la personne n'a pas répondu au hasard.\n",
    "\n",
    "1. Donner les deux hypothèses du tests"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. Quelle est la p-valeur du test d’une personne qui a donné 8 réponses correctes ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. Quelle est la probabilité de décider qu’une personne à répondu correctement alors qu’elle a répondu au hasard ?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4\\. Que devient cette probabilité lorsque chacune des questions posées comporte trois réponses dont une seule est vraie ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Ex. 3: La grande échelle FDR (Bonus mais intéressant !!)\n",
    "\n",
    "Les industries pharmaceutiques ont toujours eu pour objectif de développer des méthodes permettant la production de nouvelles molécules thérapeutiques. L’approche privilégiée consiste à générer un grand nombre de molécules de les tester afin de décider si elles sont actives ou non. On parle alors de criblage ou screening. Nous allons supposer dans cet exercice que nous savons que parmi 1000 molécules testées, seulement 100 ont un effet avéré (et donc sont actives). Nous allons supposer que le risque de première espèce du test utilisé est de 5 % et que la puissance de ce test est de 0,7 et utiliser la théorie des tests statistiques vue en cours.\n",
    "\n",
    "1. Quelle est, en moyenne, le nombre de faux positifs (le nombre de molécules réellement inactives que le test va déclarer actives) ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2. Quelle est, en moyenne, le nombre de faux négatifs (le nombre de molécules actives que le test va déclarer inactives) ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3. Donnez une estimation de la probabilité de déclarer une molécule active alors qu’elle ne l’est pas."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4. Qu’en concluez vous ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "5. Donnez la matrice de confusion « moyenne » du test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "|/|molécule active|molecule inactive|totaux|\n",
    "|---|---|---|---|\n",
    "|test positif|?|?|?|\n",
    "|test negatif|?|?|?|\n",
    "|totaux|100|900|1000|\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "venvm8-ioPrAr7d-py3.10",
   "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.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
