DEV Community

Cover image for Indici statistici: descrizione e implementazione in pandas
Nicola Iantomasi
Nicola Iantomasi

Posted on

Indici statistici: descrizione e implementazione in pandas

Nel campo della statistica, gli indici sono valori numerici fondamentali che forniscono un riassunto efficiente di grandi quantità di dati. Questo articolo esplorerà due categorie chiave di indici, quelli univariati e multivariati, parlando anche della relativa implementazione con la libreria Pandas di Python.

Indici di statistica univariati con Pandas

Gli indici univariati consentono un'analisi approfondita di una singola variabile all'interno di un insieme di dati. Partiamo allora creando un _DataFrame _con una sola colonna _Voti _

import pandas as pd
Voti = pd.DataFrame(data=[25,23,28,25,24,29,25],columns = ["Voto"] )
Voti
Enter fullscreen mode Exit fullscreen mode

dataframe d'esempio per calcolo degli indici statistici

Tramite il metodo describe otteniamo con una sola riga di codice il valore dei principali indici statistici di posizione e di variabilità. Facciamo attenzione però al valori di std che corrisponde alla stima della deviazione standard della popolazione da cui è estratto il campione (al denominatore della formula ho n-1).

Voti.describe()

output del metodo describe di pandas

Per calcolare gli indici di forma possiamo creare prima una colonna con i valori standardizzati e poi applicare le formule degli indici di Fisher e di curtosi.

Voti["Voto_StandardScaler"] = (Voti["Voto"]-media)/deviazione_standard
AsimmetriaFisher = Voti["Voto_StandardScaler"].pow(3).mean()
Curtosi = Voti["Voto_StandardScaler"].pow(4).mean() - 3
Enter fullscreen mode Exit fullscreen mode

Indici di statistica bivariati con Pandas

Gli indici multivariati sono utilizzati per descrivere le relazioni tra due o più variabili in un insieme di dati. In base alla classificazione delle variabili statistiche è possibile calcolare l'associazione per tutte le combinazioni possibili:

  • due variabili qualitative: si utilizzano comunemente l'indice Chi quadrato e la sua versione normalizzata, la *V di Cramer *

  • una variabile qualitativa e una quantitativa per i quale usiamo generalmente l'indice eta quadro

  • due variabili quantitative di cui il coefficiente di correlazione di Pearson e quello di Spearman sono due esempi

Nel prossimo paragrafo ci concentreremo sugli indici relativi alle variabili qualitative

Indice Chi Quadrato e indice V di Cramer con Pandas

Vediamo il codice per calcolare gli indici Chi Quadrato e V di Cramer con Pandas. Partiamo da un Dataframe con due colonne che contengono dati di tipo qualitativo, contenenti ad esempio il colore degli occhi e l'area geografica, di nome DatiCramer.

Partiamo calcolando le frequenze osservate
FreqOsservate = DatiCramer.groupby(by = ["Occhi","Area geografica"],
dropna = False,
as_index = False).agg(conteggio = ("Occhi", np.size))

Eseguiamo il pivot dei dati

FreqOsservatePivot = FreqOsservate.pivot(columns = "Area geografica",
index = "Occhi", ).fillna(0)
Enter fullscreen mode Exit fullscreen mode

Creiamo la tabella di contingenza con l'ausilio della libreria scipy

import scipy.stats as stats
stats.chi2_contingency(FreqOsservatePivot, correction=False)
Enter fullscreen mode Exit fullscreen mode

A questo punto possiamo calcolare l'indice chi-quadrato

indice_chi_quadrato = stats.chi2_contingency(FreqOsservatePivot,
correction=False)[0]
Enter fullscreen mode Exit fullscreen mode

e l'indice V di Cramer

n = len(DatiCramer)
k = len(DatiCramer["Occhi"].unique())
r = len(DatiCramer["Area geografica"].unique())
indice_v_cramer = pow(indice_chi_quadrato / (n*max(k-1,r-1)),0.5)
indice_v_cramer
Enter fullscreen mode Exit fullscreen mode

Indice di correlazione di Pearson e di Spearman con Pandas

Il calcolo degli indici di associazione tra due variabili quantitative è molto più immediato. Pandas infatti ci mette a disposizione il metodo corr utilizzabile per calcolare le correlazioni tra tutte le coppie di variabili numeriche. Se non specifichiamo il parametro method, verrà calcolare l'indice di correlazione lineare di Pearson

Dati.corr()
Enter fullscreen mode Exit fullscreen mode

calcolo del coefficiente di Pearson tramite pandas

Se invece volessi calcolare il coefficiente di Spearman, mi basterebbe scrivere

Dati.corr(method="spearman")
Enter fullscreen mode Exit fullscreen mode

Top comments (0)