Misure di dispersione

Introduzione alla statistica in Python

Maggie Matsui

Content Developer, DataCamp

Cos'è la dispersione?

Due istogrammi: uno stretto con pochi valori, uno più largo con valori più dispersi.

Introduzione alla statistica in Python

Varianza

Distanza media di ogni dato dalla media

Un dot plot con 7 punti e una linea rossa al centro che indica la media.

Introduzione alla statistica in Python

Varianza

Distanza media di ogni dato dalla media

Un dot plot con 7 punti e una linea rossa al centro che indica la media. Frecce collegano ogni punto alla linea della media.

Introduzione alla statistica in Python

Calcolare la varianza

1. Sottrai la media da ogni dato

dists = msleep['sleep_total'] - 
        np.mean(msleep['sleep_total'])
print(dists)
0     1.666265
1     6.566265
2     3.966265
3     4.466265
4    -6.433735
      ...

2. Eleva al quadrato ogni distanza

sq_dists = dists ** 2
print(sq_dists)
0      2.776439
1     43.115837
2     15.731259
3     19.947524
4     41.392945
      ...
Introduzione alla statistica in Python

Calcolare la varianza

3. Somma delle distanze al quadrato

sum_sq_dists = np.sum(sq_dists)
print(sum_sq_dists)
1624.065542

4. Dividi per numero di dati - 1

variance = sum_sq_dists / (83 - 1)
print(variance)
19.805677

Usa np.var()

np.var(msleep['sleep_total'], ddof=1)
19.805677

Senza ddof=1, si calcola la varianza della popolazione invece della varianza campionaria:

np.var(msleep['sleep_total'])
19.567055
Introduzione alla statistica in Python

Deviazione standard

np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357
Introduzione alla statistica in Python

Deviazione media assoluta

dists = msleep['sleep_total'] - np.mean(msleep['sleep_total'])

np.mean(np.abs(dists))
3.566701

Deviazione standard vs. deviazione media assoluta

  • La deviazione standard eleva al quadrato le distanze, penalizzando di più quelle lunghe.
  • La deviazione media assoluta penalizza ogni distanza allo stesso modo.
  • Nessuna è "migliore", ma la DS è più comune della DMA.
Introduzione alla statistica in Python

Quantili

np.quantile(msleep['sleep_total'], 0.5)
10.1

$$

                        Quantile 0.5 = mediana

Quartili:

np.quantile(msleep['sleep_total'], [0, 0.25, 0.5, 0.75, 1])
array([ 1.9 ,  7.85, 10.1 , 13.75, 19.9 ])
Introduzione alla statistica in Python

I boxplot usano i quartili

import matplotlib.pyplot as plt
plt.boxplot(msleep['sleep_total'])
plt.show()

boxplot di sleep_total.png

Introduzione alla statistica in Python

Quantili con np.linspace()

np.quantile(msleep['sleep_total'], [0, 0.2, 0.4, 0.6, 0.8, 1])
array([ 1.9 ,  6.24,  9.48, 11.14, 14.4 , 19.9 ])

 

np.linspace(start, stop, num)

np.quantile(msleep['sleep_total'], np.linspace(0, 1, 5))
array([ 1.9 ,  7.85, 10.1 , 13.75, 19.9 ])
Introduzione alla statistica in Python

Intervallo interquartile (IQR)

Altezza della scatola in un boxplot

np.quantile(msleep['sleep_total'], 0.75) - np.quantile(msleep['sleep_total'], 0.25)
5.9
from scipy.stats import iqr
iqr(msleep['sleep_total'])
5.9
Introduzione alla statistica in Python

Outlier

Outlier: punto dati sostanzialmente diverso dagli altri

Come definiamo "sostanzialmente"? Un punto è outlier se:

  • $\text{dati} < \text{Q1} - 1.5\times\text{IQR}$    oppure
  • $\text{dati} > \text{Q3} + 1.5\times\text{IQR}$
Introduzione alla statistica in Python

Trovare gli outlier

from scipy.stats import iqr
iqr = iqr(msleep['bodywt'])

lower_threshold = np.quantile(msleep['bodywt'], 0.25) - 1.5 * iqr upper_threshold = np.quantile(msleep['bodywt'], 0.75) + 1.5 * iqr
msleep[(msleep['bodywt'] < lower_threshold) | (msleep['bodywt'] > upper_threshold)]
                    name   vore  sleep_total    bodywt
4                    Cow  herbi          4.0   600.000
20        Asian elephant  herbi          3.9  2547.000
22                 Horse  herbi          2.9   521.000
...
Introduzione alla statistica in Python

Tutto in una volta

msleep['bodywt'].describe()
count      83.000000
mean      166.136349
std       786.839732
min         0.005000
25%         0.174000
50%         1.670000
75%        41.750000
max      6654.000000
Name: bodywt, dtype: float64
Introduzione alla statistica in Python

Passons à la pratique !

Introduzione alla statistica in Python

Preparing Video For Download...