Salta al contenuto
Note per Studenti Esercizio - Statistica descrittiva, quartili e standardizzazione di un dataset

Esercizio - Statistica descrittiva, quartili e standardizzazione di un dataset

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 6

Testo. Dato il vettore X=[1,2,2,3,4,7,9,10,10,10,12]X=[1,2,2,3,4,7,9,10,10,10,12] (n=11n=11, dalle slide sulla moda):

  1. calcolare media, mediana, moda, varianza (con divisore nn e con divisore n−1n-1) e deviazione standard;
  2. calcolare asimmetria e curtosi e classificare la forma;
  3. calcolare Q1Q_1, Q2Q_2, Q3Q_3 e l'IQR con la convenzione senza interpolazione dell'esame, e dire se esistono outlier secondo il box plot;
  4. standardizzare il vettore con lo z-score e verificare che media e deviazione standard dei nuovi valori valgono 00 e 11.

Teoria usata: Statistica per il machine learningI dati di un problema ML si organizzano nella matrice di progetto $X$ ($n$ osservazioni, $p$ variabili). La statistica serve a capirli, ripulirli e prepararli: i momenti (media $\mu$, varianza $\sigma^2$, asimmetria, curtosi), i quartili con lo scarto interquartile $\mathrm{IQR}=Q_3-Q_1$ (all'esame senza interpolazione), la moda per i dati categorici. Con queste quantità si imputano i dati mancanti (media o mediana), si eliminano le variabili costanti e si standardizza con lo z-score $z=(x-\mu)/\sigma$, usando sempre media e deviazione standard del solo training set.Statistica per il machine learning →, Correlazione e visualizzazione dei datiLa correlazione di Pearson $r=\sum(X_i-\bar X)(Y_i-\bar Y)/\big(\sqrt{\sum(X_i-\bar X)^2}\sqrt{\sum(Y_i-\bar Y)^2}\big)\in[-1,1]$ misura la relazione lineare tra due variabili (covarianza divisa per le deviazioni standard); correlazione non implica causalità. Serve a capire quali variabili contano per il target e a eliminare quelle quasi duplicate (|r| molto alto). Gli indicatori di sintesi non bastano (quartetto di Anscombe, Datasaurus): vanno affiancati ai grafici: istogramma, KDE, box plot, violin plot, heatmap di correlazione, scatter plot e matrice di scatter plot.Correlazione e visualizzazione dei dati →; la media e la varianza sono quelle di Valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso → e Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →. Il calcolo con Python è in Python per il machine learning - NumPy, pandas e MatplotlibIl corso usa Python in Jupyter/Colab. Servono: variabili e tipi, if/for/while, funzioni (i tipi immutabili si passano per valore: per cambiare un numero la funzione deve restituirlo), classi, e le strutture list, tuple, set, dict. NumPy gestisce array e algebra lineare (assi, broadcasting, @, hstack, np.cov(rowvar=False)), pandas le tabelle (read_csv, filtri, value_counts, statistiche; var con $n-1$ contro np.var con $n$), Matplotlib e seaborn i grafici (istogrammi, box plot, heatmap, pair plot). Trappole tipiche: forma $(n,)$ contro $(n,1)$, asse sbagliato, statistiche calcolate sul dataset intero.Python per il machine learning - NumPy, pandas e Matplotlib →.

1. Media, mediana, moda, varianza

Media. Somma 1+2+2+3+4+7+9+10+10+10+12=701+2+2+3+4+7+9+10+10+10+12=70, quindi μ=70/11=6,364\mu=70/11=6{,}364.

Mediana. I dati sono già ordinati e n=11n=11 è dispari: la mediana è il sesto valore (quello con cinque valori prima e cinque dopo): 77. (Il notebook di laboratorio definisce la mediana come l'elemento di indice ⌊n/2⌋+1\lfloor n/2\rfloor+1, contando da 1: ⌊11/2⌋+1=6\lfloor11/2\rfloor+1=6, lo stesso valore; per nn pari darebbe il valore centrale superiore.)

Moda. Il valore più frequente è 1010 (compare 3 volte).

Scarti dalla media. Xi−μ=[−5,364; −4,364; −4,364; −3,364; −2,364; 0,636; 2,636; 3,636; 3,636; 3,636; 5,636]X_i-\mu=[-5{,}364;\,-4{,}364;\,-4{,}364;\,-3{,}364;\,-2{,}364;\,0{,}636;\,2{,}636;\,3{,}636;\,3{,}636;\,3{,}636;\,5{,}636].

Varianza. Quadrati degli scarti: [28,77; 19,04; 19,04; 11,31; 5,59; 0,40; 6,95; 13,22; 13,22; 13,22; 31,77][28{,}77;\,19{,}04;\,19{,}04;\,11{,}31;\,5{,}59;\,0{,}40;\,6{,}95;\,13{,}22;\,13{,}22;\,13{,}22;\,31{,}77] con somma 162,55162{,}55. Con divisore nn (popolazione, come nelle slide): σ2=162,55/11=14,78\sigma^2=162{,}55/11=14{,}78 e σ=14,78=3,844\sigma=\sqrt{14{,}78}=3{,}844. Con divisore n−1n-1 (stima corretta, come fa pandas): 162,55/10=16,25162{,}55/10=16{,}25 e deviazione standard 4,0324{,}032. La differenza è del 10%10\% perché nn è piccolo.

2. Asimmetria e curtosi

Cubi degli scarti: la somma vale −29,85-29{,}85. Skew⁡=−29,8511⋅σ3=−29,8511⋅56,80=−0,048\operatorname{Skew}=\dfrac{-29{,}85}{11\cdot\sigma^3}=\dfrac{-29{,}85}{11\cdot56{,}80}=-0{,}048 (con σ3=3,8443=56,80\sigma^3=3{,}844^3=56{,}80): praticamente simmetrica (appena una coda a sinistra).

Quarte potenze: somma 3294,33294{,}3. Kurt⁡=3294,311⋅σ4=3294,311⋅218,36=1,37<3\operatorname{Kurt}=\dfrac{3294{,}3}{11\cdot\sigma^4}=\dfrac{3294{,}3}{11\cdot218{,}36}=1{,}37<3 (con σ4=14,7772=218,36\sigma^4=14{,}777^2=218{,}36): distribuzione platicurtica (code più leggere della normale).

3. Quartili senza interpolazione e outlier

Le percentuali cumulate dei valori ordinati sono i/11i/11: 9,09%; 18,18%; 27,27%; 36,36%; 45,45%; 54,55%; 63,64%; 72,73%; 81,82%; 90,91%; 100%9{,}09\%;\,18{,}18\%;\,27{,}27\%;\,36{,}36\%;\,45{,}45\%;\,54{,}55\%;\,63{,}64\%;\,72{,}73\%;\,81{,}82\%;\,90{,}91\%;\,100\%.

  • Q1Q_1: primo valore con percentuale ≥25%\ge25\%: il terzo (27,27%27{,}27\%), cioè Q1=2Q_1=2.
  • Q2Q_2: primo ≥50%\ge50\%: il sesto (54,55%54{,}55\%), Q2=7Q_2=7 (coincide con la mediana).
  • Q3Q_3: primo ≥75%\ge75\%: il nono (81,82%81{,}82\%), Q3=10Q_3=10.

IQR=10−2=8\mathrm{IQR}=10-2=8. Il box plot considera outlier i valori fuori da [Q1−1,5 IQR,  Q3+1,5 IQR]=[2−12,  10+12]=[−10,  22][Q_1-1{,}5\,\mathrm{IQR},\;Q_3+1{,}5\,\mathrm{IQR}]=[2-12,\;10+12]=[-10,\;22]: tutti i dati (11 e 1212 compresi) sono dentro, nessun outlier.

4. Standardizzazione

zi=Xi−μσz_i=\dfrac{X_i-\mu}{\sigma} con σ=3,844\sigma=3{,}844: [−1,395; −1,135; −1,135; −0,875; −0,615; 0,166; 0,686; 0,946; 0,946; 0,946; 1,466][-1{,}395;\,-1{,}135;\,-1{,}135;\,-0{,}875;\,-0{,}615;\,0{,}166;\,0{,}686;\,0{,}946;\,0{,}946;\,0{,}946;\,1{,}466]. La somma dei ziz_i è zero perché è la somma degli scarti divisa per σ\sigma, quindi media 00; la varianza è 1n∑zi2=∑(Xi−μ)2nσ2=1\frac1n\sum z_i^2=\frac{\sum(X_i-\mu)^2}{n\sigma^2}=1. Usando invece il divisore n−1n-1 (σ=4,032\sigma=4{,}032) i valori sono più piccoli in modulo (per esempio −1,330-1{,}330 per il primo) e la deviazione standard dei zz calcolata con nn non è 11 ma 10/11=0,953\sqrt{10/11}=0{,}953: bisogna usare lo stesso divisore nei due passaggi.

Verifica con Python

python
import numpy as np
from scipy import stats
x = np.array([1,2,2,3,4,7,9,10,10,10,12.])
print(x.mean(), np.median(x), x.var(), x.std(), x.var(ddof=1))   # 6.364 7.0 14.777 3.844 16.255
print(stats.skew(x), stats.kurtosis(x, fisher=False))             # -0.0478 1.3715
print(np.percentile(x, [25, 50, 75], method="inverted_cdf"))      # [ 2.  7. 10.]
z = (x - x.mean()) / x.std(); print(z.mean(), z.std())            # 0.0 1.0

method="inverted_cdf" riproduce la regola «primo valore con percentuale almeno qq» delle slide (non "higher", usato nei notebook, che qui darebbe Q1=3Q_1=3).

Domanda d'esame collegata

Nella simulazione dell'appello (lezione 14): «qual è la mediana del vettore?». Con i dati ordinati [1,3,5,5,5,7,9][1,3,5,5,5,7,9] (n=7n=7) la mediana è il quarto valore, 55.

Lezioni in cui compare

Teoria collegata