Як виконати багатофакторні тести нормальності в r
Якщо ми хочемо перевірити, чи є одна змінна нормально розподіленою чи ні, ми можемо створити графік QQ для візуалізації розподілу або виконати формальний статистичний тест, як-от тест Андерсона Дарлінга або тест Жарке-Бера .
Однак, коли ми хочемо перевірити, чи кілька змінних нормально розподілені як група, нам потрібно виконати багатовимірний тест на нормальність .
У цьому підручнику пояснюється, як виконати такі багатовимірні тести нормальності для певного набору даних у R:
- Тест Мардіа
- Енергетичний тест
- Багатофакторні тести ексцесу та асиметрії
Пов’язане: якщо ми хочемо визначити викиди в багатовимірному контексті, ми можемо використати відстань Махаланобіса .
Приклад: тест Мардіа в Р
Тест Mardia визначає, чи відповідає група змінних багатофакторному нормальному розподілу. Нульова та альтернативна гіпотези тесту такі:
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 за допомогою енергетичного пакета:
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
P-значення тесту становить 0,31 . Оскільки цей показник не менше 0,05, ми не можемо відхилити нульову гіпотезу тесту. У нас немає доказів того, що три змінні в нашому наборі даних не мають багатовимірного розподілу.
Примітка. Аргумент R=100 визначає 100 реплік із підсиленням, які слід використовувати під час виконання тесту. Для наборів даних із меншим розміром вибірки ви можете збільшити це число, щоб отримати більш надійну оцінку тестової статистики.
Додаткові ресурси
Як створити та інтерпретувати діаграму QQ у R
Як виконати тест Андерсона-Дарлінга в R
Як виконати тест Жарке-Бера в R
Як виконати тест Шапіро-Вілка в R