变异度量
变异度量概述
提供数据集的分散程度或变异程度的度量对于全面总结数据集至关重要。两个数据集可能具有相同的均值,但可能表现出非常不同的分散程度,因此数据集的离散度量非常重要。虽然集中趋势的度量(如均值、中位数和众数)描述了分布的中心或平均值,但离散度量提供了关于单个数据点偏离该中心值的程度的见解。
以下是两组学生在生物学课程和统计学课程中的考试成绩数据:
数据集A:生物学课程学生的考试成绩:40, 70, 100
数据集B:统计学课程学生的考试成绩:69, 70, 71
请注意,数据集A和数据集B的平均分都是70。
然而,这两个数据集彼此之间存在显著差异:
- 数据集A具有较大的变异性,其中一名学生得分低于均值30分,另一名学生得分高于均值30分。
- 数据集B具有较小的变异性,考试成绩更紧密地围绕均值70聚集。
这个例子说明,仅发布数据集的均值通常不足以完全传达数据集的特征。相反,数据科学家通常会同时包含一个变异度量。
变异度量的三个主要指标是范围(Range)、方差(Variance)和标准差(Standard Deviation),接下来将对这些指标进行描述。
范围(Range)
范围是数据集的离散度量,通过从数据集的最大值中减去最小值来计算:
范围是一个简单的计算,但只使用了数据集中的两个数据值。范围也可能受到异常值的影响。
问题:计算数据集A和数据集B的范围:
数据集A:生物学课程学生的考试成绩:40, 70, 100
数据集B:统计学课程学生的考试成绩:69, 70, 71
解决方案:
对于数据集A. ✅
- 最大值 = 100
- 最小值 = 40
- 范围 = 100 – 40 = 60
对于数据集B. ✅
- 最大值 = 71
- 最小值 = 69
- 范围 = 71 – 69 = 2
数据集A的范围(60)远大于数据集B的范围(2),这反映了数据集A具有更大的变异性。
范围的局限性
使用范围的一个缺点是它没有考虑每个数据值。范围只使用数据集中的两个数据值:最小值(min)和最大值(max)。此外,范围受异常值影响,因为异常值可能作为最小或最大数据值出现,从而使结果偏斜。由于这些原因,我们通常使用其他变异度量,如方差或标准差。
方差(Variance)
方差通过使用与均值的平方偏差来提供数据值分散程度的度量。单个数据值与均值的差异越大,方差就越大。
财务顾问可能会使用方差来确定投资的波动性,从而帮助指导财务决策。例如,更谨慎的投资者可能会选择波动性较低的投资。
计算方差所使用的公式也取决于数据是从样本还是总体中收集的。符号s²用于表示样本方差,符号σ²用于表示总体方差。
样本方差公式:
总体方差公式:
在这些公式中:
- x 代表单个数据值
- x̄ 代表样本均值
- n 代表样本大小
- μ 代表总体均值
- N 代表总体大小
方差的替代公式
方差的替代公式是可用的。它有时用于更高效的计算:
样本方差与总体方差的区别
在样本方差和总体方差的公式中,请注意样本方差的分母是n – 1,而总体方差的分母是N。在样本方差的分母中使用n – 1是为了提供总体方差的最佳估计,从某种意义上说,如果重复抽取大小为n的样本并每次计算样本均值,那么随着重复样本数量的增加,这些样本均值的平均值将趋向于总体均值。
样本方差的重要性
需要注意的是,在许多数据科学应用中,总体数据是不可用的,因此我们通常计算样本方差。例如,如果研究人员想要估计美国所有成年人的吸烟百分比,从美国的每个成年人收集数据是不切实际的。
方差的单位问题
请注意,样本方差是平方和。其测量单位是原始数据测量单位的平方。由于这些平方单位与原始数据中的单位不同,这可能会造成混淆。相比之下,标准差以与原始数据集相同的单位测量,因此标准差更常用于测量数据集的分散程度。
标准差(Standard Deviation)
数据集的标准差提供了与数据相同单位的数据集总体变异量的数值度量;它可以用来确定特定数据值是接近还是远离均值,相对于与均值的典型距离。
标准差总是正数或零。当数据值都集中在均值附近时,它很小,表现出很少的变异或分散。当数据值更分散地偏离均值时,它更大,表现出更多的变异。较小的标准差意味着数据集中的变异性较小,而较大的标准差意味着数据集中的变异性较大。
假设我们正在研究两家公司(A和B. 在员工薪资方面的变异性。两家公司的平均薪资都是60,000美元。对于公司A,薪资的标准差是8,000美元,而对于公司B,薪资的标准差是19,000美元。由于公司B的标准差较高,我们知道与公司A相比,公司B的员工薪资有更多的变异。✅
计算标准差有两种不同的公式。使用哪种公式取决于数据代表样本还是总体。符号s用于表示样本标准差,符号σ用于表示总体标准差。在所示的公式中,x̄是样本均值,μ是总体均值,n是样本大小,N是总体大小。
样本标准差公式:
总体标准差公式:
请注意,样本标准差是作为方差的平方根计算的。这意味着一旦计算出样本方差,就可以很容易地将样本标准差计算为样本方差的平方根,如示例3.7所示。
问题:一位生物学家计算出植物样本生长量的样本方差为8.7 cm²。计算样本标准差。
解决方案:
样本标准差 = √样本方差 = √8.7 ≈ 2.95 cm
问题:假设数据集的样本方差(s²)计算为42.2。基于此,计算样本标准差。
解决方案:
样本标准差 = √样本方差 = √42.2 ≈ 6.50
标准差与方差的关系
请注意,样本方差是样本标准差的平方,因此如果已知样本标准差,就可以很容易地计算出样本方差。
变异系数(Coefficient of Variation)
数据科学家可能对比较具有不同测量单位或不同均值的变异感兴趣,在这些情况下,可以使用变异系数(CV)。变异系数通过将标准差计算为均值的百分比来衡量数据集的变异。注意:变异系数通常以百分比格式表示。
样本变异系数公式:
总体变异系数公式:
问题:使用变异系数比较公司A与公司B的相对变异性,基于以下样本数据:
公司A:样本均值 = 68,000美元,样本标准差 = 9,200美元
公司B:样本均值 = 71,000美元,样本标准差 = 6,400美元
解决方案:
公司A的变异系数 = (9,200 / 68,000) × 100% ≈ 13.53%
公司B的变异系数 = (6,400 / 71,000) × 100% ≈ 9.01%
尽管公司B的均值高于公司A. 但公司B的变异系数(9.01%)低于公司A的变异系数(13.53%),这表明相对于各自的均值,公司B的薪资变异性较小。✅
变异系数的优势
变异系数的主要优势在于它是一个无量纲的相对度量,这使得它特别适用于:
- 比较具有不同单位的数据集的变异性(例如,比较身高(厘米)和体重(千克)的变异性)
- 比较具有不同均值的数据集的变异性(例如,比较小型公司和大型公司的薪资变异性)
- 评估不同时间点或不同条件下的相对变异性
使用Python计算变异度量
由于计算方差和标准差的复杂性,通常利用技术来计算这些变异度量。例如,请参阅变异系数部分中关于使用Python进行变异度量的示例。
在Python中,我们可以使用多个库来计算变异度量,包括NumPy、Pandas和Statistics库。下面是一些示例:
使用NumPy计算变异度量
import numpy as np
# 示例数据
data_a = np.array([40, 70, 100]) # 生物学课程成绩
data_b = np.array([69, 70, 71]) # 统计学课程成绩
# 计算范围
range_a = np.max(data_a) - np.min(data_a)
range_b = np.max(data_b) - np.min(data_b)
print(f"数据集A的范围: {range_a}") # 输出: 数据集A的范围: 60
print(f"数据集B的范围: {range_b}") # 输出: 数据集B的范围: 2
# 计算方差
variance_a = np.var(data_a, ddof=1) # ddof=1表示样本方差
variance_b = np.var(data_b, ddof=1)
print(f"数据集A的样本方差: {variance_a:.2f}") # 输出: 数据集A的样本方差: 900.00
print(f"数据集B的样本方差: {variance_b:.2f}") # 输出: 数据集B的样本方差: 1.00
# 计算标准差
std_a = np.std(data_a, ddof=1) # ddof=1表示样本标准差
std_b = np.std(data_b, ddof=1)
print(f"数据集A的样本标准差: {std_a:.2f}") # 输出: 数据集A的样本标准差: 30.00
print(f"数据集B的样本标准差: {std_b:.2f}") # 输出: 数据集B的样本标准差: 1.00
# 计算变异系数
mean_a = np.mean(data_a)
mean_b = np.mean(data_b)
cv_a = (std_a / mean_a) * 100
cv_b = (std_b / mean_b) * 100
print(f"数据集A的变异系数: {cv_a:.2f}%") # 输出: 数据集A的变异系数: 42.86%
print(f"数据集B的变异系数: {cv_b:.2f}%") # 输出: 数据集B的变异系数: 1.43%
使用Pandas计算变异度量
import pandas as pd
# 创建DataFrame
df = pd.DataFrame({
'Biology': [40, 70, 100],
'Statistics': [69, 70, 71]
})
# 使用describe()方法获取基本统计信息
description = df.describe()
print(description)
"""
输出:
Biology Statistics
count 3.0000 3.000000
mean 70.0000 70.000000
std 30.0000 1.000000
min 40.0000 69.000000
25% 55.0000 69.500000
50% 70.0000 70.000000
75% 85.0000 70.500000
max 100.0000 71.000000
"""
# 计算范围
range_biology = df['Biology'].max() - df['Biology'].min()
range_statistics = df['Statistics'].max() - df['Statistics'].min()
print(f"生物学课程的范围: {range_biology}") # 输出: 生物学课程的范围: 60
print(f"统计学课程的范围: {range_statistics}") # 输出: 统计学课程的范围: 2
# 计算方差
variance_biology = df['Biology'].var(ddof=1)
variance_statistics = df['Statistics'].var(ddof=1)
print(f"生物学课程的样本方差: {variance_biology:.2f}") # 输出: 900.00
print(f"统计学课程的样本方差: {variance_statistics:.2f}") # 输出: 1.00
# 计算变异系数
cv_biology = (df['Biology'].std(ddof=1) / df['Biology'].mean()) * 100
cv_statistics = (df['Statistics'].std(ddof=1) / df['Statistics'].mean()) * 100
print(f"生物学课程的变异系数: {cv_biology:.2f}%") # 输出: 42.86%
print(f"统计学课程的变异系数: {cv_statistics:.2f}%") # 输出: 1.43%
使用Statistics库计算变异度量
import statistics
# 示例数据
data_a = [40, 70, 100] # 生物学课程成绩
data_b = [69, 70, 71] # 统计学课程成绩
# 计算范围
range_a = max(data_a) - min(data_a)
range_b = max(data_b) - min(data_b)
print(f"数据集A的范围: {range_a}") # 输出: 数据集A的范围: 60
print(f"数据集B的范围: {range_b}") # 输出: 数据集B的范围: 2
# 计算方差
variance_a = statistics.variance(data_a)
variance_b = statistics.variance(data_b)
print(f"数据集A的样本方差: {variance_a:.2f}") # 输出: 数据集A的样本方差: 900.00
print(f"数据集B的样本方差: {variance_b:.2f}") # 输出: 数据集B的样本方差: 1.00
# 计算标准差
std_a = statistics.stdev(data_a)
std_b = statistics.stdev(data_b)
print(f"数据集A的样本标准差: {std_a:.2f}") # 输出: 数据集A的样本标准差: 30.00
print(f"数据集B的样本标准差: {std_b:.2f}") # 输出: 数据集B的样本标准差: 1.00
# 计算变异系数
mean_a = statistics.mean(data_a)
mean_b = statistics.mean(data_b)
cv_a = (std_a / mean_a) * 100
cv_b = (std_b / mean_b) * 100
print(f"数据集A的变异系数: {cv_a:.2f}%") # 输出: 数据集A的变异系数: 42.86%
print(f"数据集B的变异系数: {cv_b:.2f}%") # 输出: 数据集B的变异系数: 1.43%
DataFrame.describe()方法
Pandas的DataFrame.describe()方法计算数据集每列的标准差以及其他统计信息。std行列出了每列的标准差。例如,在电影利润数据集中,describe()方法的输出可能显示评分的标准差约为0.89,时长的标准差约为21.6,美国毛收入的标准差约为1.106亿美元,全球毛收入的标准差约为2.9476亿美元。
变异度量的应用
变异度量在数据科学和统计分析中有广泛的应用。以下是一些主要应用领域:
金融领域
投资风险评估
在金融领域,方差和标准差常用于衡量投资的波动性或风险。高波动性(高方差或标准差)意味着投资回报的不确定性较高,风险也较高。相反,低波动性意味着投资回报相对稳定,风险较低。投资者可以根据自己的风险承受能力选择合适的投资产品。
质量控制
生产过程监控
在制造业中,变异度量用于监控生产过程的稳定性和一致性。例如,如果生产的产品尺寸或重量的变异程度增加,可能表明生产过程出现了问题。通过计算和控制变异程度,企业可以确保产品质量的一致性,减少缺陷率。
研究分析
实验结果比较
在科学研究中,变异度量用于比较不同组或条件下的数据分散程度。例如,在医学研究中,研究人员可能比较不同治疗组患者康复时间的变异程度,以评估治疗的一致性和可靠性。较小的变异程度通常表明治疗结果更加一致和可预测。
教育评估
学生成绩分析
在教育领域,变异度量用于分析学生成绩的分布情况。例如,如果某次考试的成绩标准差较大,可能表明考试难度不适合学生水平,或者教学方法存在问题。相反,较小的标准差可能表明大多数学生的表现相对一致。
社会科学
收入不平等研究
在社会科学研究中,变异度量用于研究收入、财富或其他社会经济指标的不平等程度。例如,高收入标准差可能表明社会收入分配不均,而低收入标准差可能表明收入分配相对平等。变异系数特别适用于比较不同国家或地区的收入不平等程度,因为它考虑了平均收入水平的差异。
总结
变异度量是数据分析中的基本工具,它们提供了关于数据分散程度的重要信息。在本节中,我们讨论了四种主要的变异度量:范围、方差、标准差和变异系数。
范围(Range)
范围是最简单的变异度量,计算方法是将最大值减去最小值。范围易于计算和理解,但只使用了两个数据值,且受异常值影响较大。范围适用于快速初步了解数据的分散程度,但不适合作为唯一的变异度量。
方差(Variance)
方差通过计算每个数据点与均值的平方偏差的平均值来衡量数据的分散程度。方差考虑了所有数据值,提供了更全面的变异度量。然而,方差的单位是原始数据单位的平方,这使得解释变得困难。方差在统计推断和假设检验中非常重要。
标准差(Standard Deviation)
标准差是方差的平方根,与原始数据具有相同的单位,这使得解释更加直观。标准差是最常用的变异度量,它表示数据点相对于均值的典型距离。标准差在许多领域都有广泛应用,包括金融、质量控制、教育评估等。
变异系数(Coefficient of Variation)
变异系数是标准差与均值的比值,通常以百分比表示。变异系数是一个无量纲的相对度量,特别适用于比较具有不同单位或不同均值的数据集的变异性。变异系数在比较不同规模或不同条件下的相对变异性时非常有用。
选择合适的变异度量
选择哪种变异度量取决于数据的特性和分析的目的:
场景 | 推荐的变异度量 | 原因 |
---|---|---|
快速初步了解数据分散程度 | 范围 | 计算简单直观,易于理解 |
统计推断和假设检验 | 方差 | 方差在统计理论中具有重要地位 |
一般数据分析和报告 | 标准差 | 与原始数据单位相同,易于解释 |
比较不同单位或不同均值的数据集 | 变异系数 | 无量纲,便于比较相对变异性 |
全面了解数据分布特征 | 多种变异度量的组合 | 不同变异度量提供不同的视角,组合使用可以更全面地理解数据 |
实际应用中的考虑
在实际应用中,选择变异度量时还应考虑以下因素:
- 数据质量:数据中是否存在错误、缺失值或异常值
- 数据类型:数据是数值型、分类型还是顺序型
- 分析目的:是描述数据、比较组间差异还是预测未来值
- 受众:结果将呈现给谁,他们对统计概念的理解程度如何
通过理解各种变异度量的特性和适用场景,数据科学家可以选择最合适的统计指标来分析和解释数据,从而得出准确和有意义的结论。变异度量与中心度量相结合,提供了对数据集特征的全面描述,是数据科学和统计分析中不可或缺的工具。