Как выполнять многомерные тесты на нормальность в R


Когда мы хотим проверить, нормально ли распределена одна переменная, мы можем создать график QQ , чтобы визуализировать распределение, или мы можем выполнить формальный статистический тест, такой как тест Андерсона-Дарлинга или тест Харка-Бера .

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

В этом руководстве объясняется, как выполнить следующие многомерные тесты на нормальность для заданного набора данных в R:

  • Тест Мардии
  • Энергетический тест
  • Многомерные тесты эксцесса и перекоса

Связанный: если мы хотим идентифицировать выбросы в многомерной настройке, мы можем использовать расстояние Махаланобиса .

Пример: тест Мардии в R

Тест Мардиа определяет, соответствует ли группа переменных многомерному нормальному распределению. Нулевая и альтернативная гипотезы для теста следующие:

H 0 (нуль): переменные подчиняются многомерному нормальному распределению.

H a (альтернативный вариант): переменные не подчиняются многомерному нормальному распределению.

В следующем коде показано, как выполнить этот тест в R с помощью пакета QuantPsyc :

library (QuantPsyc)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
 x2 = rnorm(50),
 x3 = rnorm(50))

#perform Multivariate normality test
mult.norm(data)$ mult.test

 Beta-hat kappa p-val
Skewness 1.630474 13.5872843 0.1926626
Kurtosis 13.895364 -0.7130395 0.4758213

Функция mult.norm() проверяет многомерную нормальность как асимметрии, так и эксцесса набора данных. Поскольку оба p-значения не меньше 0,05, мы не можем отвергнуть нулевую гипотезу теста. У нас нет доказательств того, что три переменные в нашем наборе данных не подчиняются многомерному распределению.

Пример: Энергетический тест в R

Энергетический тест — это еще один статистический тест, который определяет, следует ли группа переменных многомерному нормальному распределению. Нулевая и альтернативная гипотезы для теста следующие:

H 0 (нуль): переменные подчиняются многомерному нормальному распределению.

H a (альтернативный вариант): переменные не подчиняются многомерному нормальному распределению.

В следующем коде показано, как выполнить этот тест в R с использованием пакета Energy :

library (energy)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
 x2 = rnorm(50),
 x3 = rnorm(50))

#perform Multivariate normality test
mvnorm.etest(data, R= 100 )

 Energy test of multivariate normality: estimated parameters

data: x, sample size 50, dimension 3, replicates 100
E-statistic = 0.90923, p-value = 0.31

Р-значение теста составляет 0,31.Поскольку это не меньше 0,05, мы не можем отвергнуть нулевую гипотезу теста. У нас нет доказательств того, что три переменные в нашем наборе данных не подчиняются многомерному распределению.

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

Дополнительные ресурсы

Как создать и интерпретировать график QQ в R
Как провести тест Андерсона-Дарлинга в R
Как провести тест Харке-Бера в R
Как выполнить тест Шапиро-Уилка в R