Skip to content

Instantly share code, notes, and snippets.

@jeanpat
Created November 19, 2019 07:12
Show Gist options
  • Save jeanpat/9f828229f7cae66f856d1f562dec55ec to your computer and use it in GitHub Desktop.
Save jeanpat/9f828229f7cae66f856d1f562dec55ec to your computer and use it in GitHub Desktop.
Introduction à python et fluctuation d'échantillonage
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Fluctuation de fréquence: naissances",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "l0S5mT4dCHdI",
"colab_type": "text"
},
"source": [
"# Fluctuation de la fréquence des naissances:\n",
"Vous vous souvenez de ce village dans lequel sur vingt naissances, seize bébés étaient des garçons?\n",
"\n",
">>>>![Texte alternatif…](http://3.bp.blogspot.com/_pA_WaJftq1A/RtuenOzh64I/AAAAAAAAAFQ/mbQ33j8yFPs/s320/BangkokCrowd2.jpg)\n",
"\n",
"\n",
"\n",
"Pour simuler une naissance avec un tableur, on pouvait faire des tirages à PILE (garçon) ou FACE (fille) avec un générateur de nombres aléatoires. Chaque colonne du tableau représente une naissance et chaque ligne représente un village.\n",
"[Simulation tableur](https://docs.google.com/spreadsheets/d/148_IkoLVDev-SHRtxh_6Br0e-v43qXjc4TlAEtiuVzE/edit?usp=sharing)\n",
"Cette fois-ci, reprenons la simulation en écrivant du code."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-giLbuRBKKIw",
"colab_type": "text"
},
"source": [
"#SCRATCH c'est bien, mais PYTHON c'est ... différent !!\n",
"\n",
"---\n",
"\n",
"\n",
">>>![Sratch](https://sites.google.com/a/isd284.com/birchview-s-links/_/rsrc/1516722370104/3-third-grade/scratch/scratch.png) ![Python](https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Python.svg/240px-Python.svg.png)\n",
"\n",
"\n",
"\n",
"\n",
"Faisons un peu d'algorithmique avec un langage de programmation: PYTHON !"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pVJKcsvKSGJS",
"colab_type": "text"
},
"source": [
"# Faisons connaissance avec l'environnement jupyter colab:\n",
"Jupyter est un environnement permettant d'écrire du code python.\n",
"\n",
"Ci dessous, vous avez une cellule. Quand on clique sur le triangle, on exécute le programme qui se trouve à l'intérieur (le résultat est le même au clavier en faisant: $SHIFT+ENTRER$). A votre avis que fait le programme ci dessous?"
]
},
{
"cell_type": "code",
"metadata": {
"id": "sTLFEqvmBhNO",
"colab_type": "code",
"outputId": "ac38064f-7c04-456e-f2ec-102bb0211adf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"print(1+3)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"4\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "b78Bvlr-D0cC",
"colab_type": "text"
},
"source": [
"## Devinerez-vous ce fait le programme ci dessous?"
]
},
{
"cell_type": "code",
"metadata": {
"id": "OZQpZFtXEF6g",
"colab_type": "code",
"outputId": "966af7be-7ec8-484d-921a-7344cec91ba4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"nombre1 = 2\n",
"nombre2 = 3\n",
"nombre3 = nombre1 * nombre2\n",
"print('le résultat est:', nombre3)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"le résultat est: 6\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TDOs3OszFIBy",
"colab_type": "text"
},
"source": [
"# Passons aux choses sérieuses.\n",
"Nous allons avoir besoin de quelques super-pouvoirs:\n",
"\n",
"* Pour faire des choix aléatoires\n",
"* Pour compter facilement.\n",
"* Pour tracer des graphiques\n",
"\n",
"Exécuter le code dans la cellules ci dessous, en cliquant sur le triangle ou $shift+entrer$:\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "o6x0W4s9KIop",
"colab_type": "code",
"colab": {}
},
"source": [
"import random\n",
"from collections import Counter\n",
"from matplotlib import pyplot as plt"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "v_orfNnwVkMQ",
"colab_type": "text"
},
"source": [
"## Jouez avec l'instruction $random.choice()$:\n",
"Cliquez sur l'icône triangle ci dessous, plusieurs fois:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xBcygrPsLAsR",
"colab_type": "code",
"cellView": "both",
"outputId": "f1a3d2b1-9583-46f0-d84a-f87895047db7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"random.choice([\"garçon\",\"fille\"])\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'fille'"
]
},
"metadata": {
"tags": []
},
"execution_count": 4
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7F-K8TGlJ9Ja",
"colab_type": "text"
},
"source": [
"## Pouvez-vous expliquer ce que fait l'instruction $random.choice([\"garçon\",\"fille\"])$ ?\n",
"\n",
"Double cliquez ici et notez votre réponse à la suite : \n",
"\n",
"................................................................\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AtQQJ36KStWc",
"colab_type": "text"
},
"source": [
"## Mettons $random.choice([\"garçon\",\"fille\"]$ dans une boucle:\n",
"* Que fait le code dans la cellule ci dessous? Double cliquez ici et notez votre réponse:\n",
"* .............................\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "lzZaTLDaK7xy",
"colab_type": "code",
"outputId": "be2f207e-a01d-4d66-8297-d8d39408414d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 89
}
},
"source": [
"TotalNaissances = 100\n",
"bebes= [random.choice([\"garçon\",\"fille\"]) for naiss in range(TotalNaissances)]\n",
"print(bebes)\n",
"print()\n",
"print('bebes est une variable contenant :',type(bebes))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"['fille', 'garçon', 'garçon', 'garçon', 'fille', 'fille', 'garçon', 'fille', 'garçon', 'fille', 'fille', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'fille', 'fille', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'fille', 'garçon', 'garçon', 'fille', 'fille', 'garçon', 'fille', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'fille', 'fille', 'fille', 'fille', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'fille', 'garçon', 'fille', 'garçon', 'fille', 'fille', 'fille', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'fille', 'garçon', 'garçon', 'fille', 'fille', 'fille', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'garçon', 'fille', 'fille', 'garçon', 'garçon']\n",
"\n",
"bebes est une variable contenant : <class 'list'>\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yFylBytQvSSq",
"colab_type": "text"
},
"source": [
"## Executez plusieurs fois le code ci dessous:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "L9v8sEMoIybq",
"colab_type": "code",
"outputId": "f9f1b35a-b381-422b-86b8-80b0a923778a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 86
}
},
"source": [
"TotalNaissances = 100\n",
"bebes= [random.choice([\"garçon\",\"fille\"]) for naiss in range(TotalNaissances)]\n",
"\n",
"effectifs = Counter(bebes)\n",
"freqFilles = effectifs['fille'] / TotalNaissances\n",
"freqGarcons = effectifs['garçon'] / TotalNaissances\n",
"\n",
"print('La variable effectif contient:', effectifs)\n",
"print()\n",
"print('La variable freqFilles contient', freqFilles)\n",
"print('La variable freqGarcons contient', freqGarcons)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"La variable effectif contient: Counter({'garçon': 56, 'fille': 44})\n",
"\n",
"La variable freqFilles contient 0.44\n",
"La variable freqGarcons contient 0.56\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "p94fKeFpznsI",
"colab_type": "text"
},
"source": [
"# Simulons $\\color{green}{100}$ naissances dans 400 villages:\n",
"Remarquons que si nous voulions faire la même chose avec un tableur, il faudrait remplir 100 colonnes et 400 lignes, ce qui commence à ne pas être pratique.\n",
"\n",
"Observons la fluctuation de la fréquence des bébés garçons dans sous l'hypothèse que les bébés filles et garçons ont la même chance d'être conçus."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u2TMdauwyhYG",
"colab_type": "text"
},
"source": [
"Que contiennent les variables suivantes (double cliquez pour indiquer votre réponse)?\n",
"\n",
"* effectifs:\n",
"* TotalNaissances: \n",
"* freqFilles:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "vOgBo8ZdLNFW",
"colab_type": "code",
"colab": {}
},
"source": [
"NVillages = 400\n",
"frequences_filles = []\n",
"frequences_garcons = []\n",
"\n",
"for village in range(NVillages):\n",
" TotalNaissances = 100\n",
" bebes= [random.choice([\"garçon\",\"fille\"]) for naiss in range(TotalNaissances)]\n",
"\n",
" effectifs = Counter(bebes)\n",
" freqFilles = effectifs['fille'] / TotalNaissances\n",
" freqGarcons = effectifs['garçon'] / TotalNaissances\n",
" frequences_filles.append(freqFilles)\n",
" frequences_garcons.append(freqGarcons)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "iyAVpccFBjAw",
"colab_type": "text"
},
"source": [
"### Le graphique ci dessous permet de visualiser la fréquence des naissances des garçons dans $\\color{red}{400}$ villages :"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xdR44ePG2FG6",
"colab_type": "code",
"outputId": "2c393d44-ba4b-49e7-fc68-9c2884efca30",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
}
},
"source": [
"axes = plt.gca()\n",
"axes.figure.set_figwidth(15)\n",
"axes.set_xlabel('village')\n",
"axes.set_ylabel('frequence naissance garçons')\n",
"axes.set_ylim([0, 1])\n",
"axes.scatter(range(NVillages), frequences_garcons)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f29b18490f0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nOgKTJqRl78uSXiDpwej1jKS/l/RzJd9bJunuxOt7JD0ntc1/kCQz+7qkKUlr3f0L6R2Z2YUazAiq\nY489NiDIwHy0SAzfQojz1WedqNVX3zyvK+f0lPWuFTNpoU80sdDPv642W7cmraWsy94OcXqc3b5T\nU2ba7b73/2Vjnj7H8TqO4/09jmHCZAgp7B3k7nFBT+7+oJkd3OLxT5D0PA2WdPiamZ3i7tuTG7n7\n5ZIul6QVK1YwOQyAsRE/bBfCbJyxhd7taqGffxNtzug6abPDxmmj7R/s6fS4232//8c9fY7bdRzH\n+3scw4TJEVLYe8jMnuHu35QkM3umpJDqlllJxyReHx29l3SPpBvdfU7Sd8zsnzUo/N0UsP/eoLZm\nfCy0a7HQzrcrC6EFM2nSl9Vomu7bOP+Feu+12bo1ieOCu8grstJjWmj6rJIu20rD43YdR52/ZcXr\nqMNU10LN58ZNSGHvzZKuNrPvSzJJT5L0moDv3STpBDNbrkEh7zxJ/zm1zXpJ50v6azM7QoNund8O\nDHsvUFszPhbatVho54v2jGO3q1BtpPum57+Q7702W7e6aimbNKHprmy7KumyzTQ8btdxlPlbXrzm\nFebHOc9dyPncuCkt7Ln7TWZ2kqS4iuXOqCWu7Hu7zOxNkq7TYDzeFe5+m5m9Q9Imd98QffYiM7td\n0m5Jq939R3VPZhJVqa1ps8Zt3GpbugxP6L4nteasroV2vmjPuHW7KpPMAxZF45iSkpNBhOQVTc+/\n6b03Dvllk++02bo1rq3qw3zG5qXHrO2KwlUlXbb9/Mi7jiHxWDeu8743yvwtL16nMvKtYYWprlH9\nxhi337fjIKRlT5KeJen4aPtnmJnc/SNlX3L3azVYqiH53tsTf7uk347+LUihNUht1riNW21Ll+Gp\nsu9Jbq2oY6GdL9ozbt2uiuSNZ0pL16AX5RVNz7/JvTcu+eUwwjOphh0nWekxbWZ6SmectLQwXFXS\n5TCeHyHxWDeui743yvwtL/52u2tmemoi8tzYKH5jkB9lK116wcw+Kul/SHquBoW+Z0la0XG4FozQ\nqZjzakjectXN8xYfLZvGuOtpjqsujtpleKrsO+9aLDLr5UKvTAO+MLWxePEkLasRMp5JkqbMgvOK\npuff5N6rml9Wud518mKmzZ9vFHFy4OJ9P+cW2eD/KRv8EafP6+/Ylhuu9VtmtSjaPi0rXQ7j+RES\n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\nB4KOkZdui9L4g6kfg4cdPK0/WPXU3K6vVeK/Sj6YJ+u7t9yz7x55eNceTZnp0JlpPTy3JzffT6qa\nh9TJc5qkqar7jD28a8/evLdq3p91jmtf9hS96OQn7ffeuacepR89+Oh+8fD/n/HTmfGTfD/vmdWl\nsmtQ9Pllr3r6vHPKOveQcyhLP3nhWDIzretu+8G8+6boGZu+50Lv7yaq3N/j8Fu0zd9lWduV/W5M\np6W836Dp3waTXsC79NJL7127du3lZdvljtkzszPdfaOZvTzrc3f/TMMw1jJOY/aqimuGs9SZNrnp\noPIuhYwXy0p5IbO65cXjsiUze1s3QrYJ1ea+Ynm1kgdNL8qswVoyM61Hdu3Jjc/pRYPufsklGD53\n873z1vjrqh96k2sSKi/NpGWdY5fjcupK3r+HzkzroUd3ZY7PksLGuOalx6JzrzK1flJ64oIsTeK8\njXuuaHKiuNtTyDHK0m28fdnxssJdtO+yMXt146gonFX3VXSMLp5NTe/jrHBJ1ceQN8n7J1l6ApNY\n1Zm36x67Spqq84x96JFd87pyLrLBBFlFyyWE3HMhYQ9ZIqmNtNck78g6j9C8L/S4edulfwMkn5Eh\n93WddDjOv7Oldsbs/afo/3My/v1C4xAuQEXdBOJFItdvmQ3aV5yRzW7fKa/x/a7FfaDzxDWR0vyx\nUPFYo7z+0yELsTZZxD30O00Wo87rI57XZe/+nXO5Y1KWzExLJt23Y25vWvjYDd+b90A+7ODpzgo3\nTa5JUlHtXdZP08MOntbrTj+2tK/9uPXJT9+/23fOSa7McUYh41Sk4q6VeedeNw3ft2OuNL9pEudN\n77k4fosWHQ49Rtkxv799Z9DxqrwvSZe96um67JVPb5QPppWFs8q+yo7RxbOpSZrKC5ek/fYZokne\nP6ni+Ct7rnSR19ZJU3Wesen5Dw6eXqSpRbb32Vr1/q4S9vR2dY4VqknekT6Pt62/NTjva5rnxr8b\nk9dTUtB9XScdjvvv7Cpyx+y5+yXR/68fXnD6rWza3PQg57ypcetMc92FkL7XeS0HZTVIRf2ny6bJ\nLZrCvu6A5S6m5c06x7z4igcRZ8XJynUb5z2Asxx8wOJO0kZofIcsGv31NWdWagE8+IDFeueq/EqF\npPRYgPSCrF3X2JXV2s7tcR18wGJtefuLcsMu5dd6lk3zndWFMHQK8bxlUcrym7JxEHl5SJV7Lmsf\n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\n",
"text/plain": [
"<Figure size 1080x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kP9pX2FOTaKP",
"colab_type": "text"
},
"source": [
"# Intervalle de fluctuation au niveau 95%\n",
"Si la taille de l'échantillon $N ≥ 25$ et la probabilité p varie entre 0,2 et 0,8, c'est à dire $0.2< p < 0.8$ alors on trouvera la fréquence de naissance des garçons dans l'intervalle $I $ tel que: \n",
"\n",
"\n",
">>> $ I=[p-\\frac{1}{\\sqrt{N}}; p+\\frac{1}{\\sqrt{N}}] $\n",
"\n",
"Ici, on a: $p=0.5$ et $ N=100$, donc:\n",
">>> $ I=[0.5-\\frac{1}{\\sqrt{100}}; 0.5+\\frac{1}{\\sqrt{100}}] =[0.4;0.6]$\n",
"\n",
"Cela signifie que pour les 100 naissances de chaque village, dans 95% des villages, la fréquence de naissance de garçons doit être comprise entre 0,4 et 0,6.\n",
"\n",
"## Modélisation\n",
"Dans ce modèle, la naissance des garçons (des filles aussi) est aléatoire avec une probabilité $p=0.5$.\n",
"* On simule 100 naissances par village.\n",
"* On calcule la fréquence, $f_G$, de naissance des garçons.\n",
"* On répète la simulation des naissances dans 400 villages\n",
" \n",
"Dans les 400 villages, la fréquence des naissances des garçons varie aléatoirement (on dit qu'elle fluctue) entre 0,4 et 0,6. Sur 400 villages, la fréquence des naissances de garçons est hors de cet intervalle dans moins de cinq fois.\n",
"\n",
"Vérifions ci dessous que la modélisation informatique fonctionne. La proportion de villages dont la fréquence de naissance des garçons hors intervalle $[0,4 ; 0,6]$ doit être inférieure 5 %"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Dn_SSXIxhFVy",
"colab_type": "code",
"outputId": "db47f879-64ec-470e-94dd-8ce6e5d6df0c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 278
}
},
"source": [
"hors_Ifluc = 0\n",
"for compteur, freq in enumerate(frequences_garcons):\n",
" if freq<0.4 or 0.6 <freq:\n",
" print(\"la fréquence de naissance dans le \",compteur,\"ième village est hors intervalle et vaut:\",freq)\n",
" hors_Ifluc = hors_Ifluc + 1\n",
"print(\"Il y a:\",hors_Ifluc,\" villages sur\",NVillages,\" où la fréquence de naissance de garçons n'est pas dans l'intervalle [0.4; 0.6]. C'est à dire \", 100*hors_Ifluc/NVillages,\"% des villages\" )"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"la fréquence de naissance dans le 56 ième village est hors intervalle et vaut: 0.62\n",
"la fréquence de naissance dans le 105 ième village est hors intervalle et vaut: 0.62\n",
"la fréquence de naissance dans le 133 ième village est hors intervalle et vaut: 0.39\n",
"la fréquence de naissance dans le 135 ième village est hors intervalle et vaut: 0.61\n",
"la fréquence de naissance dans le 136 ième village est hors intervalle et vaut: 0.61\n",
"la fréquence de naissance dans le 138 ième village est hors intervalle et vaut: 0.39\n",
"la fréquence de naissance dans le 166 ième village est hors intervalle et vaut: 0.63\n",
"la fréquence de naissance dans le 222 ième village est hors intervalle et vaut: 0.37\n",
"la fréquence de naissance dans le 235 ième village est hors intervalle et vaut: 0.35\n",
"la fréquence de naissance dans le 275 ième village est hors intervalle et vaut: 0.61\n",
"la fréquence de naissance dans le 279 ième village est hors intervalle et vaut: 0.34\n",
"la fréquence de naissance dans le 282 ième village est hors intervalle et vaut: 0.39\n",
"la fréquence de naissance dans le 366 ième village est hors intervalle et vaut: 0.39\n",
"la fréquence de naissance dans le 372 ième village est hors intervalle et vaut: 0.36\n",
"Il y a: 14 villages sur 400 où la fréquence de naissance de garçons n'est pas dans l'intervalle [0.4; 0.6]. C'est à dire 3.5 % des villages\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fLxD_O-Vd2_o",
"colab_type": "text"
},
"source": [
"Si dans la vraie vie, on trouve un village où sur 100 naissances, la fréquence de naissance des garçons n'est pas dans l'intervalle $[0,4 ~;~ 0,6]$, on peut dire qu'avec 5% d'erreur, cette fréquence de naissance des garçons n'est pas due au hasard"
]
},
{
"cell_type": "code",
"metadata": {
"id": "AJI6049ugv5c",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "7C9WvfLefcuP",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment