Introduzione alla statistica in Python
Maggie Matsui
Content Developer, DataCamp

Distanza media di ogni dato dalla media

Distanza media di ogni dato dalla media

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
...
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
np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357
dists = msleep['sleep_total'] - np.mean(msleep['sleep_total'])np.mean(np.abs(dists))
3.566701
Deviazione standard vs. deviazione media assoluta
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 ])
import matplotlib.pyplot as plt
plt.boxplot(msleep['sleep_total'])
plt.show()

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 ])
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
Outlier: punto dati sostanzialmente diverso dagli altri
Come definiamo "sostanzialmente"? Un punto è outlier se:
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
...
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