Як використовувати функцію джиттера в r для хмар точок
Цей підручник пояснює, коли і як використовувати функцію тремтіння в R для хмар точок.
Коли використовувати джиттер
Діаграма розсіювання чудово підходить для візуалізації зв’язку між двома безперервними змінними. Наприклад, наступна діаграма розсіювання допомагає нам візуалізувати співвідношення між зростом і вагою для 100 спортсменів:
#define vectors of heights and weights weights <- runif(100, 160, 240) heights <- (weights/3) + rnorm(100) #create data frame of heights and weights data <- as.data.frame(cbind(weights, heights)) #view first six rows of data frame head(data) # weights heights #1 170.8859 57.20745 #2 183.2481 62.01162 #3 235.6884 77.93126 #4 231.9864 77.12520 #5 200.8562 67.93486 #6 169.6987 57.54977 #create scatterplot of heights vs weights plot(data$weights, data$heights, pch = 16, col = 'steelblue')
Однак іноді нам може знадобитися візуалізувати зв’язок між безперервною змінною та іншою майже безперервною змінною.
Наприклад, припустімо, що ми маємо такий набір даних, який показує кількість ігор, які баскетболіст розпочав протягом перших 10 ігор сезону, а також його середнє число очок за гру:
#create data frame games_started <- sample(1:10, 300, TRUE) points_per_game <- 3*games_started + rnorm(300) data <- as.data.frame(cbind(games_started, points_per_game)) #view first six rows of data frame head(data) # games_started points_per_game #1 9 25.831554 #2 9 26.673983 #3 10 29.850948 #4 4 12.024353 #5 4 11.534192 #6 1 4.383127
Очки за гру є безперервною змінною, але розпочаті ігри є дискретною змінною. Якщо ми спробуємо створити діаграму розсіювання цих двох змінних, це буде виглядати ось як:
#create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')
З цієї діаграми розсіювання ми можемо сказати, що розпочаті ігри та середні бали за гру мають позитивний зв’язок, але трохи важко побачити окремі моменти на графіку, оскільки багато з них збігаються.
Використовуючи функцію Jitter , ми можемо додати деякий «шум» до наборів змінних осі X , щоб чіткіше бачити окремі точки на графіку:
#add jitter to games started plot( jitter (data$games_started), data$points_per_game, pch = 16, col = 'steelblue')
За бажанням ми можемо додати числовий аргумент до тремтіння, щоб додати ще більше шуму в дані:
#add jitter to games started plot( jitter (data$games_started, 2 ), data$points_per_game, pch = 16, col = 'steelblue')
Однак ми повинні бути обережними, щоб не додати занадто багато тремтіння, оскільки це може надто сильно спотворити вихідні дані:
plot( jitter (data$games_started, 20 ), data$points_per_game, pch = 16, col = 'steelblue')
Тремтіння забезпечує кращий перегляд даних
Нестабільність особливо корисна, коли один із рівнів дискретної змінної має набагато більше значень, ніж інші рівні.
Наприклад, у наведеному нижче наборі даних є триста баскетболістів, які почали 2 з перших 5 ігор сезону, але лише близько 100 гравців почали 1, 3, 4 або 5 ігор:
games_started <- sample(1:5, 100, TRUE) points_per_game <- 3*games_started + rnorm(100) data <- as.data.frame(cbind(games_started, points_per_game)) games_twos <- rep(2, 200) points_twos <- 3*games_twos + rnorm(200) data_twos <- as.data.frame(cbind(games_twos, points_twos)) names(data_twos) <- c('games_started', 'points_per_game') all_data <- rbind(data, data_twos)
Коли ми візуалізуємо кількість зіграних ігор відносно середньої кількості очок за гру, ми можемо сказати, що є більше гравців, які зіграли 2 ігри, але важко точно сказати , скільки інших зіграли 2 ігри:
plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')
Однак, коли ми додаємо тремтіння до змінної початку гри , ми можемо побачити, скільки додаткових гравців почали 2 ігри:
plot( jitter (all_data$games_started), all_data$points_per_game,
pch=16, col='steelblue')
Трохи збільшивши кількість тремтіння, ця різниця виявляється ще більше:
plot( jitter (all_data$games_started, 1.5 ), all_data$points_per_game, pch=16, col='steelblue')
Джиттер лише для візуалізації
Як згадувалося раніше, тремтіння додає до даних випадковий шум, що може бути корисним, коли ми хочемо візуалізувати дані у хмарі точок. Використовуючи функцію тремтіння, ми можемо отримати краще уявлення про справжній основний зв’язок між двома змінними в наборі даних.
Однак у разі використання такого статистичного аналізу, як регресія, немає сенсу додавати випадковий шум до змінних у наборі даних, оскільки це вплине на результати аналізу.
Отже, джиттер призначений лише для візуалізації даних, а не для аналізу даних.