Як створити та інтерпретувати графік qq у r
Діаграма QQ , скорочення від «квантиль-квантиль», — це тип графіка, який ми можемо використовувати, щоб визначити, чи потенційно набір даних походить із теоретичного розподілу.
Багато статистичних тестів припускають, що набір даних відповідає нормальному розподілу, і графік QQ часто використовується, щоб оцінити, чи виконується це припущення.
Хоча графік QQ не є офіційним статистичним тестом, він надає простий спосіб візуально перевірити, чи відповідає набір даних нормальному розподілу, і, якщо ні, як порушується це припущення та які точки даних потенційно є джерелом цього порушення.
Ми можемо створити графік QQ, побудувавши два набори квантилів один проти одного. Якщо обидва набори квантилів походять з одного розподілу, то точки на графіку повинні приблизно утворювати пряму діагональну лінію.
Квантилі представляють точки в наборі даних, нижче яких лежить певна частина даних. Наприклад, квантиль 0,9 представляє точку, нижче якої опускається 90% даних. Квантиль 0,5 означає точку, нижче якої розташовано 50% даних тощо.
Графіки QQ ідентифікують квантилі ваших вибірок даних і порівнюють їх із квантилями теоретичного розподілу. У більшості випадків використовується нормальний розподіл, але графік QQ фактично можна створити для будь-якого теоретичного розподілу.
Якщо точки даних лежать уздовж прямої діагональної лінії на графіку QQ, то набір даних, ймовірно, відповідає нормальному розподілу.
Як створити діаграму QQ у R
Ми можемо легко створити діаграму QQ, щоб перевірити, чи відповідає набір даних нормальному розподілу за допомогою вбудованої функції qqnorm() .
Наприклад, наступний код генерує вектор із 100 випадкових значень, який відповідає нормальному розподілу, і створює графік QQ для цього набору даних, щоб перевірити, чи він справді відповідає нормальному розподілу:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data)
Щоб було ще легше побачити, чи дані слідують прямій лінії, ми можемо використати функцію qqline() :
#create QQ plot qqnorm(data) #add straight diagonal line to plot qqline(data)
Ми бачимо, що точки даних поблизу хвостів не йдуть точно по прямій лінії, але здебільшого ці вибіркові дані виглядають нормально розподіленими (як і мають бути, оскільки ми попросили R згенерувати дані на основі нормального розподілу ). ).
Натомість розглянемо наступний код, який генерує вектор із 100 випадкових значень, який відповідає гамма-розподілу, і створює графік QQ для цих даних, щоб перевірити, чи відповідає він нормальному розподілу:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a gamma distribution data <- rgamma(100, 1) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
Ми бачимо чітке відхилення від прямої лінії на цьому графіку QQ, що вказує на те, що цей набір даних, ймовірно, не відповідає нормальному розподілу.
Розглянемо іншу частину коду, яка генерує вектор із 100 випадкових значень, який відповідає розподілу хі-квадрат із 5 ступенями свободи, і створює графік QQ для цих даних, щоб перевірити, чи відповідає він нормальному розподілу:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a Chi-Square distribution data <- rchisq(100, 5) #create QQ plot to compare this dataset to a theoretical normal distribution qqnorm(data) qqline(data)
Знову ми бачимо, що цей набір даних не відповідає нормальному розподілу, особливо поблизу хвостів.
Змініть естетику графіка QQ у R
Ми можемо змінити деяку естетику діаграми QQ у R, зокрема назву, позначки осей, кольори точок даних, колір лінії та ширину лінії.
Наступний код змінює заголовки, мітки осей і колір точок графіка:
#make this example reproducible set.seed(11) #generate vector of 100 values that follows a normal distribution data <- rnorm(100) #create QQ plot qqnorm(data, main = 'QQ Plot for Normality', xlab = 'Theoretical Dist', ylab = 'Sample dist', col = 'steelblue')
Потім наступний код додає до графіка пряму діагональну лінію червоного кольору, ширину лінії 2 (lwd = 2, за замовчуванням 1) і пунктирну лінію (lty = 2, за замовчуванням 1):
qqline(data, col = 'red', lwd = 2, lty = 2)
Технічні примітки
Пам’ятайте, що графік QQ – це просто спосіб візуально перевірити, чи відповідає набір даних теоретичному розподілу. Щоб формально перевірити, чи відповідає набір даних певному розподілу, можна виконати такі тести (якщо ви порівнюєте свій набір даних із звичайним розподілом):
Тест Андерсона-Дарлінга
Тест Шапіро-Вілка
Тест Колмогорова-Смирнова