Что ж, наверное, все, кто новичок в машинном обучении, или студент среднего уровня, или студент-статистик, слышали об этом модном слове проверка гипотез.

Сегодня я сделаю краткое введение по этой теме, которая вызвала у меня головную боль, когда я изучал это. Я собрал все эти концепции и примеры, используя Python.

какой-то вопрос в уме, прежде чем я перейду к более широким вещам -

Что такое проверка гипотез? Почему мы это используем ? каковы основные гипотезы? какие параметры важны для проверки гипотез?

Начнем по порядку:

1. Что такое проверка гипотез?

Проверка гипотез - это статистический метод, который используется для принятия статистических решений с использованием экспериментальных данных. Проверка гипотез - это в основном предположение, которое мы делаем о параметре популяции.

Пример: вы говорите, что среднему ученику в классе 40 или мальчик выше девочек.

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

2. почему мы его используем?

Проверка гипотез - важная процедура в статистике. Проверка гипотез оценивает два взаимоисключающих утверждения о совокупности, чтобы определить, какое утверждение лучше всего подтверждается выборкой данных. Когда мы говорим, что результат является статистически значимым, это делается благодаря проверке гипотез.

3. каковы основные гипотезы?

В основе гипотезы лежит нормализация и стандартная нормализация. все наши гипотезы вращаются вокруг основных из этих двух терминов. давайте посмотрим на это.

Вам должно быть интересно, в чем разница между этими двумя изображениями: один может сказать, что не нашел, а другой увидит более плоский график по сравнению с крутым. хорошо, приятель, это не то, что я хочу представить, сначала вы можете увидеть, что есть разные нормальные кривые, все эти нормальные кривые могут иметь разные средние значения и дисперсии, где, как на втором изображении, если вы заметите, что график правильно распределен и означает = 0 и дисперсия = 1 всегда. концепция z-показателя проявляется, когда мы используем стандартизированные нормальные данные.

Нормальное распределение -

Переменная называется нормально распределенной или имеет нормальное распределение, если ее распределение имеет форму нормальной кривой - особой колоколообразной кривой. кривая. … График нормального распределения называется нормальной кривой, который имеет все следующие свойства: 1. Среднее значение, медиана и режим равны.

Стандартизированное нормальное распределение -

Стандартное нормальное распределение - это нормальное распределение со средним значением 0 и стандартным отклонением 1.

Какие параметры важны при проверке гипотез?

Нулевая гипотеза: - В выводимой статистике нулевая гипотеза - это общее утверждение или позиция по умолчанию о том, что нет никакой связи между двумя измеряемыми явлениями или никакой связи между группами.

Другими словами, это базовое предположение, основанное на знании предметной области или проблемы.

Пример: производство компании = 50 единиц в день и т. Д.

Альтернативная гипотеза :-

Альтернативная гипотеза - это гипотеза, используемая при проверке гипотез, которая противоречит нулевой гипотезе. Обычно считается, что наблюдения являются результатом реального эффекта (с наложением некоторого количества случайных вариаций)

Пример: производство компании! = 50 единиц в день и т. Д.

Уровень значимости. Относится к степени значимости, при которой мы принимаем или отклоняем нулевую гипотезу. 100% точность невозможна для принятия или отклонения гипотезы, поэтому мы выбираем уровень значимости, который обычно составляет 5%.

Обычно это обозначается с помощью альфа (математический символ) и обычно составляет 0,05 или 5%, что означает, что ваш результат должен быть уверен на 95%, чтобы дать аналогичный результат в каждом образце.

Ошибка типа I: когда мы отклоняем нулевую гипотезу, хотя эта гипотеза верна. Ошибка типа I обозначается буквой альфа. При проверке гипотез нормальная кривая, показывающая критическую область, называется альфа-областью.

Ошибки типа II: когда мы принимаем нулевую гипотезу, но она ложна. Ошибки типа II обозначаются бета-версией. При проверке гипотез нормальная кривая, показывающая приемлемую область, называется бета-областью.

Односторонний тест: - Проверка статистической гипотезы, при которой область отклонения находится только на одной стороне выборочного распределения, называется единицей - хвостовой тест.

Пример: - в колледже обучается ≥ 4000 студентов или наука о данных принимает ≤ 80% организаций.

Двусторонний тест: - Двусторонний - тест - это статистический тест, в котором критическая область распределение является двух - двусторонним и проверяет, ли выборка больше или меньше определенного диапазона значений. Если тестируемый образец попадает в одну из критических областей, вместо нулевой гипотезы принимается альтернативная гипотеза.

Пример: колледж! = 4000 студентов или наука о данных! = Приняло 80% организаций.

P-значение: - P-значение или рассчитанная вероятность - это вероятность обнаружения наблюдаемых или более экстремальных результатов, когда нулевая гипотеза (H 0) вопрос исследования верен - определение слова «крайний» зависит от того, как проверяется гипотеза.

Если ваше значение P меньше выбранного уровня значимости, вы отклоняете нулевую гипотезу, т.е. принимаете, что ваш образец дает разумные доказательства в поддержку альтернативной гипотезы. Это НЕ подразумевает «значимого» или «важного» различия; это вам решать, учитывая реальную значимость вашего результата.

Пример: у вас есть монета, и вы не знаете, справедливо это или сложно, поэтому давайте решим нулевую и альтернативную гипотезу.

H0: монета - это честная монета.

H1: монета - сложная монета. и альфа = 5% или 0,05

Теперь давайте подбросим монету и вычислим p-value (значение вероятности).

Подбросьте монету в первый раз, и результат будет хвост - значение P = 50% (так как голова и хвост имеют равную вероятность)

Подбросьте монету второй раз, и результат будет хвост, теперь p-value = 50/2 = 25%

и аналогичным образом мы бросаем 6 раз подряд и получили результат как P-значение = 1,5%, но мы установили наш уровень значимости как 95%, что означает допустимый уровень ошибок 5%, и здесь мы видим, что мы вышли за пределы этого уровня, т. е. наша нулевая гипотеза не верна, поэтому нам нужно отвергнуть и предположить, что эта монета - сложная монета, что на самом деле так.

Степень свободы: - А теперь представьте, что вы не любите шляпы. Вы занимаетесь анализом данных. У вас есть набор данных из 10 значений. Если вы ничего не оцениваете, каждое значение может принимать любое число, верно? Каждое значение можно совершенно свободно изменять, но предположим, что вы хотите проверить среднее значение генеральной совокупности с выборкой из 10 значений, используя t-критерий с 1 выборкой. Теперь у вас есть ограничение - оценка среднего. Что именно это за ограничение? По определению среднего значения должны соблюдаться следующие отношения: сумма всех значений в данных должна равняться n x mean, где n - количество значений в данных. установленный.

Итак, если набор данных содержит 10 значений, сумма этих 10 значений должна равняться среднему x 10. Если среднее из 10 значений равно 3,5 (вы можете выбрать любое число), это ограничение требует, чтобы сумма 10 значений должна равняться 10 x 3,5 = 35.

С этим ограничением первое значение в наборе данных может изменяться. Каким бы ни было значение, сумма всех 10 чисел по-прежнему может иметь значение 35. Второе значение также может изменяться, потому что какое бы значение вы ни выбрали, оно по-прежнему допускает возможность того, что сумма всех значений 35 лет.

Теперь давайте посмотрим на некоторые из широко используемых типов проверки гипотез:

  1. Т-тест (Т-тест студента)
  2. Z тест
  3. ANOVA тест
  4. Тест хи-квадрат

T-тест: - t-тест - это тип выводимой статистики, который используется для определения значительного различия между средними значениями двух групп, которые могут быть связаны по определенным характеристикам. Это в основном используется, когда наборы данных, такие как набор данных, записанных как результат 100-кратного подбрасывания монеты, будут следовать нормальному распределению и могут иметь неизвестные дисперсии. T-тест используется как инструмент проверки гипотез, который позволяет проверить предположение, применимое к совокупности.

T-тест имеет 2 типа: 1. t-критерий с одной выборкой; 2. t-критерий с двумя выборками.

Один выборочный t-критерий. Один образец t -тест определяет, отличается ли среднее значение выборки статистически от известного или предполагаемого среднего значения генеральной совокупности. Тест One Sample t - это параметрический тест.

Пример: - вам 10 лет, и вы проверяете, составляет ли средний возраст 30 лет или нет. (проверьте код ниже, используя python)

from scipy.stats import ttest_1samp
import numpy as np
ages = np.genfromtxt(“ages.csv”)
print(ages)
ages_mean = np.mean(ages)
print(ages_mean)
tset, pval = ttest_1samp(ages, 30)
print(“p-values”,pval)
if pval < 0.05:    # alpha value is 0.05 or 5%
   print(" we are rejecting null hypothesis")
else:
  print("we are accepting null hypothesis")

Вывод для приведенного выше кода:

Двухвыборочный T-критерий: - Независимый t-критерий выборки или двухвыборочный t-критерий сравнивает средние значения двух независимых групп, чтобы определить, есть ли статистические доказательства того, что связанные средние по численности населения значительно различаются. Независимый выборочный t-тест - это параметрический тест. Этот тест также известен как Независимый t-тест.

Пример: есть ли какая-либо связь между неделей1 и неделей2 (код на python приведен ниже)

from scipy.stats import ttest_ind
import numpy as np
week1 = np.genfromtxt("week1.csv",  delimiter=",")
week2 = np.genfromtxt("week2.csv",  delimiter=",")
print(week1)
print("week2 data :-\n")
print(week2)
week1_mean = np.mean(week1)
week2_mean = np.mean(week2)
print("week1 mean value:",week1_mean)
print("week2 mean value:",week2_mean)
week1_std = np.std(week1)
week2_std = np.std(week2)
print("week1 std value:",week1_std)
print("week2 std value:",week2_std)
ttest,pval = ttest_ind(week1,week2)
print("p-value",pval)
if pval <0.05:
  print("we reject null hypothesis")
else:
  print("we accept null hypothesis")

Парный выборочный t-тест: - Парный выборочный t-тест также называется зависимым выборочным t-критерием. Это универсальный тест, который проверяет значительную разницу между двумя взаимосвязанными переменными. Примером этого является случай, когда вы измеряете артериальное давление у человека до и после лечения, состояния или временной точки.

H0: - означает, что разница между двумя образцами равна 0

H1: - средняя разница между двумя образцами не равна 0

проверьте код ниже для того же

import pandas as pd
from scipy import stats
df = pd.read_csv("blood_pressure.csv")
df[['bp_before','bp_after']].describe()
ttest,pval = stats.ttest_rel(df['bp_before'], df['bp_after'])
print(pval)
if pval<0.05:
    print("reject null hypothesis")
else:
    print("accept null hypothesis")

Когда можно запустить Z-тест.

В статистике используются несколько различных типов тестов (например, f-критерий, критерий хи-квадрат, t-критерий). Вы бы использовали Z-тест, если:

  • Ваш размер выборки больше 30. В противном случае используйте t-тест.
  • Точки данных должны быть независимыми друг от друга. Другими словами, одна точка данных не связана или не влияет на другую точку данных.
  • Ваши данные должны быть нормально распределены. Однако для больших размеров выборки (более 30) это не всегда имеет значение.
  • Ваши данные должны выбираться случайным образом из генеральной совокупности, где каждый элемент имеет равные шансы быть выбранным.
  • Объемы выборки должны быть по возможности равными.

Пример снова: мы используем z-тест для артериального давления с некоторым средним значением, например 156 (код Python для того же самого), одинарный Z-тест.

import pandas as pd
from scipy import stats
from statsmodels.stats import weightstats as stests
ztest ,pval = stests.ztest(df['bp_before'], x2=None, value=156)
print(float(pval))
if pval<0.05:
    print("reject null hypothesis")
else:
    print("accept null hypothesis")

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

H0: среднее значение двух групп равно 0

H1: среднее значение двух групп не равно 0

Пример: мы проверяем данные крови после крови и перед данными крови. (Код на Python ниже)

ztest ,pval1 = stests.ztest(df['bp_before'], x2=df['bp_after'], value=0,alternative='two-sided')
print(float(pval1))
if pval<0.05:
    print("reject null hypothesis")
else:
    print("accept null hypothesis")

ANOVA (F-ТЕСТ): - t-тест хорошо работает при работе с двумя группами, но иногда мы хотим сравнить более двух групп одновременно. Например, если мы хотим проверить, различается ли возраст избирателя на основе какой-либо категориальной переменной, такой как раса, мы должны сравнить средние значения каждого уровня или сгруппировать переменную. Мы могли бы провести отдельный t-тест для каждой пары групп, но когда вы проводите много тестов, вы увеличиваете вероятность ложных срабатываний. Дисперсионный анализ или ANOVA - это тест статистического вывода, который позволяет одновременно сравнивать несколько групп.

F = межгрупповая изменчивость / внутригрупповая изменчивость

В отличие от z- и t-распределений, F-распределение не имеет отрицательных значений, потому что внутригрупповая и межгрупповая изменчивость всегда положительна из-за возведения в квадрат каждого отклонения.

Односторонний F-тест (Anova): - Он определяет, похожи ли две или более группы или нет, на основе их среднего сходства и f-балла.

Пример: существует 3 разных категории растений и их вес, и необходимо проверить, похожи ли все 3 группы или нет (код на Python ниже)

df_anova = pd.read_csv('PlantGrowth.csv')
df_anova = df_anova[['weight','group']]
grps = pd.unique(df_anova.group.values)
d_data = {grp:df_anova['weight'][df_anova.group == grp] for grp in grps}
 
F, p = stats.f_oneway(d_data['ctrl'], d_data['trt1'], d_data['trt2'])
print("p-value for significance is: ", p)
if p<0.05:
    print("reject null hypothesis")
else:
    print("accept null hypothesis")

Двусторонний F-тест: - Двусторонний F-тест является расширением одностороннего f-теста, он используется, когда у нас есть 2 независимые переменные и 2+ группы. Двусторонний F-тест не определяет, какая переменная является доминирующей. если нам нужно проверить индивидуальную значимость, необходимо выполнить апостериорное тестирование.

Теперь давайте посмотрим на общую среднюю урожайность (средняя урожайность не по какой-либо подгруппе), а также на среднюю урожайность по каждому фактору, а также по факторам, сгруппированным вместе.

import statsmodels.api as sm
from statsmodels.formula.api import ols
df_anova2 = pd.read_csv("https://raw.githubusercontent.com/Opensourcefordatascience/Data-sets/master/crop_yield.csv")
model = ols('Yield ~ C(Fert)*C(Water)', df_anova2).fit()
print(f"Overall model F({model.df_model: .0f},{model.df_resid: .0f}) = {model.fvalue: .3f}, p = {model.f_pvalue: .4f}")
res = sm.stats.anova_lm(model, typ= 2)
res

Тест хи-квадрат- Тест применяется, когда у вас есть две категориальные переменные из одной генеральной совокупности. Он используется, чтобы определить, существует ли значимая связь между двумя переменными.

Например, в избирательном опросе избиратели могут быть классифицированы по полу (мужчина или женщина) и предпочтениям при голосовании (демократ, республиканец или независимый). Мы могли бы использовать критерий хи-квадрат на независимость, чтобы определить, связан ли пол с предпочтениями при голосовании.

проверьте пример на Python ниже

df_chi = pd.read_csv('chi-test.csv')
contingency_table=pd.crosstab(df_chi["Gender"],df_chi["Shopping?"])
print('contingency_table :-\n',contingency_table)
#Observed Values
Observed_Values = contingency_table.values 
print("Observed Values :-\n",Observed_Values)
b=stats.chi2_contingency(contingency_table)
Expected_Values = b[3]
print("Expected Values :-\n",Expected_Values)
no_of_rows=len(contingency_table.iloc[0:2,0])
no_of_columns=len(contingency_table.iloc[0,0:2])
ddof=(no_of_rows-1)*(no_of_columns-1)
print("Degree of Freedom:-",ddof)
alpha = 0.05
from scipy.stats import chi2
chi_square=sum([(o-e)**2./e for o,e in zip(Observed_Values,Expected_Values)])
chi_square_statistic=chi_square[0]+chi_square[1]
print("chi-square statistic:-",chi_square_statistic)
critical_value=chi2.ppf(q=1-alpha,df=ddof)
print('critical_value:',critical_value)
#p-value
p_value=1-chi2.cdf(x=chi_square_statistic,df=ddof)
print('p-value:',p_value)
print('Significance level: ',alpha)
print('Degree of Freedom: ',ddof)
print('chi-square statistic:',chi_square_statistic)
print('critical_value:',critical_value)
print('p-value:',p_value)
if chi_square_statistic>=critical_value:
    print("Reject H0,There is a relationship between 2 categorical variables")
else:
    print("Retain H0,There is no relationship between 2 categorical variables")
    
if p_value<=alpha:
    print("Reject H0,There is a relationship between 2 categorical variables")
else:
    print("Retain H0,There is no relationship between 2 categorical variables")

Вы можете получить весь код в моем репозитории git.

ах, наконец-то мы подошли к концу этой статьи. Надеюсь, эта статья помогла бы. Любая обратная связь всегда приветствуется.

Для получения дополнительных обновлений проверьте мой git и следите за нами в среде.