Как выполнить тест Граббса в Python


Тест Граббса используется для определения наличия выбросов в наборе данных. Чтобы использовать этот тест, набор данных должен иметь примерно нормальное распределение и иметь не менее 7 наблюдений.

В этом руководстве объясняется, как выполнить тест Граббса в Python.

Тест Граббса в Python

Чтобы выполнить тест Граббса в Python, мы можем использовать функцию smirnov_grubbs() из пакета outlier_utils , которая использует следующий синтаксис:

smirnov_grubbs.test(данные, альфа=0,05)

куда:

  • data: числовой вектор значений данных
  • альфа: уровень значимости для теста. Значение по умолчанию – 0,05.

Чтобы использовать эту функцию, вам нужно сначала установить пакет outlier_utils :

pip install outlier_utils

После установки этого пакета вы можете выполнить тест Граббса. Следующие примеры иллюстрируют, как это сделать.

Пример 1: Двусторонний критерий Граббса

В следующем коде показано, как выполнить двусторонний тест Граббса, который обнаружит выбросы на обоих концах набора данных.

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: Односторонний тест Граббса

В следующем коде показано, как выполнить односторонний тест Граббса как для минимального, так и для максимального значения в наборе данных:

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.

Как обращаться с выбросами

Если тест Граббса идентифицирует выброс в вашем наборе данных, у вас есть несколько вариантов:

1. Дважды проверьте, чтобы убедиться, что значение не является опечаткой или ошибкой ввода данных. Иногда значения, которые отображаются как выбросы в наборах данных, являются просто опечатками, сделанными человеком при вводе данных. Во-первых, убедитесь, что значение было введено правильно, прежде чем принимать какие-либо дальнейшие решения.

2. Присвойте новое значение выбросу.Если выброс окажется результатом опечатки или ошибки ввода данных, вы можете решить присвоить ему новое значение, например, среднее значение или медиану набора данных.

3. Удалите выброс. Если значение является истинным выбросом, вы можете удалить его, если оно окажет значительное влияние на ваш анализ.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.