Măsuri ale dispersiei

Introducere în Statistică cu Python

Maggie Matsui

Content Developer, DataCamp

Ce este dispersia?

Două histograme: una îngustă cu date pe câteva valori, una mai largă cu date pe mai multe valori.

Introducere în Statistică cu Python

Varianța

Distanța medie de la fiecare punct la media datelor

Un dot plot cu 7 puncte de date și o linie roșie în mijloc reprezentând media.

Introducere în Statistică cu Python

Varianța

Distanța medie de la fiecare punct la media datelor

Un dot plot cu 7 puncte de date și o linie roșie în mijloc reprezentând media. Săgeți sunt trasate între fiecare punct și linia mediei.

Introducere în Statistică cu Python

Calculul varianței

1. Scădeți media din fiecare punct

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. Ridicați fiecare distanță la pătrat

sq_dists = dists ** 2
print(sq_dists)
0      2.776439
1     43.115837
2     15.731259
3     19.947524
4     41.392945
      ...
Introducere în Statistică cu Python

Calculul varianței

3. Suma distanțelor la pătrat

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

4. Împărțire la numărul de puncte - 1

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

Utilizați np.var()

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

Fără ddof=1, se calculează varianța populației în loc de varianța eșantionului:

np.var(msleep['sleep_total'])
19.567055
Introducere în Statistică cu Python

Abaterea standard

np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357
Introducere în Statistică cu Python

Deviația medie absolută

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

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

Abaterea standard vs. deviația medie absolută

  • Abaterea standard pătratizează distanțele, penalizând mai mult distanțele mari.
  • Deviația medie absolută penalizează fiecare distanță în mod egal.
  • Niciuna nu este superioară, dar AS este mai utilizată decât DMA.
Introducere în Statistică cu Python

Cuantile

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

$$

                        cuantila 0,5 = mediana

Cuartile:

np.quantile(msleep['sleep_total'], [0, 0.25, 0.5, 0.75, 1])
array([ 1.9 ,  7.85, 10.1 , 13.75, 19.9 ])
Introducere în Statistică cu Python

Boxplot-urile utilizează cuartile

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

Boxplot pentru sleep_total.

Introducere în Statistică cu Python

Cuantile cu 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 ])
Introducere în Statistică cu Python

Intervalul intercuartilic (IQR)

Înălțimea casetei într-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
Introducere în Statistică cu Python

Valori aberante

Valoare aberantă: punct de date semnificativ diferit de celelalte

Cum determinăm o diferență semnificativă? Un punct de date este o valoare aberantă dacă:

  • $\text{data} < \text{Q1} - 1.5\times\text{IQR}$    sau
  • $\text{data} > \text{Q3} + 1.5\times\text{IQR}$
Introducere în Statistică cu Python

Identificarea valorilor aberante

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
...
Introducere în Statistică cu Python

Totul dintr-o singură comandă

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
Introducere în Statistică cu Python

Să exersăm!

Introducere în Statistică cu Python

Preparing Video For Download...