📜  如何在Python中执行 Grubbs 测试(1)

📅  最后修改于: 2023-12-03 15:38:36.461000             🧑  作者: Mango

如何在Python中执行 Grubbs 测试

在统计学中,格氏(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 库则更适合小样本数据。享受实验统计的乐趣吧!