बिंदु बादलों के लिए आर में जिटर फ़ंक्शन का उपयोग कैसे करें


यह ट्यूटोरियल बताता है कि पॉइंट क्लाउड के लिए आर में जिटर फ़ंक्शन का उपयोग कब और कैसे करना है।

जिटर का उपयोग कब करें

दो निरंतर चरों के बीच संबंध को देखने के लिए स्कैटर प्लॉट उत्कृष्ट हैं। उदाहरण के लिए, निम्नलिखित स्कैटरप्लॉट हमें 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')

इस स्कैटरप्लॉट से हम कह सकते हैं कि गेम शुरू हो गए हैं और प्रति गेम औसत अंकों का सकारात्मक संबंध है, लेकिन प्लॉट में व्यक्तिगत बिंदुओं को देखना थोड़ा मुश्किल है क्योंकि उनमें से कई ओवरलैप होते हैं।

जिटर फ़ंक्शन का उपयोग करके, हम फेंके गए एक्स-अक्ष चर सेट में कुछ “शोर” जोड़ सकते हैं ताकि हम प्लॉट पर अलग-अलग बिंदुओं को अधिक स्पष्ट रूप से देख सकें:

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

जिटरिंग डेटा का बेहतर दृश्य प्रदान करता है

अस्थिरता विशेष रूप से तब उपयोगी होती है जब असतत चर के स्तरों में से एक में अन्य स्तरों की तुलना में कई अधिक मान होते हैं।

उदाहरण के लिए, निम्नलिखित डेटासेट में, तीन सौ बास्केटबॉल खिलाड़ी हैं जिन्होंने सीज़न के पहले 5 गेम में से 2 शुरू किए, लेकिन केवल 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')

केवल विज़ुअलाइज़ेशन के लिए घबराएं

जैसा कि पहले उल्लेख किया गया है, घबराना डेटा में यादृच्छिक शोर जोड़ता है, जो तब फायदेमंद हो सकता है जब हम एक बिंदु क्लाउड में डेटा की कल्पना करना चाहते हैं। जिटर फ़ंक्शन का उपयोग करके, हम डेटा सेट में दो चर के बीच वास्तविक अंतर्निहित संबंध की बेहतर तस्वीर प्राप्त कर सकते हैं।

हालाँकि, प्रतिगमन जैसे सांख्यिकीय विश्लेषण का उपयोग करते समय, डेटा सेट में चर में यादृच्छिक शोर जोड़ने का कोई मतलब नहीं है, क्योंकि यह विश्लेषण के परिणामों को प्रभावित करेगा।

इसलिए जिटर का उपयोग केवल डेटा विज़ुअलाइज़ेशन के लिए किया जाना है, डेटा विश्लेषण के लिए नहीं।

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *