3482
правки
Изменения
м
В качестве Нулевой гипотезой (<math>H_0</math> ) для всех нижеприведённых критериев является предположение, что «случайная величина <math>X</math> распределена нормально».
==== Пакет <code>stats</code> ====В R реализовано множество критериев проверки соответствия распределения нормальному закону.
В данном пакете реализованы две функции, которые позволяют осуществить проверку принадлежности распределения нормальному закону. * <code>shapiro.test</code> - критерий Шапиро - Уилка* <code>ks.test</code> - критерий Колмогорова - Смирнова<ref>Для оценки нормальности вызов выглядит следующим образом: <code>ks.test(x, y = "pnorm")</code></ref>=== Сравнительная таблица реализации критериев в пакетах ====
Данные функции возвращают результат в виде S3{| class="wide wikitable sortable" style="text-класса align: center"! Критерии !! {{r-package|stats|core=true}} !! {{r-package|nortest}} !! {{r-package|moments}} !! {{r-package|fBasics}} !! {{r-package|tseries}} !! {{r-package|lawstat}}|-| style="text-align: left" | Критерий Шапиро - Уилка || <code>htestshapiro.test</code>. ==== Пакет || - || - || <code>nortestshapiroTest</code> ====|| - || -|-В данный пакет входят следующие функции| style="text-align: * left" | Критерий Колмогорова - Смирнова || <code>adks.test</code> - критерий Андерсона - Дарлинга* <ref>Для оценки нормальности вызов выглядит следующим образом: <code>cvmks.test(x, y = "pnorm")</code> .</ref> || - критерий Крамера || - фон Мизеса* || <code>lillie.testksnormTest</code> || - || - критерий Лиллиефорса* |-| style="text-align: left" | Критерий Андерсона - Дарлинга || - || <code>pearsonad.test</code> || - критерий || <mathcode>\chi^2adTest</mathcode> Пирсона|| - || -* |-| style="text-align: left" | Критерий Крамера - фон Мизеса || - || <code>sfcvm.test</code> || - критерий Шапиро || <code>cvmTest</code> || - || - Франчия|-Данные функции возвращают результат в виде S3| style="text-класса align: left" | Критерий Лиллиефорса || - || <code>htestlillie.test</code>. ==== Пакет || - || <code>momentslillieTest</code> ====|| - || -|-В данный пакет входят следующие функции| style="text-align: * left" | Критерий <math>\chi^2</math> Пирсона || - || <code>agostinopearson.test</code> || - критерий Д'Агостино* || <code>bonett.testpchiTest</code> || - || - критерий Бонетта – Сайера* |-| style="text-align: left" | Критерий Шапиро - Франчия || - || <code>jarquesf.test</code> || - критерий Жарка|| <code>sfTest</code> || - || -Бера|-Данные функции также возвращают результат в виде S3| style="text-класса align: left" | Критерий Д'Агостино || - || - || <code>htestagostino.test</code>. ==== Пакет || <code>fBasicsdagoTest</code> ====|| - || -|-В данном пакете не предлагается никакой оригинальной реализации критериев | style="text-align: left" | Критерий Бонетта – Сайера || - || - код в основном заимствован из пакетов || <code>statsbonett.test</code>, || - || - || -|-| style="text-align: left" | Критерий Жарка - Бера || - || - || <code>nortestjarque.test</code>, || <code>momentsjarqueberaTest</code>. Данный пакет предлагает альтернативный вывод результатов в виде объекта S4-класса || <code>fHTESTjarque.bera.test</code>, в том время как все предыдущие функции использовали S3-класс || <code>htestrjb.test</code>.|}
Функция Пакет {{r-package|fBasics}} содержит также функцию <code>normalTest()</code> , которая является «обёрктой» для ряда функций из того же пакета - <code>fBasics</code>. Задать необходимый Необходимый критерий можно задать с помощью аргумента <code>method</code>. Доступны следующие критерии:
Помимо функции Пакет <code>normalTestlawstat</code> содержит также функцию <code>sj.test()</code> данный пакет включает в себя следующие функции:, которая является реализацией рабастного критерия нормальности, созданного на основа критерия Шапиро - Уилка.
* <code>shapiroTest</code> - критерий Шапиро - Уилка* <code>ksnormTest</code> - критерий Колмогорова - Смирнова<ref>Данная функция вызывает <code>ks.test(x, "pnorm")</code> для трёх альтернативных гипотез - двусторонней и двух односторонних.</ref>* <code>jarqueberaTest</code> - критерий Жарка-Бера* <code>dagoTest</code> - критерий Д'Агостино* <code>adTest</code> - критерий Андерсона - Дарлинга* <code>cvmTest</code> - критерий Крамера - фон Мизеса* <code>lillieTest</code> - критерий Лиллиефорса* <code>pchiTest</code> - критерий Пирсона* <code>sfTest</code> - критерий Шапиро - Франчия Данные функции также возвращают результат в виде S4-класса - <code>fHTEST</code>. ==== Пакет <code>TeachingDemos</code> ==== Данные пакет содержит только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - <code>SnowsPenultimateNormalityTest()</code>, реализующую неописанный в литературе критерий. Данная функция возвращают результат в виде S3-класса - <code>htest</code>. ==== Пакет <code>tseries</code> ==== Данный пакет содержит возвращает только одну функциюуровень статистической значимости, имеющую отношение к критериям проверки принадлежности свидетельствующий об отклонения распределения нормальному закону - <code>jarqueот нормального закона.bera.test</code>, которая является реализацией критерия Жарка-Бера. Данная функция возвращают результат в виде S3-класса - <code>htest</code>. ==== Пакет <code>lawstat</code> ==== В данный пакет входят следующие функции: * <code>rjb.test</code> - критерий Жарка-Бера* <code>sj.test</code> - SJ-критерий ==== Сравнительная таблица реализации критериев в пакетах ==== {| class="wide wikitable sortable" style="text-align: center"! Критерии! {{r-package|stats|core=true}}! {{r-package|nortest}}! {{r-package|moments}}! {{r-package|fBasics}}! {{r-package|tseries}}! {{r-package|lawstat}}|-| style="text-align: left" | Критерий Шапиро - Уилка || + || - || - || + || - || -|-| style="text-align: left" | Критерий Колмогорова - Смирнова || + || - || - || + || - || -|-| style="text-align: left" | Критерий Андерсона - Дарлинга || - || + || - || + || - || -|-| style="text-align: left" | Критерий Крамера - фон Мизеса || - || + || - || + || - || -|-| style="text-align: left" | Критерий Лиллиефорса || - || + || - || + || - || -|-| style="text-align: left" | Критерий χ2 Пирсона || - || + || - || + || - || -|-| style="text-align: left" | Критерий Шапиро - Франчия || - || + || - || + || - || -|-| style="text-align: left" | Критерий Д'Агостино || - || - || + || + || - || -|-| style="text-align: left" | Критерий Бонетта – Сайера || - || - || + || - || - || -|-| style="text-align: left" | Критерий Жарка - Бера || - || - || + || + || + || +|} === Таблица вызова функций в пакетах === {| class="wide wikitable sortable" style="text-align: center"! Критерии! {{r-package|stats|core=true}}! {{r-package|nortest}}! {{r-package|moments}}! {{r-package|fBasics}}! {{r-package|tseries}}! {{r-package|lawstat}}|-| style="text-align: left" | Критерий Шапиро - Уилка || <code>shapiro.test</code> || - || - || <code>shapiroTest</code> || - || -|-| style="text-align: left" | Критерий Колмогорова - Смирнова || <code>ks.test</code> || - || - || <code>ksnormTest</code> || - || -|-| style="text-align: left" | Критерий Андерсона - Дарлинга || - || <code>ad.test</code> || - || <code>adTest</code> || - || -|-| style="text-align: left" | Критерий Крамера - фон Мизеса || - || <code>cvm.test</code> || - || <code>cvmTest</code> || - || -|-| style="text-align: left" | Критерий Лиллиефорса || - || <code>lillie.test</code> || - || <code>lillieTest</code> || - || -|-| style="text-align: left" | Критерий χ2 Пирсона || - || <code>pearson.test</code> || - || <code>pchiTest</code> || - || -|-| style="text-align: left" | Критерий Шапиро - Франчия || - || <code>sf.test</code> || - || <code>sfTest</code> || - || -|-| style="text-align: left" | Критерий Д'Агостино || - || - || <code>agostino.test</code> || <code>dagoTest</code> || - || -|-| style="text-align: left" | Критерий Бонетта – Сайера || - || - || <code>bonett.test</code> || - || - || -|-| style="text-align: left" | Критерий Жарка - Бера || - || - || <code>jarque.test</code> || <code>jarqueberaTest</code> || <code>jarque.bera.test</code> || <code>rjb.test</code>|}
Альтернативный вариант реализован в функции ===== Пакет <code>qqPlot()stats</code> из пакета <code>car</code>:=====
==== Пакет <code>e1071</code> ==== Построение P-P plot можно осуществить с помощью функции <code>probplot</code> из пакета <code>e1071</code>Теперь наложим на наш график кривую плотностей вероятности для нормального распределения:
Ещё один интересный Более простой способ графического анализа сравнение графиков плотностей вероятности представлен функцией в функции <code>histDist</code> из пакета <code>gamlss</code>:
→Сравнительная таблица реализации критериев в пакетах
== Одномерное нормальное распределение ==
Для демонстрации работы функций, реализующих различные критерии проверки принадлежности распределения нормальному закону сгенерируем вектор случайных чисел, имеющих стандартное нормальное распределение:
{{r-code|code=
<nowiki>> x <- rnorm(n = 1001000)
</nowiki>
}}
=== Статистические критерии ===
* <code>sw</code> - критерий Шапиро - Уилка
}}
==== Маленькие хитрости ====
=== Графические методы ===
Многие исследователи также используют графические методы для определения степени отклонения распределения от нормального закона. В R реализована возможность построения Q-Q и P-P графиков, гистограмм и кривых распределения плотности вероятностейплотностей вероятности.
==== Гистограмма ====
{{r-code|code=
<nowiki>> hist(x)</nowiki>}}
[[Файл:Graphics-hist.svg|400px|центр]]
На гистограмме изображены абсолютные частоты. Также можно построить гистограмму, отражающую плотности вероятностей:
<nowiki>> hist(x, freq = FALSE)</nowiki>}}
[[Файл:Graphics-hist-probs.svg|400px|центр]]
==== График плотностей вероятности ====
==== Q-Q график ==== ==== Пакет <code>stats</code> ==== Построение Q–Q plot с помощью пакета <code>stats</code> выглядит следующим образом:=
{{r-code|code=
<nowiki>> qqnormplot(density(x)> qqline(x)</nowiki>}}
[[Файл:Stats-qqnormdensity.svg|400px|центр]]
===== Пакет <code>QTLRelcar</code> ==== Построение Q–Q plot с помощью пакета <code>QTLRel</code> выглядит следующим образом:=
{{r-code|code=
<nowiki>> qqPlotdensityPlot(x, x = "norm")</nowiki>}}
[[Файл:QtlrelCar-qqplotdensityPlot.svg|400px|центр]]
==== Пакет <code>car</code> Гистограммы с наложением графика плотностей вероятнотси ====
{{r-code|code=
<nowiki>> qqPlothist(x, distribution freq = "norm"FALSE)> lines(density(x))</nowiki>}}
[[Файл:CarStats-qqplothist-density.svg|400px|центр]]
{{r-code|code=
<nowiki>> probplotxfit <- seq(min(x), qdist max(x), length = qnorm100)# Координаты по оси X> yfit <- dnorm(xfit, mean = mean(x), sd = sd(x)) # Вычисление координат по оси Y> hist(x, freq = FALSE)> lines(density(x), col = "red") # Накладываем кривую плотностей вероятности> lines(xfit, yfit, col = "blue") # Накладываем «нормальную» кривую</nowiki>}}
[[Файл:E1071Stats-probplotdensity-compare.svg|400px|центр]]
===== Пакет <code>gamlss</code> =====
{{r-code|code=
С помощью аргумента <code>family</code> можно задать семейство распределений для подгонки и сравнения<ref>Более подробную информацию о доступных семействах распределений можно получить с помощью команды <code>help("gamlss.family")</code>.</ref>.
==== Q-Q график ====
Q-Q график (Q - квантиль) — это график, на котором квантили из двух распределений расположены относительно друг друга. Чем ближе точки на графике к диагональной прямой, тем ближе распределение исследуемой переменной к нормальному закону.
Построение квантильных графиков в R реализовано в нескольких пакетах.
===== Пакет <code>stats</code> =====
Построение Q–Q plot с помощью пакета <code>stats</code> выглядит следующим образом:
{{r-code|code=
<nowiki>> qqnorm(x)
> qqline(x)</nowiki>
}}
[[Файл:Stats-qqnorm.svg|400px|центр]]
===== Пакет <code>QTLRel</code> =====
Построение Q–Q plot с помощью пакета <code>QTLRel</code> выглядит следующим образом:
{{r-code|code=
<nowiki>> qqPlot(x, x = "norm")</nowiki>
}}
[[Файл:Qtlrel-qqplot.svg|400px|центр]]
===== Пакет <code>car</code> =====
Альтернативный вариант реализован в функции <code>qqPlot()</code> из пакета <code>car</code>:
{{r-code|code=
<nowiki>> qqPlot(x, distribution = "norm")</nowiki>
}}
[[Файл:Car-qqPlot.svg|400px|центр]]
===== Пакет <code>e1071</code> =====
Построение Q-Q plot можно осуществить с помощью функции <code>probplot</code> из пакета <code>e1071</code>:
{{r-code|code=
<nowiki>> probplot(x, qdist = qnorm)</nowiki>
}}
[[Файл:E1071-probplot.svg|400px|центр]]
== Многомерное нормальное распределение ==
> mx <- rmvnorm(100, mean = means, sigma = sigmas)
}}
Пакет {{r-package|mvnormtest}} реализует модификацию критерия Шапиро - Уилка для многомерных данных - функция <code>mshapiro.test()</code><ref>В качестве аргумента необходимо передать транспонированную матрицу: <code>mshapiro.test(t(mx))</code>.</ref>.
Пакет {{r-package|ICS}} предлагает реализацию критериев эксцесса и асимметрии для многомерных данных: <code>mvnorm.kur.test()</code>, <code>mvnorm.skew.test()</code>.
Пакет {{r-package|energy}} реализует E-статистики для сравнения распределений. Критерия для проверки гипотезы о соответствия распределения многомерной переменной многомерному нормальному распределению предлагается функция <code>mvnorm.etest()</code><ref>Для вычисления уровня значимости критерия используется метод бутстрепа (bootstrap). Число итераций для бутстрепа можно задать с помощью аргумента <code>R</code>.</ref>.
== Ссылки ==
* Juergen Gross and bug fixes by Uwe Ligges (2012). nortest: Tests for Normality. R package version 1.0-2.
*: http://CRAN.R-project.org/package=nortest
* Lukasz Komsta and Frederick Novomestky (2012). moments: Moments, cumulants, skewness, kurtosis and related tests. R package version 0.13.
*: http://CRAN.R-project.org/package=moments
* Diethelm Wuertz, Rmetrics core team members, uses code builtin from the following R contributed packages: gmm from Pierre Chauss, gld from Robert King, gss from Chong Gu, nortest from Juergen Gross, HyperbolicDist from David Scott, sandwich from Thomas Lumley, Achim Zeileis, fortran/C code from Kersti Aas and akima from Albrecht Gebhardt (2013). fBasics: Rmetrics - Markets and Basic Statistics. R package version 3010.86.
*: http://CRAN.R-project.org/package=fBasics
* Adrian Trapletti and Kurt Hornik (2013). tseries: Time Series Analysis and Computational Finance. R package version 0.10-32.
*: http://CRAN.R-project.org/package=tseries
* Joseph L. Gastwirth; Yulia R. Gel <ygl@math.uwaterloo.ca>; W. L. Wallace Hui <wlwhui@uwaterloo.ca>; Vyacheslav Lyubchich <vlyubchich@uwaterloo.ca>; Weiwen Miao <miao@macalester.edu>; Kimihiro Noguchi <kinoguchi@ucdavis.edu> (2013). lawstat: An R package for biostatistics, public policy, and law. R package version 2.4.1.
*: http://CRAN.R-project.org/package=lawstat
* John Fox and Sanford Weisberg (2013). car: Companion to Applied Regression. R package version 2.0-19/r346.
*: http://R-Forge.R-project.org/projects/car/
* Mikis Stasinopoulos, Bob Rigby with contributions from Calliope Akantziliotou and Vlasios Voudouris (2014). gamlss: Generalised Additive Models for Location Scale and Shape. R package version 4.2-7.
*: http://CRAN.R-project.org/package=gamlss
* Riyan Cheng (2013). QTLRel: Tools for mapping of quantitative traits of genetically related individuals and calculating identity coefficients from a pedigree. R package version 0.2-14.
*: http://CRAN.R-project.org/package=QTLRel
* David Meyer, Evgenia Dimitriadou, Kurt Hornik, Andreas Weingessel and Friedrich Leisch (2014). e1071: Misc Functions of the Department of Statistics (e1071), TU Wien. R package version 1.6-2.
*: http://CRAN.R-project.org/package=e1071
== Примечания ==