Як створити та інтерпретувати графік qq у r


Діаграма QQ , скорочення від «квантиль-квантиль», — це тип графіка, який ми можемо використовувати, щоб визначити, чи потенційно набір даних походить із теоретичного розподілу.

Багато статистичних тестів припускають, що набір даних відповідає нормальному розподілу, і графік 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 – це просто спосіб візуально перевірити, чи відповідає набір даних теоретичному розподілу. Щоб формально перевірити, чи відповідає набір даних певному розподілу, можна виконати такі тести (якщо ви порівнюєте свій набір даних із звичайним розподілом):

Тест Андерсона-Дарлінга
Тест Шапіро-Вілка
Тест Колмогорова-Смирнова

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *