Cara menggunakan fungsi jitter di r untuk point cloud


Tutorial ini menjelaskan kapan dan bagaimana menggunakan fungsi jitter di R untuk point cloud.

Kapan menggunakan jitter

Plot sebar sangat baik untuk memvisualisasikan hubungan antara dua variabel kontinu. Misalnya, diagram sebar berikut membantu kita memvisualisasikan hubungan antara tinggi dan berat badan untuk 100 atlet:

 #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')

Namun, terkadang kita ingin memvisualisasikan hubungan antara variabel kontinu dan variabel lain yang hampir kontinu.

Misalnya, kita memiliki kumpulan data berikut yang menunjukkan jumlah permainan yang dimulai seorang pemain bola basket dalam 10 pertandingan pertama suatu musim beserta rata-rata poinnya per permainan:

 #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

Poin per permainan merupakan variabel kontinu, namun permainan yang dimulai merupakan variabel diskrit. Jika kita mencoba membuat scatterplot dari kedua variabel tersebut, maka akan terlihat seperti ini:

 #create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')

Dari diagram sebar ini kita dapat mengatakan bahwa permainan dimulai dan rata-rata poin per permainan memiliki hubungan yang positif, namun agak sulit untuk melihat poin individu dalam plot karena banyak di antaranya yang tumpang tindih.

Dengan menggunakan fungsi Jitter , kita dapat menambahkan beberapa “noise” ke kumpulan variabel sumbu X yang dilempar sehingga kita dapat melihat masing-masing titik pada plot dengan lebih jelas:

 #add jitter to games started
plot( jitter (data$games_started), data$points_per_game, pch = 16, col = 'steelblue')

Secara opsional, kita dapat menambahkan argumen numerik ke jitter untuk menambahkan lebih banyak noise pada data:

 #add jitter to games started
plot( jitter (data$games_started, 2 ), data$points_per_game, pch = 16, col = 'steelblue')

Namun, kita harus berhati-hati untuk tidak menambahkan terlalu banyak jitter, karena hal ini dapat terlalu merusak data asli:

 plot( jitter (data$games_started, 20 ), data$points_per_game, pch = 16, col = 'steelblue')

Jittering memberikan tampilan data yang lebih baik

Ketidakstabilan sangat berguna ketika salah satu level variabel diskrit memiliki nilai lebih banyak daripada level lainnya.

Misalnya, dalam kumpulan data berikut, terdapat tiga ratus pemain bola basket yang memulai 2 dari 5 pertandingan pertama musim ini, namun hanya sekitar 100 pemain yang memulai 1, 3, 4, atau 5 pertandingan:

 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)

Ketika kita memvisualisasikan jumlah permainan yang dimainkan relatif terhadap rata-rata poin per permainan, kita dapat mengatakan bahwa ada lebih banyak pemain yang telah memainkan 2 permainan, namun sulit untuk mengatakan secara pasti berapa banyak pemain lain yang telah memainkan 2 permainan:

 plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')

Namun, setelah kita menambahkan jitter ke variabel awal permainan , kita dapat melihat berapa banyak pemain tambahan yang memulai 2 permainan:

 plot( jitter (all_data$games_started), all_data$points_per_game,
     pch=16, col='steelblue')

Sedikit meningkatkan jumlah jitter akan menunjukkan perbedaan ini lebih jauh lagi:

 plot( jitter (all_data$games_started, 1.5 ), all_data$points_per_game,
     pch=16, col='steelblue')

Jitter untuk visualisasi saja

Seperti disebutkan sebelumnya, jittering menambahkan gangguan acak pada data, yang dapat bermanfaat saat kita ingin memvisualisasikan data dalam point cloud. Dengan menggunakan fungsi jitter, kita bisa mendapatkan gambaran yang lebih baik tentang hubungan mendasar yang sebenarnya antara dua variabel dalam kumpulan data.

Namun, ketika menggunakan analisis statistik seperti regresi, tidak masuk akal untuk menambahkan gangguan acak ke variabel dalam kumpulan data, karena hal ini akan berdampak pada hasil analisis.

Jadi jitter hanya dimaksudkan untuk digunakan untuk visualisasi data, bukan untuk analisis data.

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *