R:Статистическая проверка принадлежности нормальному распределения — различия между версиями
м (→Пакет tseries) |
м (→Графические методы) |
||
Строка 117: | Строка 117: | ||
=== Графические методы === | === Графические методы === | ||
+ | |||
+ | Многие исследователи также используют графические методы для определения степени отклонения распределения от нормального закона. В R реализована возможность построения Q-Q и P-P графиков, гистограмм и кривых распределения плотности вероятностей. | ||
==== Пакет <code>stats</code> ==== | ==== Пакет <code>stats</code> ==== |
Версия 12:50, 15 февраля 2014
|
Материал «R:Статистическая проверка принадлежности нормальному распределения», созданный автором Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Предположение о принадлежности случайной величины нормальному закону распределения лежит в основе многих статистических методов и критериев. В ряде случаев соблюдение данного требования является критичным для применения того или иного метода.
На практике мы встречаемся с двумя вариантами задач по проверке принадлежности распределения нормальному закону: для одномерного и многомерного распределения.
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: <syntaxhighlight lang="rsplus">
> install.packages(pkgs = "pkgname") > library(package = "pkgname") </syntaxhighlight> |
Содержание
Одномерное нормальное распределение
В качестве [math]H_0[/math] для всех нижеприведённых критериев является предположение, что «случайная величина [math]X[/math] распределена нормально».
Для демонстрации работы функций, реализующий различные критерий проверки принадлежности распределения нормальному закону сгенерируем вектор случайных чисел, имеющих стандартное нормальное распределение:
<syntaxhighlight lang="rsplus"> > x <- rnorm(n = 100) </syntaxhighlight>
Статистические критерии
Пакет stats
В данном пакете реализованы две функции, которые позволяют осуществить проверку принадлежности распределения нормальному закону.
-
shapiro.test
- критерий Шапиро - Уилка -
ks.test
- критерий Колмогорова - Смирнова[1]
Данные функции возвращают результат в виде S3-класса - htest
.
Пакет nortest
В данный пакет входят следующие функции:
-
ad.test
- критерий Андерсона - Дарлинга -
cvm.test
- критерий Крамера - фон Мизеса -
lillie.test
- критерий Лиллиефорса -
pearson.test
- критерий [math]\chi^2[/math] Пирсона -
sf.test
- критерий Шапиро - Франчия
Данные функции возвращают результат в виде S3-класса - htest
.
Пакет moments
В данный пакет входят следующие функции:
-
agostino.test
- критерий Д'Агостино -
bonett.test
- критерий Бонетта – Сайера -
jarque.test
- критерий Жарка-Бера
Данные функции также возвращают результат в виде S3-класса - htest
.
Пакет fBasics
В данном пакете не предлагается никакой оригинальной реализации критериев - код в основном заимствован из пакетов stats
, nortest
, moments
. Данный пакет предлагает альтернативный вывод результатов в виде объекта S4-класса fHTEST
, в том время как все предыдущие функции использовали S3-класс htest
.
Функция normalTest()
является «обёрктой» для ряда функций из того же пакета - fBasics
. Задать необходимый критерий можно задать с помощью аргумента method
. Доступны следующие критерии:
-
sw
- критерий Шапиро - Уилка -
jb
- критерий Жарка-Бера -
ks
- критерий Колмогорова - Смирнова -
da
- критерий Д'Агостино -
ad
- критерий Андерсона - Дарлинга.
Пример вызова данной функции:
<syntaxhighlight lang="rsplus"> > normalTest(x, method = "sw")
Title:
Shapiro - Wilk Normality Test
Test Results:
STATISTIC: W: 0.9831 P VALUE: 0.2301
Description:
Fri Feb 14 19:59:59 2014 by user:
</syntaxhighlight>
Помимо функции normalTest()
данный пакет включает в себя следующие функции:
-
shapiroTest
- критерий Шапиро - Уилка -
ksnormTest
- критерий Колмогорова - Смирнова[2] -
jarqueberaTest
- критерий Жарка-Бера -
dagoTest
- критерий Д'Агостино -
adTest
- критерий Андерсона - Дарлинга -
cvmTest
- критерий Крамера - фон Мизеса -
lillieTest
- критерий Лиллиефорса -
pchiTest
- критерий Пирсона -
sfTest
- критерий Шапиро - Франчия
Данные функции также возвращают результат в виде S4-класса - fHTEST
.
Пакет TeachingDemos
Данные пакет содержит только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - SnowsPenultimateNormalityTest()
. Данная функция возвращают результат в виде S3-класса - htest
.
Пакет tseries
Данный пакет содержит только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - jarque.bera.test
, которая является реализацией критерия Жарка-Бера. Данная функция возвращают результат в виде S3-класса - htest
.
Пакет lawstat
В данный пакет входят следующие функции:
-
rjb.test
- критерий Жарка-Бера -
sj.test
- SJ-критерий
Графические методы
Многие исследователи также используют графические методы для определения степени отклонения распределения от нормального закона. В R реализована возможность построения Q-Q и P-P графиков, гистограмм и кривых распределения плотности вероятностей.
Пакет stats
Построение Q–Q plot с помощью пакета stats
выглядит следующим образом:
<syntaxhighlight lang="rsplus"> > qqnorm(x) > qqline(x) </syntaxhighlight>
Пакет car
Альтернативный вариант реализован в функции qqPlot()
из пакета car
:
<syntaxhighlight lang="rsplus"> > qqPlot(x, distribution = "norm") </syntaxhighlight>
Пакет e1071
Построение P-P plot можно осуществить с помощью функции probplot
из пакета e1071
:
<syntaxhighlight lang="rsplus"> > probplot(x, qdist = qnorm) </syntaxhighlight>
Пакет gamlss
Ещё один интересный способ графического анализа представлен функцией histDist
из пакета gamlss
:
<syntaxhighlight lang="rsplus"> > histDist(x, family = "NO", density = TRUE)
Family: c("NO", "Normal") Fitting method: "nlminb"
Call: gamlssML(y = y, family = "NO", formula = x)
Mu Coefficients: [1] -0.2273 Sigma Coefficients: [1] 0.09813
Degrees of Freedom for the fit: 2 Residual Deg. of Freedom 98
Global Deviance: 303.414
AIC: 307.414 SBC: 312.624
</syntaxhighlight>
С помощью аргумента family
можно задать семейство распределений для подгонки и сравнения[3].
Многомерное нормальное распределение
Примечания
- ↑ Для оценки нормальности вызов выглядит следующим образом:
ks.test(x, y = "pnorm")
- ↑ Данная функция вызывает
ks.test(x, "pnorm")
для трёх альтернативных гипотез - двусторонней и двух односторонних. - ↑ Более подробную информацию о доступных семействах распределений можно получить с помощью команды
help("gamlss.family")
.