कई वितरण के लिए बॉक्सप्लॉट?


9

मुझे R में एक सिंगल ग्राफ में 20 डिस्ट्रीब्यूशन ड्रा करने की आवश्यकता है, और यह मुझे नियमित रूप से बॉक्सप्लेट (20 बॉक्स) के साथ बॉक्सवेक्स = 0.3 के साथ अच्छा (बरबाद) नहीं लगता है। क्या आप मुझे सुझाव दे सकते हैं कि मैं 20 डिस्ट्रीब्यूशन के लिए R में एक तरह का बॉक्सप्लेट कैसे बना सकता हूं, जिसमें माध्यिका के लिए डॉट्स और बॉक्स के बजाय सिर्फ एक लाइन है, जैसे नीचे। कृपया मुझे यह भी सुझाव दें कि क्या कोई आर तरीका है जो अच्छा बॉक्सप्लाट्स का उत्पादन करता है, खासकर यदि आप एक ग्राफ में कई वितरण दिखाना चाहते हैं।

 -----0----

जवाबों:


12

(यह वास्तव में एक टिप्पणी है, लेकिन क्योंकि इसे एक चित्रण की आवश्यकता है, इसे उत्तर के रूप में पोस्ट किया जाना है।)

एड टफ्टे ने अपने विजुअल डिस्प्ले ऑफ क्वांटिटेटिव इन्फॉर्मेशन (पृष्ठ 125, फर्स्ट एडिशन 1983) में बॉक्सप्लेट को फिर से परिभाषित किया ताकि "अनौपचारिक, खोजपूर्ण डेटा विश्लेषण को सक्षम किया जा सके, जहां ड्राइंग लाइन के अलावा अन्य मामलों के लिए शोधकर्ता का समय समर्पित होना चाहिए।" मेरे पास (पूरी तरह से प्राकृतिक तरीके से) अपने आरेख को बढ़ाने के लिए, इस तरह से 70 समानांतर बॉक्सप्लॉट दिखाते हुए ड्राइंग आउटलेयर को समायोजित करने के लिए है:

टफ्टे बॉक्सप्लॉट्स

मैं इसे और बेहतर बनाने के कई तरीकों के बारे में सोच सकता हूं, लेकिन इसकी विशेषता यह है कि एक जटिल डेटासेट की खोज में गर्मी क्या पैदा कर सकती है: हम विज़ुअलाइज़ेशन बनाने की सामग्री हैं जो हमें डेटा देखने देती हैं; अच्छी प्रस्तुति बाद में आ सकती है।

इसकी तुलना उसी डेटा के पारंपरिक प्रतिपादन से करें:

पारंपरिक बॉक्सप्लॉट

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


क्या आप R में शीर्ष ग्राफ खींचने में मदद कर सकते हैं?
समरसता

1
@kkp यहाँ एक मोटा ड्राफ्ट है । अच्छी प्रतिक्रिया (+1)।
CHL

और यहां आर में आगे की संभावनाएं हैं - एसओ पर पाया गया: आर में टफ्टे बॉक्सप्लाट्स के लिए उपलब्ध कार्य?
chl

@chl लिंक के लिए धन्यवाद। रिकॉर्ड के लिए, इसमें इन पुन: डिज़ाइन किए गए बॉक्सप्लाट्स के उत्पादन के लिए काम करने वाला आर कोड शामिल है। दिलचस्प बात यह है कि प्रश्न सिर्फ तीन दिनों के इस एक के बाद पोस्ट किया गया था ...
whuber

1
@ दिलचस्प दिलचस्प टिप्पणियों। इस तरह के बॉक्सप्लॉट्स का एक संभावित उपयोग टुकी के "भटकते हुए योजनाबद्ध भूखंड" का एक प्रकार है जिसमें एक्स (समन्वय) के साथ एक (बड़े) स्कैल्पप्लॉट को कटा हुआ है और प्रत्येक बिन में एक बॉक्सप्लॉट द्वारा वाई-मूल्यों को संक्षेप में प्रस्तुत किया गया है। इस तरह की प्रक्रिया आसानी से 70 या अधिक साइड-बाय-साइड बॉक्सप्लॉट उत्पन्न कर सकती है। अनुप्रयोगों में लगभग कोई भी बहुआयामी डेटा शामिल है: उदाहरण के लिए, x-निर्देशांक एक मिट्टी की गहराई का प्रतिनिधित्व कर सकता है जो प्रत्येक सेंटीमीटर के नमूने के रूप में होता है और y-निर्देशांक कई स्थानों पर प्राप्त डेटा का प्रतिनिधित्व कर सकता है।
whuber

10

Beanplots

संभवतः सबसे अच्छे भूखंड, ये मूल रूप से वायलिन भूखंडों का एक छोटे से गुणक कार्यान्वयन हैं। वायलिन प्लॉट्स का बॉक्सप्लाट्स पर भारी लाभ है: वे वितरण के लिए बहुत अधिक विवरण दिखा सकते हैं जो सामान्य नहीं हैं (उदाहरण के लिए वे द्वि-मोडल वितरणों को वास्तव में अच्छी तरह से दिखा सकते हैं)। क्योंकि वे आम तौर पर गॉसियन स्मूथिंग (या समान) पर आधारित होते हैं, वे उच्च अंत बिंदुओं (जैसे घातीय वितरण) के साथ वितरण के लिए वास्तव में अच्छी तरह से काम नहीं करेंगे, लेकिन फिर, न तो बॉक्सप्लॉट करेंगे।

बेप्लॉट्स को आर में बहुत आसानी से प्राप्त किया जा सकता है - बस बीनप्लॉट पैकेज स्थापित करें :

library(beanplot)

# Sampling code from Greg Snow's answer:
my.dat <- lapply( 1:20, function(x) rnorm(x+10, sample( 10, 1), sample(3,1) ) )

beanplot(my.dat)

Beanplot!

beanplotकार्य है विकल्पों में से टन है, तो आप अपने दिल की इच्छा करने के लिए अनुकूलित कर सकते हैं। Ggplot2 में बीनप्लॉट्स करने का एक तरीका भी है (नवीनतम संस्करण की आवश्यकता है):

library(ggplot2)

my.dat <- lapply(1:20, function(x) rnorm(x+10, sample(10, 1), sample(3,1)))
my.df <- melt(my.dat)
ggplot(my.df, aes(x=L1, y=value, group=L1)) + geom_violin(trim=FALSE) +
  geom_segment(aes(x=L1-0.1, xend=L1+0.1, y=value, yend=value), colour='white')

GGplot2 सेमप्लॉट


3

यह करने के लिए कुछ तरीकों के लिए कुछ नमूना आर कोड है, आप शायद इस पर विस्तार करना चाहते हैं (लेबल आदि शामिल करें) और शायद इसे एक फ़ंक्शन में बदल दें:

my.dat <- lapply( 1:20, function(x) rnorm(x+10, sample( 10, 1), sample(3,1) ) )

tmp <- boxplot(my.dat, plot=FALSE, range=0)

# box and median only
plot( range(tmp$stats), c(1,length(my.dat)), xlab='', ylab='', type='n' )
segments( tmp$stats[2,], seq_along(my.dat), tmp$stats[4,] )
points( tmp$stats[3,], seq_along(my.dat) )

# wiskers and implied box
plot( range(tmp$stats), c(1,length(my.dat)), xlab='', ylab='', type='n' )
segments( tmp$stats[1,], seq_along(my.dat), tmp$stats[2,] )
segments( tmp$stats[4,], seq_along(my.dat), tmp$stats[5,] )
points( tmp$stats[3,], seq_along(my.dat) )

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.