Dati normali

Progettazione Sperimentale in Python

James Chapman

Curriculum Manager, DataCamp

La distribuzione normale

 

  • La familiare forma a "campana"
  • Collegata allo z-score

$$ {z} = \frac{x-\mu}{\sigma}$$

  • Media = 0, dev. std = 1
    • "Quante deviazioni standard è questo punto dalla media?"
    • "Qual è la probabilità di ottenere questo punteggio?"

 

Grafico di una tipica curva a campana, linea blu su sfondo bianco.

Progettazione Sperimentale in Python

Dati normali e test statistici

 

  • Richiesta per test parametrici
  • I test non parametrici non assumono normalità

 

Grafico di una tipica curva a campana, linea blu su sfondo bianco.

Progettazione Sperimentale in Python

Normale, Z e alpha

 

  • Legato al livello di significatività ($\alpha$)
  • Confronta il p-value con $\alpha$
  • Probabilità di errore di Tipo I

 

Distribuzione normale con piccole aree nere in entrambe le code

Progettazione Sperimentale in Python

Visualizzare dati normali

 

sns.displot(data=salaries,
            x='salary',
            kind="kde")
plt.show()

 

Una curva a campana più stretta e alta del solito, ma con la tipica forma a campana

Progettazione Sperimentale in Python

QQ plot

QQ plot: confronta i dati con una distribuzione

from statsmodels.graphics.gofplots import qqplot
from scipy.stats.distributions import norm
qqplot(salaries['salary'], 
       line='s', 
       dist=norm)
plt.show()
  • Ideale: punti aderenti alla retta
  • Difetto: incurvati alle estremità

 

Un QQ plot dove i punti aderiscono quasi tutti alla linea a 45° centrale

Un QQ plot dove i punti al centro aderiscono alla linea a 45°, ma alle estremità si incurvano verso l'interno formando una curva

Progettazione Sperimentale in Python

Test di normalità

 

  • Shapiro-Wilk (ottimo per dataset piccoli)
  • D'Agostino $K^2$ (usa curtosi e asimmetria)
  • Anderson-Darling (restituisce una lista di valori)

 

$H_0$ = "I dati provengono da una Normale"

Progettazione Sperimentale in Python

Test di Shapiro-Wilk

 

from scipy.stats import shapiro
alpha = 0.05

stat, p = shapiro(salaries['salary']) print(f"p: {round(p,4)} test stat: {round(stat,4)}")
p: 0.8293 test stat: 0.9956
  • p > alpha
    • Non rifiutare $H_0$ → probabilmente normale
Progettazione Sperimentale in Python

Test di Anderson-Darling

from scipy.stats import anderson
result = anderson(x=salaries['salary'], dist="norm")
print(round(result.statistic,4))
print(result.significance_level)
print(result.critical_values)
0.2748
[15.  10.   5.   2.5  1. ]
[0.572 0.651 0.781 0.911 1.084]
  • 0.2748 < [0.572 0.651 0.781 0.911 1.084]
    • Non rifiutare $H_0$ → probabilmente normale
Progettazione Sperimentale in Python

Passons à la pratique !

Progettazione Sperimentale in Python

Preparing Video For Download...