Тест на нормальное распределение ошибок

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

Например, пусть необходимо проверить гипотезу о равенстве средних значений в двух независимых выборках. Для этой цели подходит критерий Стьюдента. Но применение критерия Стьюдента обосновано, только если данные подчиняются нормальному распределению. Поэтому перед применением критерия необходимо проверить гипотезу о нормальности исходных данных. Или проверка остатков линейной регрессии на нормальность — позволяет проверить, соответствует ли применяемая модель регрессии исходным данным.

Нормальное распределение естественным образом возникает практически везде, где речь идёт об измерении с ошибками. Более того, в силу центральной предельной теоремы, распределение многих выборочных величин (например, выборочного среднего) при достаточно больших объёмах выборки хорошо аппроксимируется нормальным распределением вне зависимости от того, какое распределение было у выборки исходно. В связи с этим становится понятным, почему проверке распределения на нормальность стоит уделить особое внимание. В дальнейшем речь пойдёт о так называемых критериях согласия (goodness-of-fit tests). Проверяться будет не просто факт согласия с нормальным распределением с определёнными фиксированными значениями параметров, а несколько более общий факт принадлежности распределения к семейству нормальных распределений со всевозможными значениями параметров.

Проверку выборки на нормальность можно производить несколькими путями. Для начала можно вспомнить, какой вид у графика нормального распределения (гистограмма, график плотности и т.п.), как в нормальном распределении соотносятся среднее, мода, медиана, какими должны быть асимметрия и эксцесс, выполняется ли «правило 3-х сигм». Про всё это мы писали в статье про нормальное распределение. Вот с помощью такой описательной статистики можно оценить выборку на нормальность (обычно приемлемо отклонение на порядок ошибки рассчитываемого параметра). Вторая группа методов — критерии нормальности.

Критерии нормальности

Список критериев нормальности:

  • Критерий Шапиро-Уилка
  • Критерий асимметрии и эксцесса
  • Критерий Дарбина
  • Критерий Д’Агостино
  • Критерий Васичека
  • Критерий Дэвида-Хартли-Пирсона
  • Критерий хи-квадрат
  • Критерий Андерсона-Дарлинга
  • Критерий Филлибена
  • Критерий Колмогорова-Смирнова
  • Критерий Мартинса-Иглевича
  • Критерий Лина-Мудхолкара
  • Критерий Шпигельхальтера
  • Критерий Саркади
  • Критерий Смирнова-Крамера-фон Мизеса
  • Критерий Локка-Спурье
  • Критерий Оя
  • Критерий Хегази-Грина
  • Критерий Муроты-Такеучи

Подробно эти критерии с формулами и таблицами можно посмотреть здесь.

Проверка на нормальность в R (источник)

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

норм распределение

Другим очень часто используемым графическим способом проверки характера распределения данных является построение т.н. графиков квантилей (Q-Q plots, Quantile-Quantile plots). На таких графиках изображаются квантили двух распределений — эмпирического (т.е. построенного по анализируемым данным) и теоретически ожидаемого стандартного нормального распределения. При нормальном распределении проверяемой переменной точки на графике квантилей должны выстраиваться в прямую линию, исходящую под улом 45 градусов из левого нижнего угла графика. Графики квантилей особенно полезны при работе с небольшими по размеру совокупностями, для которых невозможно построить гистограммы, принимающие какую-либо выраженную форму.

В R для построения графиков квантилей можно использовать базовую функцию qqnorm(), которая в качестве основного аргумента принимает вектор со значениями анализируемой переменной.

x <- rnorm(500) # генерация нормально распределенной совокупности с n = 500
qqnorm(x)

qq plot

Следует отметить, что интерпретация графиков квантилей при работе с небольшими выборками, происходящими из нормально распределенных генеральных совокупностей, требует определенного навыка. Дело в том, что при небольшом числе наблюдений точки на графике квантилей могут не всегда образовывать четко выраженную прямую линию. В качестве иллюстрации этого утверждения на следующем рисунке приведены графики квантилей для 5 случайным образом сгенерированных нормально распределенных выборок по 20 наблюдений каждая (если использованный в примере пакет DAAG у Вас не установлен, выполните команду install.packages(«DAAG»)):

library(DAAG)
qreference(m = 20, seed = 145, nrep = 5, nrows = 1)

квантили

Фигура, в которую выстраиваются точки на некоторых графиках далека от прямой линии. Причина данного эффекта — в небольшом объеме наблюдений.

Тесты проверки на нормальность в R

Существует целый ряд статистических тестов, специально разработанных для проверки нормальности распределения данных. В общем виде проверяемую при помощи этих тестов нулевую гипотезу можно сформулировать так: «Анализируемая выборка происходит из генеральной совокупности, имеющей нормальное распределение». Если получаемая при помощи того или иного теста вероятность ошибки Р оказывается меньше некоторого заранее принятого уровня значимости (например, 0.05), нулевая гипотеза отклоняется.

В R реализованы практически все имеющиеся тесты на нормальность — либо в виде стандарных функций, либо в виде функций, входящих в состав отдельных пакетов. Примером базовой функции является shapiro.test(), при помощи которой можно выполнить широко используемый тест Шапиро-Уилка:

shapiro.test(rnorm(500))
Shapiro-Wilk normality test
data: rnorm(500)
W = 0.9978, p-value = 0.7653 # P > 0.05 - нулевая гипотеза не отвергается

Основные классические критерии проверки на нормальность собраны в пакете nortest. Пакет можно установить с CRAN при помощи вызова функции install.packages():

> install.packages(pkgs=c("nortest"))

Подключить установленный пакет можно при помощи функции library():

> library(nortest)

Может возникнуть вопрос: «А зачем столько много разных критериев для проверки одного факта? Нельзя ли выбрать наилучший и всегда его использовать?». Ответ на этот вопрос не утешителен: «В общем случае, к сожалению, нельзя».

Критерий Лиллифорса

Критерий Лиллифорса (Lilliefors) является вариантом известного классического критерия Колмогорова-Смирнова, специально модифицированного для проверки нормальности. Эта модификация существенна. Для проверки гипотезы нормальности нельзя использовать классический непараметрический критерий Колмогорова-Смирнова, реализованный в функции ks.test(). Критерий Лиллифорса реализован в функции lillie.test():

> lillie.test(rnorm(100, mean = 6, sd = 4));
Lilliefors (Kolmogorov-Smirnov) normality test
data: rnorm(100, mean = 6, sd = 4)
D = 0.0463, p-value = 0.8621
> lillie.test(runif(100, min = 2, max = 4));
Lilliefors (Kolmogorov-Smirnov) normality test
data: runif(100, min = 2, max = 4)
D = 0.0732, p-value = 0.2089

Критерии Крамера-фон Мизеса и Андерсона-Дарлинга

Эти критерии менее известны, но обычно работают гораздо лучше, нежели критерий Лиллифорса. Они реализованы в функциях cvm.test() и ad.test() соответственно:

> cvm.test(rnorm(50, mean = 6, sd = 4));
Cramer-von Mises normality test
data: rnorm(50, mean = 6, sd = 4)
W = 0.0321, p-value = 0.8123
> ad.test(runif(50, min = 2, max = 4));
Anderson-Darling normality test
data: runif(50, min = 2, max = 4)
A = 1.5753, p-value = 0.0004118

Критерий Шапиро-Франсиа

Этот критерий работает достаточно хорошо в большинстве не очень «сложных» случаев. Получить p-значение можно посредством функции sf.test():

> sf.test(rexp(50, rate = 2));
Shapiro-Francia normality test
data: rexp(50, rate = 2)
W = 0.7803, p-value = 2.033e-06

Критерий хи-квадрат Пирсона

В отличие от задач проверки пропорций, критерий хи-квадрат обычно очень плохо работает в задачах проверки распределения на нормальность. Вероятность ошибки второго рода очень велика для достаточно широкого класса альтернативных распределений. В связи с этим, использовать его не рекомендуется. Тем не менее реализация его предоставлена функцией pearson.test(). У этой функции есть булевская опция adjusted, которая позволяет внести поправки в p-значение из-за наличия двух неизвестных параметров. Рекомендуемая последовательность действий такая: получить два p-значения, одно, соответствующее adjusted=TRUE, второе — adjusted=FALSE. Истинное p-значение обычно находится между. Кроме того, полезно поварьировать объем выборки и посмотреть, насколько сильно меняется p-значение. Если влияние объёма выборки сильное, то от использования критерия стоит отказаться во избежание ошибок.

> pearson.test(rnorm(50, mean = 6, sd = 4));
Pearson chi-square normality test
data: rnorm(50, mean = 6, sd = 4)
P = 5.2, p-value = 0.6356
> pearson.test(runif(50, min = -1, max = 1));
Pearson chi-square normality test
data: runif(50, min = -1, max = 1)
P = 7.6, p-value = 0.3692

Дополнительнаая информация: проверка на нормальность

Тест нормальности используется для проверки того, имеет ли переменная или выборка нормальное распределение.

Прежде чем говорить о тесте нормальности, давайте сначала обсудим нормальное распределение и почему оно так важно?

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

Нормальное распределение, также известное как распределение Гаусса, представляет собой функцию вероятности, которая описывает, как распределяются значения переменной. Это симметричное распределение, при котором большинство наблюдений приходится на центральный пик, а вероятности для значений, находящихся дальше от среднего сужения, одинаково в обоих направлениях с меньшим количеством выбросов на верхнем и нижнем концах диапазона данных.

Термин «Гауссово распределение» относится к немецкому математику Карлу Фридриху Гауссу.

Нормальное распределение имеет несколько важных свойств:

  1. среднее значение, медиана и мода — все это центр распределения.
  2. распределение имеет форму колокола
  3. ≈68% данных находится в пределах 1 стандартного отклонения от среднего, ≈95% данных попадает в пределы 2 стандартных отклонений от среднего и ≈99,7% данных попадает в пределы 3 стандартных отклонений от среднего.

Почему это так важно

Нормальное распределение является наиболее важным распределением вероятностей в статистике, потому что

  1. Многие процессы в природе следуют нормальному распределению. Некоторые из примеров — возраст, рост, вес и артериальное давление человека.
  2. Линейная регрессия предполагает, что ошибки или остатки подчиняются нормальному распределению.
  3. Некоторые алгоритмы машинного обучения, такие как линейный дискриминантный анализ и квадратичный дискриминантный анализ, основаны на предположении нормального распределения.

Тесты на нормальность

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

Есть два способа проверить нормальность:

  1. Графики для проверки нормальности
  2. Статистические тесты на нормальность

1. Графики для проверки нормальности

Для проверки нормальности переменной можно использовать различные графики. Используя графики / графики, мы можем визуально увидеть нормальность, но графики не очень точны как статистические методы.

1.Q Q или график квантиля-квантиля

Он отображает два набора квантилей друг против друга, то есть теоретические квантили против фактических квантилей переменной.

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

2. Коробчатая диаграмма

Коробчатая диаграмма, также известная как диаграмма прямоугольников и усов, — еще один способ визуализировать нормальность переменной. Он отображает распределение данных на основе пятизначной сводки, то есть минимума, первого квартиля (Q1), медианы (Q2), третьего квартиля (Q3) и максимума.

Если ваша переменная имеет нормальное распределение, мы должны увидеть среднее и медиану в центре.

3. Гистограмма

Один из популярных и часто используемых графиков для визуализации распределения данных — это гистограмма. Он также позволяет нам проверять данные на предмет их выбросов, асимметрии и т. Д. Он разделяет данные на ячейки равной ширины. Каждая ячейка отображается в виде полосы, и высота полосы зависит от количества точек данных в этой ячейке.

Если ваша переменная имеет нормальное распределение, мы должны увидеть кривую колокола.

2. Статистические тесты на нормальность

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

  1. Тест Шапиро-Уилка

Начнем с теста Шапиро-Уилка. Это самый мощный тест для проверки нормальности переменной. Он был предложен в 1965 году Самуэлем Сэнфордом Шапиро и Мартином Уилком.

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, то есть предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

2. К-квадрат Д’Агостино

К-квадрат тест Д’Агостино проверяет нормальность переменной на основе асимметрии и эксцесса. Он был назван Ральфом Д’Агостино.

Асимметрия — это мера симметрии.

Эксцесс — это показатель того, являются ли данные с тяжелым или легким хвостом по сравнению с нормальным распределением.

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, то есть предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

3. Тест на нормальность Андерсона-Дарлинга

Тест нормальности Андерсона-Дарлинга — это еще один общий тест на нормальность, предназначенный для определения того, поступают ли данные из указанного распределения, в нашем случае из нормального распределения. Он был разработан в 1952 году Теодором Андерсоном и Дональдом Дарлингом.

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

4. Тест нормальности хи-квадрат

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

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, то есть предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

5. Тест Лиллиэфорса на нормальность

Тест Лиллиэфорса — это тест на нормальность, основанный на тесте Колмогорова – Смирнова. Как и все вышеперечисленные методы, этот тест используется для проверки того, поступают ли данные из нормального распределения. Он назван в честь Хьюберта Лиллиефорса, профессора статистики Университета Джорджа Вашингтона.

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, то есть предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

6. ЯркеТест Бера на нормальность

Тест Жарка-Бера проверяет, имеют ли выборочные данные асимметрию и эксцесс, соответствующие нормальному распределению.

ПРИМЕЧАНИЕ. Этот тест работает только для достаточно большого количества выборок данных (›2000).

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, то есть предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

7. КолмогороваТест Смирнова на нормальность

Выполняет (один или два образца) критерий согласия Колмогорова-Смирнова. Одновыборочный тест выполняет проверку распределения F (x) наблюдаемой случайной величины в сравнении с заданным распределением G (x) (т. Е. Нормальным распределением).

  • Если p-значение ≤ 0,05, то мы отклоняем нулевую гипотезу, т.е. предполагаем, что распределение нашей переменной не является нормальным / гауссовым.
  • Если p-значение> 0,05, то мы не можем отклонить нулевую гипотезу, т.е. мы предполагаем, что распределение нашей переменной является нормальным / гауссовским.

Заключение

Мы создаем модели машинного обучения, чтобы имитировать процесс во вселенной / популяции, обучаясь на выборке, взятой из совокупности. Процесс может заключаться в обнаружении рака, мошеннических транзакций и т. Д. Мы предполагаем, что распределение населения является нормальным, и выборка представляет собой совокупность. Хорошая выборка, представляющая совокупность, хорошо работает в производстве. Итак, перед обучением модели рекомендуется проверить, является ли выборка хорошим представлением генеральной совокупности (т.е. нормальным распределением) с помощью тестов нормальности. Существует множество способов проверить нормальность переменной. Можно выбрать графики, которые упрощают понимание путем визуализации, или выбрать статистические тесты, которые дают значение p для проверки нормальности.

Ссылка

Спасибо за чтение!

Любые отзывы и комментарии приветствуются!

Некоторые из моих других сообщений могут быть вам интересны,

« is и == в Python
Ускорьте сравнение строк medium.com»

From Wikipedia, the free encyclopedia

In statistics, normality tests are used to determine if a data set is well-modeled by a normal distribution and to compute how likely it is for a random variable underlying the data set to be normally distributed.

More precisely, the tests are a form of model selection, and can be interpreted several ways, depending on one’s interpretations of probability:

  • In descriptive statistics terms, one measures a goodness of fit of a normal model to the data – if the fit is poor then the data are not well modeled in that respect by a normal distribution, without making a judgment on any underlying variable.
  • In frequentist statistics statistical hypothesis testing, data are tested against the null hypothesis that it is normally distributed.
  • In Bayesian statistics, one does not «test normality» per se, but rather computes the likelihood that the data come from a normal distribution with given parameters μ,σ (for all μ,σ), and compares that with the likelihood that the data come from other distributions under consideration, most simply using a Bayes factor (giving the relative likelihood of seeing the data given different models), or more finely taking a prior distribution on possible models and parameters and computing a posterior distribution given the computed likelihoods.

A normality test is used to determine whether sample data has been drawn from a normally distributed population (within some tolerance). A number of statistical tests, such as the Student’s t-test and the one-way and two-way ANOVA, require a normally distributed sample population.

Graphical methods[edit]

An informal approach to testing normality is to compare a histogram of the sample data to a normal probability curve. The empirical distribution of the data (the histogram) should be bell-shaped and resemble the normal distribution. This might be difficult to see if the sample is small. In this case one might proceed by regressing the data against the quantiles of a normal distribution with the same mean and variance as the sample. Lack of fit to the regression line suggests a departure from normality (see Anderson Darling coefficient and minitab).

A graphical tool for assessing normality is the normal probability plot, a quantile-quantile plot (QQ plot) of the standardized data against the standard normal distribution. Here the correlation between the sample data and normal quantiles (a measure of the goodness of fit) measures how well the data are modeled by a normal distribution. For normal data the points plotted in the QQ plot should fall approximately on a straight line, indicating high positive correlation. These plots are easy to interpret and also have the benefit that outliers are easily identified.

Back-of-the-envelope test[edit]


Simple back-of-the-envelope test takes the sample maximum and minimum and computes their z-score, or more properly t-statistic
(number of sample standard deviations that a sample is above or below the sample mean), and compares it to the 68–95–99.7 rule:
if one has a 3σ event (properly, a 3s event) and substantially fewer than 300 samples, or a 4s event and substantially fewer than 15,000 samples, then a normal distribution will understate the maximum magnitude of deviations in the sample data.

This test is useful in cases where one faces kurtosis risk – where large deviations matter – and has the benefits that it is very easy to compute and to communicate: non-statisticians can easily grasp that «6σ events are very rare in normal distributions».

Frequentist tests[edit]

Tests of univariate normality include the following:

  • D’Agostino’s K-squared test,
  • Jarque–Bera test,
  • Anderson–Darling test,
  • Cramér–von Mises criterion,
  • Kolmogorov–Smirnov test (this one only works if the mean and the variance of the normal are assumed known under the null hypothesis),
  • Lilliefors test (based on the Kolmogorov–Smirnov test, adjusted for when also estimating the mean and variance from the data),
  • Shapiro–Wilk test, and
  • Pearson’s chi-squared test.

A 2011 study concludes that Shapiro–Wilk has the best power for a given significance, followed closely by Anderson–Darling when comparing the Shapiro–Wilk, Kolmogorov–Smirnov, Lilliefors, and Anderson–Darling tests.[1]

Some published works recommend the Jarque–Bera test,[2][3] but the test has weakness. In particular, the test has low power for distributions with short tails, especially for bimodal distributions.[4] Some authors have declined to include its results in their studies because of its poor overall performance.[5]

Historically, the third and fourth standardized moments (skewness and kurtosis) were some of the earliest tests for normality. The Lin–Mudholkar test specifically targets asymmetric alternatives.[6] The Jarque–Bera test is itself derived from skewness and kurtosis estimates. Mardia’s multivariate skewness and kurtosis tests generalize the moment tests to the multivariate case.[7] Other early test statistics include the ratio of the mean absolute deviation to the standard deviation and of the range to the standard deviation.[8]

More recent tests of normality include the energy test[9] (Székely and Rizzo) and the tests based on the empirical characteristic function (ECF) (e.g. Epps and Pulley,[10] Henze–Zirkler,[11] BHEP test[12]). The energy and the ECF tests are powerful tests that apply for testing univariate or multivariate normality and are statistically consistent against general alternatives.

The normal distribution has the highest entropy of any distribution for a given standard deviation. There are a number of normality tests based on this property, the first attributable to Vasicek.[13]

Bayesian tests[edit]

Kullback–Leibler divergences between the whole posterior distributions of the slope and variance do not indicate non-normality. However, the ratio of expectations of these posteriors and the expectation of the ratios give similar results to the Shapiro–Wilk statistic except for very small samples, when non-informative priors are used.[14]

Spiegelhalter suggests using a Bayes factor to compare normality with a different class of distributional alternatives.[15] This approach has been extended by Farrell and Rogers-Stewart.[16]

Applications[edit]

One application of normality tests is to the residuals from a linear regression model.[17] If they are not normally distributed, the residuals should not be used in Z tests or in any other tests derived from the normal distribution, such as t tests, F tests and chi-squared tests. If the residuals are not normally distributed, then the dependent variable or at least one explanatory variable may have the wrong functional form, or important variables may be missing, etc. Correcting one or more of these systematic errors may produce residuals that are normally distributed; in other words, non-normality of residuals is often a model deficiency rather than a data problem.[18]

See also[edit]

  • Randomness test
  • Seven-number summary

Notes[edit]

  1. ^ Razali, Nornadiah; Wah, Yap Bee (2011). «Power comparisons of Shapiro–Wilk, Kolmogorov–Smirnov, Lilliefors and Anderson–Darling tests» (PDF). Journal of Statistical Modeling and Analytics. 2 (1): 21–33. Archived from the original (PDF) on 2015-06-30.
  2. ^ Judge, George G.; Griffiths, W. E.; Hill, R. Carter; Lütkepohl, Helmut; Lee, T. (1988). Introduction to the Theory and Practice of Econometrics (Second ed.). Wiley. pp. 890–892. ISBN 978-0-471-08277-4.
  3. ^ Gujarati, Damodar N. (2002). Basic Econometrics (Fourth ed.). McGraw Hill. pp. 147–148. ISBN 978-0-07-123017-9.
  4. ^ Thadewald, Thorsten; Büning, Herbert (1 January 2007). «Jarque–Bera Test and its Competitors for Testing Normality – A Power Comparison». Journal of Applied Statistics. 34 (1): 87–105. CiteSeerX 10.1.1.507.1186. doi:10.1080/02664760600994539. S2CID 13866566.
  5. ^ Sürücü, Barış (1 September 2008). «A power comparison and simulation study of goodness-of-fit tests». Computers & Mathematics with Applications. 56 (6): 1617–1625. doi:10.1016/j.camwa.2008.03.010.
  6. ^ Lin, C. C.; Mudholkar, G. S. (1980). «A simple test for normality against asymmetric alternatives». Biometrika. 67 (2): 455–461. doi:10.1093/biomet/67.2.455.
  7. ^ Mardia, K. V. (1970). Measures of multivariate skewness and kurtosis with applications. Biometrika 57, 519–530.
  8. ^ Filliben, J. J. (February 1975). «The Probability Plot Correlation Coefficient Test for Normality». Technometrics. 17 (1): 111–117. doi:10.2307/1268008. JSTOR 1268008.
  9. ^ Székely, G. J. and Rizzo, M. L. (2005) A new test for multivariate normality, Journal of Multivariate Analysis 93, 58–80.
  10. ^ Epps, T. W., and Pulley, L. B. (1983). A test for normality based on the empirical characteristic function. Biometrika 70, 723–726.
  11. ^ Henze, N., and Zirkler, B. (1990). A class of invariant and consistent tests for multivariate normality. Communications in Statistics – Theory and Methods 19, 3595–3617.
  12. ^ Henze, N., and Wagner, T. (1997). A new approach to the BHEP tests for multivariate normality. Journal of Multivariate Analysis 62, 1–23.
  13. ^ Vasicek, Oldrich (1976). «A Test for Normality Based on Sample Entropy». Journal of the Royal Statistical Society. Series B (Methodological). 38 (1): 54–59. JSTOR 2984828.
  14. ^ Young K. D. S. (1993), «Bayesian diagnostics for checking assumptions of normality». Journal of Statistical Computation and Simulation, 47 (3–4),167–180
  15. ^ Spiegelhalter, D.J. (1980). An omnibus test for normality for small samples. Biometrika, 67, 493–496. doi:10.1093/biomet/67.2.493
  16. ^ Farrell, P.J., Rogers-Stewart, K. (2006) «Comprehensive study of tests for normality and symmetry: extending the Spiegelhalter test». Journal of Statistical Computation and Simulation, 76(9), 803 – 816. doi:10.1080/10629360500109023
  17. ^ Portney, L.G. & Watkins, M.P. (2000). Foundations of clinical research: applications to practice. New Jersey: Prentice Hall Health. pp. 516–517. ISBN 0838526950.{{cite book}}: CS1 maint: multiple names: authors list (link)
  18. ^ Pek, Jolynn; Wong, Octavia; Wong, Augustine C. M. (2018-11-06). «How to Address Non-normality: A Taxonomy of Approaches, Reviewed, and Illustrated». Frontiers in Psychology. 9: 2104. doi:10.3389/fpsyg.2018.02104. ISSN 1664-1078. PMC 6232275. PMID 30459683.

Further reading[edit]

  • Ralph B. D’Agostino (1986). «Tests for the Normal Distribution». In D’Agostino, R.B.; Stephens, M.A. (eds.). Goodness-of-Fit Techniques. New York: Marcel Dekker. ISBN 978-0-8247-7487-5.
  • Henry C. Thode, Jr. (2002). Testing for Normality. New York: Marcel Dekker, Inc. pp. 479. ISBN 978-0-8247-9613-6.

Сентябрь 8, 2016

 t-тест простыми словами

Наступила осень, а значит, настало время для запуска нового тематического проекта «Статистический анализ с R». В нем мы рассмотрим статистические методы с точки зрения их применения на практике: узнаем какие методы существуют, в каких случаях и каким образом их проводить в среде R. На мой взгляд, Критерий Стьюдента или t-тест (от англ. t-test) идеально подходит в качестве введения в мир статистического анализа. Тест Стьюдента достаточно прост и показателен, а также требует минимум базовых знаний в статистике, с которыми читатель может ознакомиться в ходе прочтения этой статьи.

Примечание_1: здесь и в других статьях Вы не увидите формул и математических объяснений, т.к. информация рассчитана на студентов естественных и гуманитарных специальностей, которые делают лишь первые шаги в стат. анализе.

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

Что такое t-тест и в каких случаях его стоит применять

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

автор Стьюдент

Любопытно, что создал этот метод Уильямом Госсет — химик, приглашенный работать на фабрику Guinness. Разработанный им тест служил изначально для оценки качества пива. Однако, химикам фабрики запрещалось независимо публиковать научные работы под своим именем. Поэтому в 1908 году Уильям опубликовал свою статью в журнале «Biometrika» под псевдонимом «Стьюдент». Позже, выдающийся математик и статистик Рональд Фишер доработал метод, который затем получил массовое распространение под названием Student’s t-test.

Критерий Стьюдента (t-тест) — это статистический метод, который позволяет сравнивать средние значения двух выборок и на основе результатов теста делать заключение о том, различаются ли они друг от друга статистически или нет. Если Вы хотите узнать, отличается ли средний уровень продолжительности жизни в Вашем регионе от среднего уровня по стране; сравнить урожайность картофеля в разных районах; или изменяется ли кровяное давление до и после употребления нового лекарства, то t-тест может быть Вам полезен. Почему может быть? Потому что для его проведения, необходимо, чтобы данные выборок имели распределение близкое к нормальному. Для этого существуют методы оценки, которые позволяют сказать, допустимо ли в данном случае полагать, что данные распределены нормально или нет. Поговорим об этом подробнее.

Нормальное распределение данных и методы его оценки qqplot и shapiro.test

Нормальное распределение данных характерно для количественных данных, на распределение которых влияет множество факторов, либо оно случайно. Нормальное распределение характеризуется несколькими особенностями:

  • Оно всегда симметрично и имеет форму колокола.
  • Значения среднего и медианы совпадают.
  • В пределах одного стандартного отклонения в обе стороны лежат 68.2% всех данных, в пределах двух — 95,5%, в пределах трех — 99,7%
 rnorm нормальное распределение

Давайте создадим случайную выборку с нормальным распределением на языке программирования R, где общее количество измерений = 100, среднее арифметическое = 5, а стандартное отклонение = 1. Затем отобразим его на графике в виде гистограммы:

mydata <- rnorm(100, mean = 5, sd = 1)
hist(mydata, col = "light green")

Ваш график может слегка отличаться от моего, так как числа сгенерированы случайным образом. Как Вы видите, данные не идеально симметричны, но кажется сохраняют форму нормального распределения. Однако, мы воспользуемся более объективными методами определения нормальности данных.

график qqplot

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

install.packages("car") #установка пакета "car"
library(car) #загрузка пакета "car" в среду R
qqPlot(mydata) #запустим тест

Как видно из графика, наши данные не имеют серьезных отклонений от теоретического нормального распределения. Но порой при помощи qqplot невозможно дать однозначный ответ. В этом случае следует использовать тест Шапиро-Уилка, который основан на нулевой гипотезе, что наши данные распределены нормально. Если же P-значение менее 0.05 (p-value < 0.05), то мы вынуждены отклонить нулевую гипотезу. P-значение в этом случае будет говорить о том, что вероятность ошибки при отклонении нулевой гипотезы будет равна менее 5%.

Тест Шапиро shapiro-test

Провести тест Шапиро-Уилка в R не составит труда. Для этого нужно всего лишь вызвать функцию shapiro.test, и в скобках вставить имя ваших данных. В нашем случае p-value должен быть значительно больше 0.05, что не позволяет отвергнуть нулевую гипотезу о том, что наши данные распределены нормально.

Запускаем t-тест Стьюдента в среде R

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

Одновыборочный критерий Стьюдента (one-sample t-test)

Одновыборочный t-тест следует выбирать, если Вы сравниваете выборку с общеизвестным средним. Например, отличается ли средний возраст жителей Северо-Кавказского Федерального округа от общего по России. Существует мнение, что климат Кавказа и культурные особенности населяющих его народов способствуют продлению жизни. Для того, чтобы проверить эту гипотезу, мы возьмем данные РосСтата (таблицы среднего ожидаемого продолжительности жизни по регионам России) и применим одновыборочный критерий Стьюдента. Так как критерий Стьюдента основан на проверке статистических гипотез, то за нулевую гипотезу будем принимать то, что различий между средним ожидаемым уровнем продолжительности по России и республикам Северного Кавказа нет. Если различия существуют, то для того, чтобы считать их статистически значимыми p-value должно быть менее 0.05 (логика та же, что и в вышеописанном тесте Шапиро-Уилка).

Загрузим данные в R. Для этого, создадим вектор со средними значениями по республикам Кавказа (включая Адыгею). Затем, запустим одновыборочный t-тест, указав в параметре mu среднее значение ожидаемого возраста жизни по России равное 70.93.

rosstat <-c(79.42, 75.83, 74.16, 73.91, 73.82, 73.06, 72.01)
qqPlot(rosstat)
shapiro.test(rosstat)
t.test(rosstat, mu = 70.93)

Несмотря на то, что у нас всего 7 точек в выборке, в целом они проходят тесты нормальности и мы можем на них полагаться, так как эти данные уже были усреднены по региону.

Результаты t-тест

Результаты t-теста говорят о том, что средняя ожидаемая продолжительность жизни у жителей Северного Кавказа (74.6 лет) действительно выше, чем в среднем по России (70.93 лет), а результаты теста являются статистически значимыми (p < 0.05).

Двувыборочный для независимых выборок (independent two-sample t-test)

Двувыборочный t-тест используется, когда Вы сравниваете две независимые выборки. Допустим, мы хотим узнать, отличается ли урожайность картофеля на севере и на юге какого-либо региона. Для этого, мы собрали данные с 40 фермерских хозяйств: 20 из которых располагались на севере и сформировали выборку «North», а остальные 20 — на юге, сформировав выборку «South».

Загрузим данные в среду R. Кроме проверки нормальности данных, будет полезно построить «график с усами», на котором можно видеть медианы и разброс данных для обеих выборок.

North <- c(122, 150, 136, 129, 169, 158, 132, 162, 143, 179, 139, 193, 155, 160, 165, 149, 173, 173, 141, 166)
qqPlot(North)
shapiro.test(North)

South <- c(170, 163, 178, 150, 166, 142, 157, 149, 151, 164, 163, 161, 159, 139, 180, 155, 144, 139, 151, 160)
qqPlot(North)
shapiro.test(North)

boxplot(North, South)

Как видно из графика, медианы выборок не сильно отличаются друг от друга, однако разброс данных гораздо сильнее на севере. Проверим отличаются ли статистически средние значения при помощи функции t.test. Однако в этот раз на место параметра mu мы ставим имя второй выборки. Результаты теста, которые Вы видите на рисунке снизу, говорят о том, что средняя урожайность картофеля на севере статистически не отличается от урожайности на юге (p = 0.6339).

Критерий Стьюдента в R

Двувыборочный для зависимых выборок (dependent two-sample t-test)

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

Для того, чтобы запустить его в R, следует ввести все ту же функцию t.test. Однако, в скобках, после таблиц данных, следует ввести дополнительный аргумент paired = TRUE. Этот аргумент говорит о том, что Ваши данные зависят друг от друга. Например:

t.test(experiment, povtor.experimenta, paired = TRUE)
t.test(davlenie.do.priema, davlenie.posle.priema, paired = TRUE)

Также в функции t.test существует два дополнительных аргумента, которые могут улучшить качество результатов теста: var.equal и alternative. Если вы знаете, что вариация между выборками равна, вставьте аргумент var.equal = TRUE. Если же вы хотите проверить гипотезу о том, что разница между средними в выборках значительно меньше или больше 0, то введите аргумент alternative=»less» или alternative=»greater» (по умолчанию альтернативная гипотеза говорит о том, что выборки просто отличаются друг от друга: alternative=»two.sided»).

Заключение

Статья получилась довольно длинной, зато теперь Вы знаете: что такое критерий Стьюдента и нормальное распределение; как при помощи функций qqplot и shapiro.test проверять нормальность данных в R; а также разобрали три типа t-тестов и провели их в среде R.

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


Многие статистические тесты предполагают , что наборы данных обычно распределяются.

Есть четыре распространенных способа проверить это предположение в Python:

1. (Визуальный метод) Создайте гистограмму.

  • Если гистограмма имеет форму колокола, то считается, что данные распределены нормально.

2. (Визуальный метод) Создайте график QQ.

  • Если точки на графике примерно совпадают с прямой диагональной линией, предполагается, что данные распределены нормально.

3. (Формальный статистический тест) Выполните тест Шапиро-Уилка.

  • Если p-значение теста больше, чем α = 0,05, то предполагается, что данные распределены нормально.

4. (Формальный статистический тест) Выполните тест Колмогорова-Смирнова.

  • Если p-значение теста больше, чем α = 0,05, то предполагается, что данные распределены нормально.

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

Способ 1: создание гистограммы

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

import math
import numpy as np
from scipy. stats import lognorm
import matplotlib.pyplot as plt

#make this example reproducible
np.random.seed (1)

#generate dataset that contains 1000 log-normal distributed values
lognorm_dataset = lognorm. rvs (s=.5, scale=math. exp (1), size=1000)

#create histogram to visualize values in dataset
plt.hist (lognorm_dataset, edgecolor='black', bins=20) 

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

Способ 2: создать график QQ

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

import math
import numpy as np
from scipy. stats import lognorm
import statsmodels.api as sm
import matplotlib.pyplot as plt

#make this example reproducible
np.random.seed (1)

#generate dataset that contains 1000 log-normal distributed values
lognorm_dataset = lognorm. rvs (s=.5, scale=math. exp (1), size=1000)

#create Q-Q plot with 45-degree line added to plot
fig = sm. qqplot (lognorm_dataset, line='45')

plt.show()

Если точки на графике ложатся примерно на прямую диагональную линию, мы обычно предполагаем, что набор данных имеет нормальное распределение.

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

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

Метод 3: выполнить тест Шапиро-Уилка

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

import math
import numpy as np
from scipy.stats import shapiro 
from scipy. stats import lognorm

#make this example reproducible
np.random.seed (1)

#generate dataset that contains 1000 log-normal distributed values
lognorm_dataset = lognorm. rvs (s=.5, scale=math. exp (1), size=1000)

#perform Shapiro-Wilk test for normality
shapiro(lognorm_dataset)

ShapiroResult(statistic=0.8573324680328369, pvalue=3.880663073872444e-29)

Из вывода мы видим, что тестовая статистика равна 0,857 , а соответствующее значение p равно 3,88e-29 (чрезвычайно близко к нулю).

Поскольку p-значение меньше 0,05, мы отвергаем нулевую гипотезу теста Шапиро-Уилка.

Это означает, что у нас есть достаточно доказательств, чтобы сказать, что данные выборки не получены из нормального распределения.

Метод 4: выполнить тест Колмогорова-Смирнова

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

import math
import numpy as np
from scipy.stats import kstest
from scipy. stats import lognorm

#make this example reproducible
np.random.seed (1)

#generate dataset that contains 1000 log-normal distributed values
lognorm_dataset = lognorm. rvs (s=.5, scale=math. exp (1), size=1000)

#perform Kolmogorov-Smirnov test for normality
kstest(lognorm_dataset, 'norm')

KstestResult(statistic=0.84125708308077, pvalue=0.0)

Из вывода мы видим, что статистика теста равна 0,841 , а соответствующее значение p равно 0,0 .

Поскольку p-значение меньше 0,05, мы отвергаем нулевую гипотезу теста Колмогорова-Смирнова.

Это означает, что у нас есть достаточно доказательств, чтобы сказать, что данные выборки не получены из нормального распределения.

Как обращаться с ненормальными данными

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

1. Преобразование журнала: преобразование значений из x в log(x) .

2. Преобразование квадратного корня: преобразование значений из x в √ x .

3. Преобразование кубического корня: преобразование значений от x до x 1/3 .

Выполняя эти преобразования, набор данных обычно становится более нормально распределенным.

Прочтите этот учебник , чтобы узнать, как выполнять эти преобразования в Python.

Понравилась статья? Поделить с друзьями:
  • Тест ошибок форд фокус 2
  • Тест на наркотики ошибка
  • Тест ошибок опель астра h
  • Тест на ковид вероятность ошибки экспресс тест
  • Тест ошибок е39