Come calcolare i punteggi z in python
Nelle statistiche, un punteggio z ci dice quante deviazioni standard un valore è dalla media . Usiamo la seguente formula per calcolare uno z-score:
z = (X – μ) / σ
Oro:
- X è un singolo valore di dati grezzi
- μ è la media della popolazione
- σ è la deviazione standard della popolazione
Questo tutorial spiega come calcolare i punteggi z per i valori dei dati grezzi in Python.
Come calcolare i punteggi Z in Python
Possiamo calcolare i punteggi z in Python utilizzando scipy.stats.zscore , che utilizza la seguente sintassi:
scipy.stats.zscore(a, axis=0, ddof=0, nan_policy=’propagate’)
Oro:
- a : un oggetto di tipo array contenente dati
- asse : l’asse lungo il quale calcolare i punteggi z. Il valore predefinito è 0.
- ddof : correzione dei gradi di libertà nel calcolo della deviazione standard. Il valore predefinito è 0.
- nan_policy : come gestire quando l’input contiene nan. Il valore predefinito è propagate, che restituisce nan. ‘raise’ genera un errore e ‘omit’ esegue calcoli ignorando i valori nan.
Gli esempi seguenti illustrano come utilizzare questa funzione per calcolare i punteggi z per array numpy unidimensionali, array numpy multidimensionali e Pandas DataFrames.
Array unidimensionali Numpy
Passaggio 1: importa i moduli.
import pandas as pd import numpy as np import scipy.stats as stats
Passaggio 2: crea una tabella di valori.
data = np.array([6, 7, 7, 12, 13, 13, 15, 16, 19, 22])
Passaggio 3: calcola i punteggi z per ciascun valore nella tabella.
stats.zscore(data)
[-1.394, -1.195, -1.195, -0.199, 0, 0, 0.398, 0.598, 1.195, 1.793]
Ogni punteggio z ci dice quante deviazioni standard un singolo valore è dalla media. Per esempio:
- Il primo valore “6” nella tabella è 1.394 deviazioni standard sotto la media.
- Il quinto valore di “13” nella tabella è 0 deviazione standard dalla media, ovvero è uguale alla media.
- L’ultimo valore di “22” nella tabella è 1.793 deviazioni standard sopra la media.
Array multidimensionali Numpy
Se disponiamo di un array multidimensionale, possiamo utilizzare il parametro axis per specificare che vogliamo calcolare ciascun punteggio z relativo al proprio array. Ad esempio, supponiamo di avere il seguente array multidimensionale:
data = np.array([[5, 6, 7, 7, 8], [8, 8, 8, 9, 9], [2, 2, 4, 4, 5]])
Possiamo utilizzare la seguente sintassi per calcolare i punteggi z per ciascuna tabella:
stats.zscore(data, axis=1) [[-1.569 -0.588 0.392 0.392 1.373] [-0.816 -0.816 -0.816 1.225 1.225] [-1.167 -1.167 0.5 0.5 1.333]]
I punteggi z per ogni singolo valore vengono visualizzati rispetto alla tabella in cui si trovano. Per esempio:
- Il primo valore di “5” nella prima tabella è 1.159 deviazioni standard sotto la media della tabella.
- Il primo valore di “8” nella seconda tabella è 0,816 deviazioni standard sotto la media della tabella.
- Il primo valore di “2” nella terza tabella è 1.167 deviazioni standard sotto la media della tabella.
Pandas Data Frames
Supponiamo invece di avere un Pandas DataFrame:
data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8
Possiamo utilizzare la funzione apply per calcolare lo z-score dei singoli valori per colonna:
data.apply(stats.zscore) ABC 0 0.659380 -0.802955 0.836080 1 -0.659380 -0.802955 0.139347 2 0.989071 0.917663 0.487713 3 -1.648451 1.491202 -1.950852 4 0.659380 -0.802955 0.487713
I punteggi z per ogni singolo valore vengono visualizzati in relazione alla colonna in cui si trovano. Per esempio:
- Il primo valore di “8” nella prima colonna è 0,659 deviazioni standard sopra il valore medio della sua colonna.
- Il primo valore “0” nella seconda colonna è 0,803 deviazioni standard inferiori al valore medio nella sua colonna.
- Il primo valore di “9” nella terza colonna è 0,836 deviazioni standard sopra il valore medio della sua colonna.
Risorse addizionali:
Come calcolare i punteggi Z in Excel
Come calcolare i punteggi Z in SPSS
Come calcolare i punteggi Z su una calcolatrice TI-84