SciPy – Esempi grafici di Distribuzione normale
Nel capitolo precedente abbiamo visto come che cos’è e come calcolare velocemente la distribuzione normale con alcuni esempi pratici dal punto di vista numerico.
In questo capitolo invece andremo più nel dettaglio rappresentando graficamente i dati per capire ancora meglio come utilizzare queste funzioni di SciPy.
Per prima cosa andremo a creare un array contenente 10000 campioni e andremo a rappresentarlo in un grafico ad istogramma.
Per un ripasso su come utilizzare i grafici ad istogramma in python potete andare a questo capitolo della guida: Matplotlib – Grafico a istogramma
from scipy.stats import norm import numpy as np import matplotlib.pyplot as plt r = np.random.randn(10000) plt.hist(r, bins=100) Out[34]: (array([ 2., 0., 0., 0., 0., 1., 1., 2., 0., 4., 5., 0., 2., 3., 2., 8., 9., 8., 11., 15., 19., 22., 26., 31., 48., 53., 53., 64., 74., 53., 98., 109., 104., 136., 139., 154., 176., 160., 143., 190., 215., 225., 250., 255., 270., 290., 293., 303., 294., 296., 299., 305., 328., 303., 293., 276., 272., 282., 282., 247., 251., 221., 194., 184., 208., 185., 143., 139., 111., 107., 86., 84., 86., 72., 54., 73., 44., 38., 37., 33., 24., 23., 21., 20., 8., 14., 10., 6., 6., 5., 1., 0., 3., 2., 0., 3., 0., 0., 0., 1.]), array([-3.93843187, -3.86150767, -3.78458348, -3.70765928, -3.63073508, -3.55381089, -3.47688669, -3.39996249, -3.3230383 , -3.2461141 , -3.1691899 , -3.09226571, -3.01534151, -2.93841731, -2.86149312, -2.78456892, -2.70764472, -2.63072053, -2.55379633, -2.47687213, -2.39994794, -2.32302374, -2.24609954, -2.16917535, -2.09225115, -2.01532695, -1.93840276, -1.86147856, -1.78455436, -1.70763017, -1.63070597, -1.55378177, -1.47685758, -1.39993338, -1.32300918, -1.24608498, -1.16916079, -1.09223659, -1.01531239, -0.9383882 , -0.861464 , -0.7845398 , -0.70761561, -0.63069141, -0.55376721, -0.47684302, -0.39991882, -0.32299462, -0.24607043, -0.16914623, -0.09222203, -0.01529784, 0.06162636, 0.13855056, 0.21547475, 0.29239895, 0.36932315, 0.44624734, 0.52317154, 0.60009574, 0.67701993, 0.75394413, 0.83086833, 0.90779252, 0.98471672, 1.06164092, 1.13856511, 1.21548931, 1.29241351, 1.3693377 , 1.4462619 , 1.5231861 , 1.60011029, 1.67703449, 1.75395869, 1.83088288, 1.90780708, 1.98473128, 2.06165548, 2.13857967, 2.21550387, 2.29242807, 2.36935226, 2.44627646, 2.52320066, 2.60012485, 2.67704905, 2.75397325, 2.83089744, 2.90782164, 2.98474584, 3.06167003, 3.13859423, 3.21551843, 3.29244262, 3.36936682, 3.44629102, 3.52321521, 3.60013941, 3.67706361, 3.7539878 ]),
Il grafico che visualizzeremo sarà simile al seguente:
Nel grafico ad istogramma si vede chiaramente la forma della curva Gaussiana generata dalla funzione randn.
Scaliamo il grafico
In questo esempio vediamo come scalare il grafico della distribuzione normale moltiplicando per 10 ed aggiungendo 20, il risultato è il seguente:
from scipy.stats import norm import numpy as np import matplotlib.pyplot as plt r = 10 * np.random.randn(10000) + 20 plt.hist(r, bins=100) Out[52]: (array([ 1., 0., 0., 0., 0., 2., 2., 2., 2., 3., 4., 8., 4., 9., 9., 7., 16., 12., 17., 19., 24., 25., 48., 46., 42., 54., 57., 79., 90., 96., 115., 112., 142., 140., 147., 156., 175., 204., 175., 194., 224., 235., 258., 285., 281., 294., 259., 310., 307., 311., 306., 282., 287., 296., 267., 297., 262., 265., 226., 255., 200., 205., 196., 159., 161., 167., 150., 127., 107., 113., 81., 79., 78., 58., 55., 45., 52., 40., 25., 28., 26., 11., 24., 13., 6., 9., 11., 5., 4., 7., 1., 2., 1., 2., 1., 3., 1., 0., 1., 1.]), array([-17.42715237, -16.68030858, -15.93346478, -15.18662099, -14.43977719, -13.6929334 , -12.9460896 , -12.19924581, -11.45240201, -10.70555822, -9.95871442, -9.21187062, -8.46502683, -7.71818303, -6.97133924, -6.22449544, -5.47765165, -4.73080785, -3.98396406, -3.23712026, -2.49027647, -1.74343267, -0.99658888, -0.24974508, 0.49709871, 1.24394251, 1.99078631, 2.7376301 , 3.4844739 , 4.23131769, 4.97816149, 5.72500528, 6.47184908, 7.21869287, 7.96553667, 8.71238046, 9.45922426, 10.20606805, 10.95291185, 11.69975564, 12.44659944, 13.19344323, 13.94028703, 14.68713083, 15.43397462, 16.18081842, 16.92766221, 17.67450601, 18.4213498 , 19.1681936 , 19.91503739, 20.66188119, 21.40872498, 22.15556878, 22.90241257, 23.64925637, 24.39610016, 25.14294396, 25.88978776, 26.63663155, 27.38347535, 28.13031914, 28.87716294, 29.62400673, 30.37085053, 31.11769432, 31.86453812, 32.61138191, 33.35822571, 34.1050695 , 34.8519133 , 35.59875709, 36.34560089, 37.09244468, 37.83928848, 38.58613228, 39.33297607, 40.07981987, 40.82666366, 41.57350746, 42.32035125, 43.06719505, 43.81403884, 44.56088264, 45.30772643, 46.05457023, 46.80141402, 47.54825782, 48.29510161, 49.04194541, 49.7887892 , 50.535633 , 51.2824768 , 52.02932059, 52.77616439, 53.52300818, 54.26985198, 55.01669577, 55.76353957, 56.51038336, 57.25722716]), <a list of 100 Patch objects>)