Когда мы хотим проверить, нормально ли распределена одна переменная, мы можем создать график 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