理解数据分析中的Z-score(标准分数)
Published in:2020-09-18 | Category: Data Analysis
Words: 940 | Reading time: 3min

Z-score(标准分数)

Z-score(标准分数)是数据分析中常用的一个标准化指标,用于衡量某个数据点与其所在数据集的平均值之间的偏离程度。具体而言,它表示一个数据点距离数据集均值的标准差数值。Z-score 计算的基本原理是将数据点转化为标准化值,从而便于比较不同数据集中的数据点。

Z-score的计算公式

其中:

:单个数据点的值。
:数据集的均值(平均值)。
:数据集的标准差。

解释

  • :表示数据点 与数据集均值 的偏差,或称为该数据点与均值的差异。
  • :标准差,衡量数据集的离散程度。标准差越大,说明数据点之间的差异越大;标准差越小,说明数据点之间的差异越小。

Z-score 的意义

Z-score 的意义主要有以下几点:

  • Z-score = 0:表示数据点与均值完全一致。
  • Z-score > 0:表示数据点大于均值,即位于均值右侧。
  • Z-score < 0:表示数据点小于均值,即位于均值左侧。
  • Z-score 的绝对值较大:表示数据点距离均值较远,离群点的可能性较大;例如,Z-score 大于 3 或小于 -3 的数据点通常被认为是异常值。

Z-score 的主要应用

  1. 标准化数据:通过 Z-score 可以将数据标准化,使得不同量纲、不同范围的数据具有可比性。例如,在机器学习中,许多算法(如 KNN、SVM)对数据的尺度敏感,因此需要对数据进行标准化处理。

  2. 异常值检测:Z-score 可以用来识别数据中的异常值。通常,当 Z-score 的绝对值大于 3 时,认为该数据点为异常值(离群点)。

  3. 比较不同数据集:如果两个数据集具有不同的均值和标准差,可以使用 Z-score 对它们进行比较,便于判断哪个数据点在其各自数据集中的位置更加偏离均值。

举个例子

假设我们有一个包含学生成绩的数据集 [80, 85, 90, 92, 85, 88, 75, 78, 92, 95, 100, 85, 92, 88, 85, 200]。我们希望计算数据点 200 的 Z-score,并判断它是否为异常值。

数学计算公式

  1. 计算均值

  2. 计算标准差
    标准差的计算公式为:

    代入数据集计算:

  3. 计算 Z-score

Python 代码

在Python中,我们可以使用 numpyscipy 库来计算 Z-score。

1
2
3
4
5
6
7
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 创建数据集:一组学生成绩,其中包括异常值200
data = [80, 85, 90, 92, 85, 88, 75, 78, 92, 95, 100, 85, 92, 88, 85, 200]

计算数据集的均值和标准差和Z-score:

1
2
3
4
5
6
7
8
9
10
11
# 计算均值
mean = np.mean(data)
print("均值 (Mean):", mean)

# 计算标准差
std = np.std(data)
print("标准差 (Standard Deviation):", std)

# 计算 Z-score
z_scores = stats.zscore(data)
print("200数值的Z-score:", z_scores[-1])

输出:

1
2
3
均值 (Mean): 94.375
标准差 (Standard Deviation): 27.959513139538036
200数值的Z-score: 3.7777839504162842

所以,数据点 200 的 Z-score 为 3.7777839504162842,按照 Z-score 的定义,它位于数据集的右侧,距离均值较远 ( Z-score 大于3或者小于-3 ),因此被认为是异常值。

总结

Z-score 是衡量数据点相对于数据集平均水平偏差程度的标准化指标,广泛应用于数据预处理异常值检测以及统计分析等领域。通过 Z-score,我们可以将不同规模、不同单位的数据转换为相同的标准尺度,方便进行比较和进一步分析。

Prev:
详解数据分析中的方差,标准差和异常值的使用
Next:
理解数据分析中的四分位数 (Quartile Method)