R:Статистическая проверка принадлежности нормальному распределения — различия между версиями

Материал Psylab.info - энциклопедии психодиагностики
Перейти к: навигация, поиск
м (Графический метод)
м
Строка 4: Строка 4:
  
 
На практике мы встречаемся с двумя вариантами задач по проверке принадлежности распределения нормальному закону: для одномерного и многомерного распределения.
 
На практике мы встречаемся с двумя вариантами задач по проверке принадлежности распределения нормальному закону: для одномерного и многомерного распределения.
 +
 +
{{mbox
 +
|type      = notice
 +
|text      = '''Перед использованием функций из пакетов, их необходимо предварительно установить и загрузить:'''
 +
|text-small = <syntaxhighlight lang="rsplus">
 +
> install.packages(pkgs = "pkgname")
 +
> library(package = "pkgname")
 +
</syntaxhighlight>
 +
}}
  
 
== Одномерное нормальное распределение ==
 
== Одномерное нормальное распределение ==
Строка 23: Строка 32:
  
 
=== Пакет <code>nortest</code> ===
 
=== Пакет <code>nortest</code> ===
 
Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:
 
 
<syntaxhighlight lang="rsplus">
 
> install.packages(pkgs = "nortest")
 
> library(package = "nortest")
 
</syntaxhighlight>
 
  
 
В данный пакет входят следующие функции:
 
В данный пакет входят следующие функции:
Строка 42: Строка 44:
  
 
=== Пакет <code>moments</code> ===
 
=== Пакет <code>moments</code> ===
 
Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:
 
 
<syntaxhighlight lang="rsplus">
 
> install.packages(pkgs = "moments")
 
> library(package = "moments")
 
</syntaxhighlight>
 
  
 
В данный пакет входят следующие функции:
 
В данный пакет входят следующие функции:
Строка 61: Строка 56:
  
 
В данном пакете не предлагается никакой оригинальной реализации критериев - код в основном заимствован из пакетов <code>stats</code>, <code>nortest</code>, <code>moments</code>. Данный пакет предлагает альтернативный вывод результатов в виде объекта S4-класса <code>fHTEST</code>, в том время как все предыдущие функции использовали S3-класс <code>htest</code>.
 
В данном пакете не предлагается никакой оригинальной реализации критериев - код в основном заимствован из пакетов <code>stats</code>, <code>nortest</code>, <code>moments</code>. Данный пакет предлагает альтернативный вывод результатов в виде объекта S4-класса <code>fHTEST</code>, в том время как все предыдущие функции использовали S3-класс <code>htest</code>.
 
Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:
 
 
<syntaxhighlight lang="rsplus">
 
> install.packages(pkgs = "fBasics")
 
> library(package = "fBasics")
 
</syntaxhighlight>
 
  
 
Функция <code>normalTest()</code> является «обёрктой» для ряда функций из того же пакета - <code>fBasics</code>. Задать необходимый критерий можно задать с помощью аргумента <code>method</code>. Доступны следующие критерии:
 
Функция <code>normalTest()</code> является «обёрктой» для ряда функций из того же пакета - <code>fBasics</code>. Задать необходимый критерий можно задать с помощью аргумента <code>method</code>. Доступны следующие критерии:
Строка 110: Строка 98:
  
 
=== Пакет <code>TeachingDemos</code> ===
 
=== Пакет <code>TeachingDemos</code> ===
 
Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:
 
 
<syntaxhighlight lang="rsplus">
 
> install.packages(pkgs = "TeachingDemos")
 
> library(package = "TeachingDemos")
 
</syntaxhighlight>
 
  
 
Данные пакет содержит только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - <code>SnowsPenultimateNormalityTest()</code>. Данная функция возвращают результат в виде S3-класса - <code>htest</code>.
 
Данные пакет содержит только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - <code>SnowsPenultimateNormalityTest()</code>. Данная функция возвращают результат в виде S3-класса - <code>htest</code>.
Строка 132: Строка 113:
  
 
=== Пакет <code>lawstat</code> ===
 
=== Пакет <code>lawstat</code> ===
 
Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:
 
 
<syntaxhighlight lang="rsplus">
 
> install.packages(pkgs = "lawstat")
 
> library(package = "lawstat")
 
</syntaxhighlight>
 
  
 
В данный пакет входят следующие функции:
 
В данный пакет входят следующие функции:
Строка 145: Строка 119:
 
* <code>sj.test</code> - SJ-критерий
 
* <code>sj.test</code> - SJ-критерий
  
=== Графический метод ===
+
=== Графические методы ===
 +
 
 +
==== Пакет <code>stats</code> ====
  
 
Построение Q–Q plot с помощью пакета <code>stats</code> выглядит следующим образом:
 
Построение Q–Q plot с помощью пакета <code>stats</code> выглядит следующим образом:
Строка 154: Строка 130:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Файл:Stats-qqnorm.svg|400px|центр]]
 
[[Файл:Stats-qqnorm.svg|400px|центр]]
 +
 +
==== Пакет <code>car</code> ====
  
 
Альтернативный вариант реализован в функции <code>qqPlot()</code> из пакета <code>car</code>:
 
Альтернативный вариант реализован в функции <code>qqPlot()</code> из пакета <code>car</code>:
Строка 161: Строка 139:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Файл:Car-qqplot.svg|400px|центр]]
 
[[Файл:Car-qqplot.svg|400px|центр]]
 +
 +
==== Пакет <code>e1071</code> ====
  
 
Построение P-P plot можно осуществить с помощью функции <code>probplot</code> из пакета <code>e1071</code>:
 
Построение P-P plot можно осуществить с помощью функции <code>probplot</code> из пакета <code>e1071</code>:
Строка 168: Строка 148:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Файл:E1071-probplot.svg|400px|центр]]
 
[[Файл:E1071-probplot.svg|400px|центр]]
 +
 +
==== Пакет <code>gamlss</code> ====
 +
 +
Ещё один интересный способ графического анализа представлен функцией <code>histDist</code> из пакета <code>gamlss</code>:
 +
 +
<syntaxhighlight lang="rsplus">
 +
> histDist(x, family = NO, density = TRUE)
 +
</syntaxhighlight>
 +
[[Файл:gamlss-histdist.svg|400px|центр]]
  
 
== Многомерное нормальное распределение ==
 
== Многомерное нормальное распределение ==

Версия 20:51, 14 февраля 2014

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

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

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

В качестве [math]H_0[/math] для всех нижеприведённых критериев является предположение, что «случайная величина [math]X[/math] распределена нормально».

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

<syntaxhighlight lang="rsplus"> > x <- rnorm(n = 100) </syntaxhighlight>

Пакет stats

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

  • shapiro.test - критерий Шапиро - Уилка
  • ks.test - критерий Колмогорова - Смирнова[1]

Пакет 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

Перед использованием функций из данного пакета, его необходимо предварительно установить и загрузить:

<syntaxhighlight lang="rsplus"> > install.packages(pkgs = "tseries") > library(package = "tseries") </syntaxhighlight>

только одну функцию, имеющую отношение к критериям проверки принадлежности распределения нормальному закону - jarque.bera.test, которая является реализацией критерия Жарка-Бера. Данная функция возвращают результат в виде S3-класса - htest.

Пакет lawstat

В данный пакет входят следующие функции:

  • rjb.test - критерий Жарка-Бера
  • sj.test - SJ-критерий

Графические методы

Пакет stats

Построение Q–Q plot с помощью пакета stats выглядит следующим образом:

<syntaxhighlight lang="rsplus"> > qqnorm(x) > qqline(x) </syntaxhighlight>

Stats-qqnorm.svg

Пакет 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>

E1071-probplot.svg

Пакет gamlss

Ещё один интересный способ графического анализа представлен функцией histDist из пакета gamlss:

<syntaxhighlight lang="rsplus"> > histDist(x, family = NO, density = TRUE) </syntaxhighlight>

Gamlss-histdist.svg

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

Примечания

  1. Для оценки нормальности вызов выглядит следующим образом:ks.test(x, y = "pnorm")
  2. Данная функция вызывает ks.test(x, "pnorm") для трёх альтернативных гипотез - двусторонней и двух односторонних.