"\"\"\"Voici un autre import qu'il faut connaître :\n",
"scipy= sci-entific py-thon \"\"\"\n",
"import scipy.stats as stats\n",
"%matplotlib inline "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4 mots clefs à retenir (qui permettent aussi d'améliorer son anglais scientifique) :\n",
"\n",
"* pdf -> Probability density function. -> densité (prend des réels en argument)\n",
"* pmf -> Probability mass function -> densité discrète (prend des entiers en argument)\n",
"\n",
"* cdf -> Cumulative density function. -> fonction de répartition\n",
"* ppf -> Percent point function (inverse of cdf ) -> fonction quantile (ou percentile)\n",
"\n",
"* rvs -> Random variates. -> simulation d'un échantillon de va ayant la loi donnée\n",
"\n",
"\n",
"A ce point du TP, vous vous dites qu'il y a vraiment trop de choses à retenir. Mais nous\n",
"allons les pratiquez très souvent : cela rentrera tout seul."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Densité, fonction de réparition, quantiles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### une loi continue"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/vigon/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
" warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
"Le tracé de la ppf ci-dessus n'est pas très joli, on a l'impression qu'il est incomplet.\n",
"Changez cela. \n",
"\n",
"Aide: n'oubliez pas qu'une courbe, c'est des points qu'on relie entre eux, et que ces points, c'est vous qui les spécifiez. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### une loi discrète"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/vigon/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
" warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
"Mais attention : si on ne précise pas le nom des arguments, ils sont pris dans l'ordre `1:loc 2:scale 3:size`\n",
"Par exemple, si je veux tirer 1000 gaussienne et que j'écris\n",
"\n",
" simus=stat.norm.rvs(1000)\n",
"\n",
"mon programme bug car cela correspond à \n",
"\n",
" simus=stat.norm.rvs(loc=1000)\n",
"\n",
"Je vous conseille d'écrire quasi tout le temps le nom des arguments pour éviter ce genre de confusion ; sauf quand il s'agit d'un argument obligatoire évident comme dans `plt.plot(x,y)`. \n",
"\n",
"Ou bien, conseil plus simple: adopter dans un premier temps la façon dont sont codés ces TP. Quand vous serez des vieux routier du python, vous créerez votre propre style. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## lois continues classiques"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### paramètres de localisation et d'échelle\n",
"\n",
"Toutes les lois dans scipy ont un paramètre de localisation `loc` que nous notons ici $\\mu$ et un paramètre d'échelle `scale` que nous notons ici $\\sigma$. Leur interprétation est la suivante :\n",
"\n",
"Si l'appel de `stats.xxx.rvs()` renvoie une v.a $X$\n",
"alors `stats.xxx.rvs(loc=mu,scale=sigma)` renvoie une v.a ayant la même loi que sigma $\\sigma X + \\mu$. Ainsi ces deux paramètres effectue à des translation et dilatation de la densité comme l'indique la proposition suivante :\n",
"\n",
"\n",
"\n",
"\n",
"***Proposition :*** si $x\\to f(x)$ est la densité d'une va $X$, alors la densité de $\\sigma X + \\mu$ est:\n",
"Considérons $\\phi$ fonction teste et $X$ une va de densité $f$\n",
"$$\n",
" \\mathbf E[\\phi( \\sigma X + mu )] = \\int \\phi( \\sigma x + \\mu) \\ f(x) \\ dx \n",
"$$\n",
"On effectue le changement de variable $\\sigma x + \\mu \\to y$ \n",
"$$\n",
" \\mathbf E[\\phi( \\sigma X + mu )] = \\int \\phi( y) \\ f(... ) \\ dy ... \n",
"$$\n",
"On en déduit que ... \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loi Normale\n",
"\n",
" norm.pdf(x) = exp(-x**2/2)/sqrt(2*pi)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/vigon/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
" warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
"EXO : Reprenez le dernier programme, améliorez-le car il souffre d'un défaut classique. \n",
"Faites varier les paramètres loc et scale. Supperposer plusieurs graphique pour que l'on comprennent bien les effets de dilatation et de translation de ces paramètres. \n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Paramètres de forme\n",
"\n",
"Pour toutes les loi suivantes, nous ne nous occuperons plus des paramètres loc et scale, pour nous concentrer sur les autres paramètres (quand ils existent). Ces autres paramètres sont appelé paramètres de forme. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loi gamma\n",
"\n",
"\tgamma.pdf(x, a) = x**(a-1) * exp(-x) / gamma(a)\n",
"\n",
"Pour quelle valeur de `a` retrouve-t-on une loi exponentielle ?\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/vigon/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
" warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
"Exo: Le paramètre des forme est a. Quand il est entier il a l'interprétation suivante : gamma(a) est la loi de la somme de a v.a. exponentielle indépendantes. Illustrer ce fait par des simulations. \n",
"\n",
"Exo: pour quels paramètres a la densité est-elle monotone ? "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loi Beta\n",
"\n",
"\n",
" gamma(a+b) * x**(a-1) * (1-x)**(b-1)\n",
" beta.pdf(x, a, b) = ------------------------------------\n",
" gamma(a)*gamma(b)\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/vigon/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
" warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
"Exo : faites varier a et b de manière à faire apparaitres tous les 'type' possible de loi béta : cloche, smiley ,décroissant, croissant"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lois à Queues lourdes\n",
"\n",
"Une loi est dites à queue lourde lorsque les v.a qui ont cette loi peuvent prendre, de temps en temps, des grandes valeurs positives ou négatives. Elle servent à modéliser des évènements rare et violent (ex: crue d'un fleuve). "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"\"\"\" une fonction effectuant un histogramme tronqué \"\"\"\n",