Как проверить выборку на нормальность распределения с помощью Python? 📊🔍
Для проверки выборки на нормальность распределения в Python вы можете использовать тест Шапиро-Уилка или тест Андерсона-Дарлинга.
# Импортирование необходимых модулей
import numpy as np
from scipy.stats import shapiro, anderson
# Пример проверки выборки на нормальность с использованием теста Шапиро-Уилка
data = np.random.normal(loc=0, scale=1, size=100) # Здесь data - ваша выборка
statistic, p_value = shapiro(data)
if p_value <= 0.05:
print("Выборка не имеет нормальное распределение")
else:
print("Выборка имеет нормальное распределение")
# Пример проверки выборки на нормальность с использованием теста Андерсона-Дарлинга
data = np.random.normal(loc=0, scale=1, size=100) # Здесь data - ваша выборка
result = anderson(data)
critical_values = result.critical_values
if result.statistic > critical_values[2]:
print("Выборка не имеет нормальное распределение")
else:
print("Выборка имеет нормальное распределение")
Детальный ответ
Как проверить выборку на нормальность распределения в Python
Проверка выборки на нормальность распределения является важным шагом в анализе данных. В Python существует несколько методов, которые позволяют провести такую проверку. В следующем объяснении мы рассмотрим два из них: графический метод и статистический тест.
Графический метод
Один из простых способов проверить выборку на нормальность распределения - это построить график. График должен иметь форму колокола с центральным пиком.
В Python для построения такого графика мы можем воспользоваться библиотекой Matplotlib. Вот пример кода:
import matplotlib.pyplot as plt
import numpy as np
# Создаем случайную выборку данных
data = np.random.normal(0, 1, 1000)
# Строим гистограмму распределения данных
plt.hist(data, bins=30, density=True)
# Строим график плотности распределения
x = np.linspace(min(data), max(data), 100)
y = (1 / np.sqrt(2 * np.pi)) * np.exp(-0.5 * x**2)
plt.plot(x, y, color='r')
plt.xlabel('Значения')
plt.ylabel('Плотность')
plt.title('Проверка нормальности распределения')
# Отображаем график
plt.show()
В этом примере мы сгенерировали случайную выборку данных, подчиняющуюся нормальному распределению. Затем мы построили гистограмму этой выборки и добавили на график кривую плотности распределения для сравнения. Если гистограмма и кривая плотности схожи, то можно сделать вывод о нормальности распределения.
Статистический тест
Помимо графического метода, в Python также доступны статистические тесты для проверки нормальности распределения. Один из самых распространенных тестов - тест Шапиро-Уилка. Этот тест основан на сравнении фактических значений с ожидаемыми для нормального распределения.
Вот пример кода для выполнения теста Шапиро-Уилка:
from scipy import stats
# Создаем случайную выборку данных
data = np.random.normal(0, 1, 1000)
# Выполняем тест Шапиро-Уилка
result = stats.shapiro(data)
# Выводим p-значение теста
print(f'p-значение: {result.pvalue}')
После выполнения теста мы получим p-значение. Если p-значение больше заданного уровня значимости (обычно 0.05), то можно сделать вывод о нормальности распределения. В приведенном примере мы использовали случайную выборку данных, подчиняющуюся нормальному распределению, чтобы продемонстрировать использование теста.