Como calcular pontuações z em python
Nas estatísticas, uma pontuação z nos diz quantos desvios padrão um valor está da média . Usamos a seguinte fórmula para calcular uma pontuação z:
z = (X – μ) / σ
Ouro:
- X é um único valor de dados brutos
- μ é a média da população
- σ é o desvio padrão da população
Este tutorial explica como calcular pontuações z para valores de dados brutos em Python.
Como calcular pontuações Z em Python
Podemos calcular pontuações z em Python usando scipy.stats.zscore , que usa a seguinte sintaxe:
scipy.stats.zscore(a, eixo=0, ddof=0, nan_policy=’propagar’)
Ouro:
- a : um objeto do tipo array contendo dados
- eixo : o eixo ao longo do qual calcular as pontuações z. O valor padrão é 0.
- ddof : correção dos graus de liberdade no cálculo do desvio padrão. O valor padrão é 0.
- nan_policy : como lidar quando a entrada contém nan. O padrão é propagar, que retorna nan. ‘raise’ gera um erro e ‘omit’ executa cálculos ignorando nan valores.
Os exemplos a seguir ilustram como usar esta função para calcular pontuações z para matrizes numpy unidimensionais, matrizes numpy multidimensionais e Pandas DataFrames.
Matrizes unidimensionais numpy
Etapa 1: importe os módulos.
import pandas as pd import numpy as np import scipy.stats as stats
Etapa 2: Crie uma tabela de valores.
data = np.array([6, 7, 7, 12, 13, 13, 15, 16, 19, 22])
Etapa 3: calcule as pontuações z para cada valor da tabela.
stats.zscore(data)
[-1.394, -1.195, -1.195, -0.199, 0, 0, 0.398, 0.598, 1.195, 1.793]
Cada pontuação z nos diz quantos desvios padrão um valor individual está da média. Por exemplo:
- O primeiro valor de “6” na tabela está 1,394 desvios padrão abaixo da média.
- O quinto valor de “13” na tabela é 0 desvio padrão da média, ou seja, é igual à média.
- O último valor de “22” na tabela está 1,793 desvios padrão acima da média.
Matrizes multidimensionais numpy
Se tivermos um array multidimensional, podemos usar o parâmetro axis para especificar que queremos calcular cada pontuação z em relação ao seu próprio array. Por exemplo, suponha que temos o seguinte array multidimensional:
data = np.array([[5, 6, 7, 7, 8], [8, 8, 8, 9, 9], [2, 2, 4, 4, 5]])
Podemos usar a seguinte sintaxe para calcular pontuações z para cada tabela:
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]]
As pontuações z para cada valor individual são exibidas em relação à tabela em que são encontradas. Por exemplo:
- O primeiro valor de “5” na primeira tabela está 1,159 desvios padrão abaixo da média de sua tabela.
- O primeiro valor de “8” na segunda tabela está 0,816 desvios padrão abaixo da média da sua tabela.
- O primeiro valor de “2” na terceira tabela está 1,167 desvios padrão abaixo da média de sua tabela.
Quadros de dados do Pandas
Vamos supor que temos um DataFrame do Pandas:
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
Podemos usar a função apply para calcular a pontuação z de valores individuais por coluna:
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
As pontuações z para cada valor individual são exibidas em relação à coluna em que estão localizadas. Por exemplo:
- O primeiro valor de “8” na primeira coluna é 0,659 desvios padrão acima do valor médio da sua coluna.
- O primeiro valor “0” na segunda coluna é 0,803 desvios padrão inferior ao valor médio em sua coluna.
- O primeiro valor de “9” na terceira coluna é 0,836 desvios padrão acima do valor médio da sua coluna.
Recursos adicionais:
Como calcular pontuações Z no Excel
Como calcular pontuações Z no SPSS
Como calcular pontuações Z em uma calculadora TI-84