Гипотезы и их проверка.

Нулевая гипотеза 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₀ ")