Нулевая гипотеза H₀: исследуемые параметры равны
Альтернативная гипотеза H₁: исследуемые параметры не равны
На основании изучения выборки мы можем отвергнуть нулевую гипотезу или не отвергнуть ( мы не принимаем её и не опровергаем).
I. Гипотеза для выборки для одной генеральной совокупности
1. Значение равно или нет (двусторонние гипотезы)
scipy.stats.ttest_1samp (array_name, some_value)
где
- 1samp так как изучаем одну выборку;
- array_name — имя массива, содержащего выборку;
- some_value - значение, с которым сравниваем.
Метод возвращает:
- статистику разности между popmean и выборочным средним из array;
- двухсторонний уровень значимости.
На основании результата мы можем сделать предположение о генеральной совокупности.
Пример:
from scipy import stats as st
import numpy as np
import pandas as pd
df = pd.read_csv('file_name.csv')
some_value = 17
critical_stat_level = .05
# критический уровень статистической значимости
result = st.ttest_1samp(df, some_value)
print('p-значение равно: ', result.pvalue)
if (result.pvalue < critical_stat_level):
print("Отвергаем H₀ ")
else:
print("Не отвергаем H₀ ")
2. Значение больше или меньше, если важно изменение только в одну сторону (односторонние гипотезы).
Если нулевая гипотеза гласит «наблюдаемое значение больше», то критический интервал будет слева.
При одностороннем тесте мы попадём в критический интервал при в два раза меньшем отклонении, чем при двухстороннем.
Т.е. p-value нужно поделить пополам.
df = pd.read_csv('file_name.csv')
some_value = 17
critical_stat_level = .05
# критический уровень статистической значимости
result = st.ttest_1samp(
df,
some_value)
print('p-значение равно: ', result.pvalue / 2)
Далее зависит от формулировки гипотезы:
а) для теста, одностороннего влево,
с нулевой гипотезой
H₀ «наблюдаемое значение больше предполагаемого»
и альтернативной гипотезой
H₁ «наблюдаемое значение меньше предполагаемого»:
if (result.pvalue / 2< critical_stat_level) and (df.mean() < some_value):
print("Отвергаем H₀ ")
else:
print("Не отвергаем H₀ ")
б) для теста, одностороннего вправо,
с нулевой гипотезой
H₀ «наблюдаемое значение меньше предполагаемого»
и альтернативной гипотезой
H₁ «наблюдаемое значение больше предполагаемого»:
if (result.pvalue / 2< critical_stat_level) and (df.mean() > some_value):
print("Отвергаем H₀ ")
else:
print("Не отвергаем H₀ ")
II. Гипотеза для двух генеральных совокупностей
1. Гипотеза о равенстве средних двух генеральных совокупностей
scipy.stats.ttest_ind (df1, df2, equal_var = True)
scipy.stats.ttest_ind (array1, array2, equal_var = False)
Параметры:
df1, df2 или array1, array2 — массивы, содержащие выборки;
equal_var (equal variance, «равная дисперсия») задает, считать ли равными дисперсии выборок.
(True — считать, False — не считать)
III. Гипотеза о равенстве средних до и после изменения (или о равенстве средних для зависимых выборок)
Метод scipy.stats.ttest_rel()
Всё аналогично, но запись
before = [1, 4, 45, 6, some values..., 3]
after = [4, 3, 45, 6, some values ..., 3]
alpha_critical_stat_level = .05
# критический уровень статистической значимости
result = st.ttest_rel(
before,
after)
print('p-значение: ', result.pvalue)
if (result.pvalue < alpha_critical_stat_level):
print("Отвергаем H₀ ")
else:
print("Не отвергаем H₀ ")