Nokta bulutları için r'de jitter işlevi nasıl kullanılır?
Bu eğitimde, nokta bulutları için R’de titreşim fonksiyonunun ne zaman ve nasıl kullanılacağı açıklanmaktadır.
Jitter ne zaman kullanılır?
Dağılım grafikleri, iki sürekli değişken arasındaki ilişkiyi görselleştirmek için mükemmeldir. Örneğin, aşağıdaki dağılım grafiği 100 sporcunun boy ve kilo arasındaki ilişkiyi görselleştirmemize yardımcı olur:
#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')
Ancak bazen sürekli bir değişken ile neredeyse sürekli olan başka bir değişken arasındaki ilişkiyi görselleştirmek isteyebiliriz.
Örneğin, bir basketbolcunun sezonun ilk 10 maçında başladığı maç sayısını ve maç başına aldığı puanı gösteren aşağıdaki veri setine sahip olduğumuzu varsayalım:
#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
Oyun başına puan sürekli bir değişkendir, ancak başlatılan oyunlar ayrık bir değişkendir. Bu iki değişkenin dağılım grafiğini oluşturmaya çalışırsak şöyle görünecektir:
#create scatterplot of games started vs average points per game
plot(data$games_started, data$points_per_game, pch = 16, col = 'steelblue')
Bu dağılım grafiğinden, başlayan oyunlar ile oyun başına ortalama puanların pozitif bir ilişkiye sahip olduğunu söyleyebiliriz, ancak çoğu örtüştüğü için olay örgüsünde bireysel noktaları görmek biraz zor.
Jitter işlevini kullanarak, atılan X ekseni değişken kümelerine bir miktar “gürültü” ekleyebiliriz, böylece çizimdeki bireysel noktaları daha net görebiliriz:
#add jitter to games started plot( jitter (data$games_started), data$points_per_game, pch = 16, col = 'steelblue')
Verilere daha da fazla gürültü eklemek için isteğe bağlı olarak titreşime sayısal bir argüman ekleyebiliriz:
#add jitter to games started plot( jitter (data$games_started, 2 ), data$points_per_game, pch = 16, col = 'steelblue')
Ancak çok fazla titreşim eklememeye dikkat etmeliyiz çünkü bu, orijinal verileri çok fazla bozabilir:
plot( jitter (data$games_started, 20 ), data$points_per_game, pch = 16, col = 'steelblue')
Titreşim, verilerin daha iyi görülmesini sağlar
Kararsızlık, özellikle ayrık değişkenin düzeylerinden birinin diğer düzeylerden çok daha fazla değere sahip olması durumunda kullanışlıdır.
Örneğin, aşağıdaki veri setinde sezonun ilk 5 maçından 2’sine başlayan üç yüz basketbol oyuncusu var, ancak yalnızca 1, 3, 4 veya 5 maça başlayan yaklaşık 100 oyuncu var:
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)
Oynanan oyun sayısını maç başına ortalama puana göre görselleştirdiğimizde, 2 oyun oynayan oyuncuların sayısının daha fazla olduğunu söyleyebiliriz ancak kaç kişinin 2 oyun oynadığını tam olarak söylemek zor:
plot(all_data$games_started, all_data$points_per_game, pch = 16, col = 'steelblue')
Ancak oyun başlangıcı değişkenine titreşimi eklediğimizde, 2 oyuna kaç oyuncunun daha başladığını görebiliriz:
plot( jitter (all_data$games_started), all_data$points_per_game,
pch=16, col='steelblue')
Titreşim miktarını biraz artırmak bu farkı daha da ortaya çıkarır:
plot( jitter (all_data$games_started, 1.5 ), all_data$points_per_game, pch=16, col='steelblue')
Yalnızca görselleştirmeler için titreşim
Daha önce de belirtildiği gibi titreşim, verilere rastgele gürültü ekler; bu, verileri bir nokta bulutunda görselleştirmek istediğimizde faydalı olabilir. Titreşim fonksiyonunu kullanarak, bir veri setindeki iki değişken arasındaki gerçek temel ilişkinin daha iyi bir resmini elde edebiliriz.
Ancak regresyon gibi istatistiksel analizler kullanıldığında, bir veri setindeki değişkenlere rastgele gürültü eklemek, analizin sonuçlarını etkileyeceğinden mantıklı değildir.
Dolayısıyla titreşimin veri analizi için değil, yalnızca veri görselleştirmesi için kullanılması amaçlanmıştır.