如何在 python 中运行 grubbs 测试器
格拉布斯检验用于识别数据集中是否存在异常值。要使用此检验,数据集必须近似正态分布并且包含至少 7 个观测值。
本教程介绍如何在 Python 中执行 Grubbs 测试。
Python 中的 Grubbs 测试
要在 Python 中执行 Grubbs 测试,我们可以使用outlier_utils包中的 smirnov_grubbs() 函数,该函数使用以下语法:
smirnov_grubbs.test(数据,alpha = 0.05)
金子:
- 数据:数据值的数值向量
- alpha:用于测试的显着性水平。默认值为 0.05
要使用此功能,您必须首先安装outlier_utils包:
pip install outlier_utils
安装此软件包后,您可以执行 Grubbs 测试。以下示例说明了如何执行此操作。
示例 1:双尾格拉布斯检验
以下代码说明了如何执行双尾 Grubbs 测试,该测试将检测数据集两端的异常值。
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test grubbs. test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
该函数仅返回一个没有异常值的数组。在本例中,最大值 40 是异常值,因此被删除。
示例 2:单侧格拉布斯检验
以下代码演示了如何对数据集中的最小值和最大值执行单边 Grubbs 检验:
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. min_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. max_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
最小异常值测试未将最小值检测为异常值。然而,最大异常值测试确定最大值 40 是异常值,因此被删除。
示例3:提取异常值的索引
以下代码演示了如何提取异常值的索引:
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify index (if any) of the outlier grubbs. max_test_indices (data, alpha=.05) [16]
这告诉我们表的索引位置 16 处存在异常值。
示例 4:从异常值中提取值
以下代码演示了如何从离群值中提取值:
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify the actual value (if any) of the outlier grubbs. max_test_outliers (data, alpha=.05) [40]
这告诉我们存在一个值为 40 的异常值。
如何处理异常值
如果 Grubbs 检验识别出数据集中的异常值,您有多种选择:
1. 仔细检查该值是否有拼写错误或数据输入错误。有时,数据集中显示为异常值的值只是个人在数据输入过程中犯下的拼写错误。首先,在做出任何进一步决定之前验证输入的值是否正确。
2. 为离群值指定一个新值。如果异常值是由拼写错误或数据输入错误造成的,您可以决定为其分配一个新值,例如数据集的平均值 或中位数。
3. 删除异常值。如果该值确实是异常值,并且会对您的分析产生重大影响,则可以选择将其删除。