В статистике z-score говорит нам, на сколько стандартных отклонений значение отличается от среднее значение. Мы используем следующую формулу для расчета z -score:
z = (X – μ) / σ
где:
- X – это одно необработанное значение данных
- μ – среднее значение генеральной совокупности
- σ – стандартное отклонение генеральной совокупности
В этом руководстве объясняется, как рассчитать z-значения для необработанных значений данных. в Python.
Как рассчитать Z-значения в Python
Мы можем рассчитать z-показатели в Python, используя scipy.stats.zscore, который использует следующий синтаксис:
scipy.stats.zscore(a, axis=0, ddof=0, nan_policy=’propagate’)
где:
- a: массив, подобный объекту, содержащему данные\n
- axis: ось, по которой рассчитываются z-показатели. По умолчанию 0.
- ddof: коррекция степеней свободы при расчете стандарта отклонение. По умолчанию 0.
- nan_policy: что делать, если ввод содержит nan. По умолчанию используется распространение, которое возвращает nan.
raise
выдает ошибку, аomit
выполняет вычисления, игнорируя значенияnan
.
В следующих примерах показано, как использовать эту функцию для вычисления z-показателей для одномерных массивов numpy, многомерных массивов numpy и фреймов данных Pandas.
Одномерные массивы Numpy
Шаг 1. Импортируйте модули.
import pandas as pd
import numpy as np
import scipy.stats as stats
Шаг 2. Создайте массив значений.
data = np.array([6, 7, 7, 12, 13, 13, 15, 16, 19, 22])
Шаг 3. Рассчитайте z-значения для каждого значения в массиве.
stats.zscore(data)
# [-1.394, -1.195, -1.195, -0.199, 0, 0, 0.398, 0.598, 1.195, 1.793]
Каждый z-показатель говорит нам, на сколько стандартных отклонений отдельное значение отличается от среднего. Например:
- Первое значение
6
в массиве равно 1,394 стандартный отклонений ниже среднего значения. - Пятое значение в массиве
13
составляет 0 стандартных отклонений от среднего, т. е. равно среднему. - Последнее значение
22
в массиве: 1,793 стандартный отклонений над средним.
Многомерный Numpy Массивы
Если у нас есть многомерный массив, мы можем использовать axis, чтобы указать, что мы хотим вычислить каждую z-оценку относительно своего собственного массива. Например, предположим, что у нас есть следующий многомерный массив:
data = np.array([[5, 6, 7, 7, 8],
[8, 8, 8, 9, 9],
[2, 2, 4, 4, 5]])
Мы можем использовать следующий синтаксис для вычисления z-показателей для каждого массива:
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]]
Z-значения для каждого отдельного значения отображаются относительно массива, в котором они находятся. Например:
- Первое значение
5
в первом массиве равно 1,159 стандартным отклонениям ниже среднего значения его массива. - Первое значение
8
во втором массиве равно стандартным отклонениям ниже среднее значение его массива. - Первое значение
2
в третьем массиве равно 1,167 стандартные отклонения ниже среднего значения его массива.
Pandas DataFrames
Предположим, что у нас Pandas DataFrame:
data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C'])
data
# A B C
#0 8 0 9
#1 4 0 7
#2 9 6 8
#3 1 8 1
#4 8 0 8
Мы можем использовать функцию apply
чтобы рассчитать z-показатель отдельных значений по столбцу:
data.apply(stats.zscore)
# A B C
#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
Z-значения для каждого отдельного значения отображаются относительно столбца, в котором они находятся. Например:
- Первое значение
8
в первом столбце на0,659
стандартного отклонения выше среднего значения этого столбца.
Первое значение0
во втором столбце на0,803
стандартного отклонения ниже среднего значения этого столбца.
Первое значение9
в третьем столбце на0,836
стандартных отклонения выше среднего значения этого столбца.