📅  最后修改于: 2023-12-03 15:38:36.461000             🧑  作者: Mango
在统计学中,格氏(Grubbs)测试是对样本中的异常值进行推断的一种方法。Python提供了一些库可以用于执行 Grubbs 测试。
本文将介绍如何使用 outliers
库 和 scipy
库进行 Grubbs 测试。
outliers
库执行 Grubbs 测试outliers
库是一个用于检测数据中异常值的 Python 库。可以使用 outliers.grubbs_test()
方法来执行 Grubbs 测试。
下面的代码演示了如何将数据读入 Pandas 数据帧和使用 outliers.grubbs_test()
方法执行 Grubbs 测试:
import pandas as pd
from outliers import grubbs_test
# 读入数据到 Pandas 数据帧中
data = pd.read_csv('data.csv')
# 求解异常值
outliers = grubbs_test(data['column_name'], alpha=0.05)
# 打印异常值
print(outliers)
在这个示例中,我们读入了一个 .csv
文件到 Pandas 数据帧中,并使用 grubbs_test()
方法来找出其中的异常值。
scipy
库执行 Grubbs 测试scipy
库是运用于科学计算中的一个Python库,其中包含了执行 Grubbs 测试的方法。
下面的代码演示了如何使用 scipy
库来执行 Grubbs 测试:
import pandas as pd
from scipy.stats import t as tdist
import numpy as np
# 读入数据到 Pandas 数据帧中
data = pd.read_csv('data.csv')
# 指定抽样数据的数量
n_samples = len(data)
# 找出数据中的中的最大异常值
outlier = data[data['column_name'] == max(data['column_name'])]
# 除去outlier,得到新的抽样数据
x = data[data['column_name'] != max(data['column_name'])]['column_name']
# 计算 t 值和阈值
t_value = (np.mean(x) - np.mean(data['column_name'])) / np.std(data['column_name'], ddof=1) * np.sqrt((n_samples - 1) / n_samples)
# 对于自由度为 n-2 和我们给出的α值,查表得到的临界值
t_critical = tdist.ppf(1 - (0.05 / (2 * n_samples)), n_samples - 2)
# 如果 t 值大于临界值,则数据中包含异常值
if t_value > t_critical:
print("数据中包含异常值:", outlier)
else:
print("数据中不包含异常值.")
在这里,我们首先从 .csv
文件中读取数据到 Pandas 数据帧中,然后使用 scipy.stats
库中的函数来计算 t 值和阈值,最后根据 t 值和阈值的比较结果来判断数据中是否包含异常值。
至此,我们介绍了如何在Python中使用两个库执行 Grubbs 测试。outliers
库可用于所有的有异常值的数据集,而 scipy
库则更适合小样本数据。享受实验统计的乐趣吧!