वैकल्पिक ग्राफिक्स "बार संभाल" भूखंडों के लिए


15

मेरे शोध के क्षेत्र में, डेटा को प्रदर्शित करने का एक लोकप्रिय तरीका "हैंडल-बार" के साथ एक बार चार्ट के संयोजन का उपयोग करना है। उदाहरण के लिए,

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

लेखक के आधार पर मानक त्रुटियों और मानक विचलन के बीच वैकल्पिक रूप से "हैंडल-बार"। आमतौर पर, प्रत्येक "बार" के लिए नमूना आकार काफी छोटा होता है - लगभग छह।

ये भूखंड जैविक विज्ञान में विशेष रूप से लोकप्रिय प्रतीत होते हैं - उदाहरण के लिए बीएमसी जीवविज्ञान, वॉल्यूम 3 के पहले कुछ पेपर देखें ।

तो आप इस डेटा को कैसे प्रस्तुत करेंगे?

मैं इन भूखंडों को नापसंद क्यों करता हूं

व्यक्तिगत रूप से मुझे ये प्लॉट पसंद नहीं हैं।

  1. जब नमूना आकार छोटा होता है, तो केवल व्यक्तिगत डेटा बिंदुओं को प्रदर्शित क्यों नहीं किया जाता है।
  2. क्या यह sd या se है जिसे प्रदर्शित किया जा रहा है? कोई भी सहमत नहीं है जिसका उपयोग करना है।
  3. बार का उपयोग क्यों करें। डेटा (आमतौर पर) 0 से नहीं जाता है, लेकिन ग्राफ में पहला पास यह बताता है कि यह करता है।
  4. रेखांकन डेटा की श्रेणी या नमूना आकार के बारे में एक विचार नहीं देता है।

आर स्क्रिप्ट

यह आर कोड है जिसका उपयोग मैंने प्लॉट जनरेट करने के लिए किया था। इस तरह से आप (यदि आप चाहें) एक ही डेटा का उपयोग कर सकते हैं।

                                        #Generate the data
set.seed(1)
names = c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")
prevs = c(38, 37, 31, 31, 29, 26, 40, 32, 39)

n=6; se = numeric(length(prevs))
for(i in 1:length(prevs))
  se[i] = sd(rnorm(n, prevs, 15))/n

                                        #Basic plot
par(fin=c(6,6), pin=c(6,6), mai=c(0.8,1.0,0.0,0.125), cex.axis=0.8)
barplot(prevs,space=c(0,0,0,3,0,0, 3,0,0), names.arg=NULL, horiz=FALSE,
        axes=FALSE, ylab="Percent", col=c(2,3,4), width=5, ylim=range(0,50))

                                        #Add in the CIs
xx = c(2.5, 7.5, 12.5, 32.5, 37.5, 42.5,  62.5, 67.5, 72.5)
for (i in 1:length(prevs)) {
  lines(rep(xx[i], 2), c(prevs[i], prevs[i]+se[i]))
  lines(c(xx[i]+1/2, xx[i]-1/2), rep(prevs[i]+se[i], 2))
}

                                        #Add the axis
axis(2, tick=TRUE, xaxp=c(0, 50, 5))
axis(1, at=xx+0.1, labels=names, font=1,
     tck=0, tcl=0, las=1, padj=0, col=0, cex=0.1)

6
अपने क्षेत्र में मदद करने के लिए एक ही समय पर एसडी सर्वसम्मति पर आने के लिए एक बड़ा सवाल होगा। उनका मतलब पूरी तरह से अलग चीजों से है।
जॉन

मैं सहमत हूँ - एसई को आमतौर पर चुना जाता है क्योंकि यह एक छोटा क्षेत्र देता है!
csgillespie

शायद कुछ अधिक जानकारीपूर्ण शीर्षक?

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

1
कृपया यदि आप फिर से छवि जोड़ सकते हैं। इस बार छवि अपलोडर का उपयोग करें ताकि यह एक मृत लिंक न बने।
एंडोलिथ 22

जवाबों:


16

आप सभी के जवाब के लिए धन्यवाद। पूर्णता के लिए मुझे लगा कि मुझे वही करना चाहिए जो मैं आमतौर पर करता हूं। मैं दिए गए सुझावों का एक संयोजन करने के लिए करते हैं: डॉट्स, बॉक्सप्लाट्स (जब एन बड़ी है), और से (या एसडी) पर्वतमाला।

( मॉडरेटर द्वारा हटा दिया गया क्योंकि छवि की मेजबानी करने वाला साइट अब सही ढंग से काम नहीं करता है। )

डॉट प्लॉट से, यह स्पष्ट है कि डेटा "हैंडल बार" भूखंडों के सुझाव से कहीं अधिक फैला हुआ है। वास्तव में, A3 में एक नकारात्मक मूल्य है!


मैंने इस उत्तर को CW बना दिया है, इसलिए मैं प्रतिनिधि नहीं प्राप्त कर रहा हूं


3
यह एक अच्छा जवाब है। इसके अलावा, मैं सुझाव देता हूं कि क्षैतिज रूप से बिंदुओं को घबराना चाहिए, इसलिए वे ओवरलैप नहीं करते हैं, खासकर यदि आपके पास प्रति समूह इससे अधिक अंक हैं। Ggplot2 में, geom_jitter () ऐसा करेगा।
हरलन

@ हरलन: मैं सहमत हूं। हालांकि अगर मेरे पास कई और बिंदु होते तो मैं शायद एक बॉक्सप्लॉट का उपयोग करता।
csgillespie

1
मुझे छोटे डेटा सेट के लिए स्कैल्पलॉट्स भी पसंद हैं (नायब, मैं 'डॉटप्लेट' शब्द का इस्तेमाल थोड़ा अलग प्लॉट के लिए करता हूं)। हालांकि, इसके लायक क्या है, इसके लिए ऊपर दिए गए बारप्लॉट क्लीनर और इस से पढ़ने में आसान है। मुझे यकीन नहीं है कि यह बेहतर बनाता है, लेकिन यह इंगित करने लायक है।
गुंग - को पुनः स्थापित मोनिका

@ हैरलान: वैकल्पिक रूप से, डॉट्स को पारदर्शी बनाएं ताकि कई डॉट्स ढेर हो जाएं और एक गहरे डॉट का उत्पादन करें?
एंडोलिथ

क्या आपके पास इस मृत लिंक को बदलने के लिए मूल छवि है?
एंडोलिथ

10

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

आल्पा सम्मिश्रण करते हुए, कि एक सबसे समझदार सुझाव के रूप में हमला करता है (और पूरी बात सबसे अच्छा, और महत्वपूर्ण, सोने की डली)।


1
क्या यह वीडियो के रूप में उपलब्ध है? सुनने मे उत्तम है।
हेनरिक

1
मुझे लगता है कि शब्द "आखिरकार होगा" - कीनोट्स रिकॉर्ड किए गए।
डिर्क एडल्डबुलेटेल

1
यह मुझे लगता है कि ggplot
माइक देवर

1
jitterसादे आर। में भी है

2
सिर्फ प्रोटोकॉल के लिए, फ्रैंक की बात (वीडियो में) अब ऑनलाइन है: r-bloggers.com/RUG/2010/08/user-2010-conference-videos
ताल

7

मनोवैज्ञानिक दृष्टिकोण से, मैं डेटा की साजिश रचने की वकालत करता हूं, साथ ही डेटा के बारे में आपकी अनिश्चितता भी। इस प्रकार, जैसे कि आप दिखाते हैं, मैं कभी भी शून्य के रास्ते में बार-बार विस्तार करने से परेशान नहीं होता, जो केवल डेटा की सीमा में अंतर को समझने के लिए आंख की क्षमता को कम करने का काम करता है।

इसके अतिरिक्त, मैं स्पष्ट रूप से एंटी-बारग्राफ हूं; बार ग्राफ एक ही सौंदर्य विशेषता (x- अक्ष स्थान) के लिए दो चर मैप करते हैं, जिससे भ्रम हो सकता है। एक बेहतर तरीका यह है कि एक चर को एक्स-अक्ष पर मैप करके और दूसरे चर को अन्य सौंदर्य विशेषता (जैसे। बिंदु आकार या रंग या दोनों) के माध्यम से अनावश्यक सौंदर्य मानचित्रण से बचें।

अंत में, ऊपर अपने प्लॉट में, आप केवल मूल्य के ऊपर त्रुटि सलाखों को शामिल करते हैं, जो मूल्य के ऊपर और नीचे की सलाखों के सापेक्ष अनिश्चितता के अंतराल की तुलना करने की क्षमता में बाधा उत्पन्न करता है।

यहां बताया गया है कि मैं कैसे डेटा को प्लॉट करूंगा (ggplot2 पैकेज के माध्यम से)। ध्यान दें कि मैं एक ही श्रृंखला में बिंदुओं को जोड़ने वाली रेखाओं को जोड़ता हूं; कुछ का तर्क है कि यह केवल तभी उचित है जब श्रृंखला जिसके पार जुड़ी हुई हैं, संख्यात्मक हैं (जैसा कि इस मामले में प्रतीत होता है), हालांकि जब तक एक्स-अक्ष चर के स्तरों के बीच कोई उचित क्रमिक संबंध है, मुझे लगता है एक्स-अक्ष पर आंख के सहयोगी बिंदुओं की मदद करने के लिए कनेक्टिंग लाइनें उपयोगी हैं। यह बातचीत का पता लगाने के लिए विशेष रूप से उपयोगी हो सकता है, जो वास्तव में लाइनों के साथ बाहर खड़ा है।

library(ggplot2)
a = data.frame(names,prevs,se)
a$let = substr(a$names,1,1)
a$num = substr(a$names,2,2)
ggplot(data = a)+
layer(
    geom = 'point'
    , mapping = aes(
        x = num
        , y = prevs
        , colour = let
        , shape = let
    )
)+
layer(
    geom = 'line'
    , mapping = aes(
        x = num
        , y = prevs
        , colour = let
        , linetype = let
        , group = let
    )    
)+
layer(
    geom = 'errorbar'
    , mapping = aes(
        x = num
        , ymin = prevs-se
        , ymax = prevs+se
        , colour = let
    )
    , alpha = .5
    , width = .5
)

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


1
मुझे यह जोड़ना चाहिए कि मेरा "केवल डेटा और अनिश्चितता की साजिश" अनुशंसा योग्य होनी चाहिए: जब दर्शकों को डेटा प्रस्तुत किया जाए जिसमें चर / प्लॉट के साथ अनुभव / विशेषज्ञता हो, तो केवल डेटा और अनिश्चितता की साजिश करें। जब एक भोले दर्शकों के लिए डेटा पेश करते हैं और जब शून्य एक सार्थक डेटा बिंदु होता है, तो मैं पहले डेटा को शून्य तक बढ़ाता दिखाऊंगा ताकि दर्शकों को पैमाने पर उन्मुख किया जा सके, फिर बस डेटा और अनिश्चितता दिखाने के लिए ज़ूम इन करें।
माइक लॉरेंस

चूँकि आप R कोड लिखने की समस्या से जूझ रहे हैं, आप अंतिम कथानक की एक jpeg छवि शामिल कर सकते हैं। मुझे लगता है कि छवि को img84.imageshack.us पर अपलोड करना और इसे लिंक करना काफी आसान है। उत्तर के लिए ओह धन्यवाद :)
सीएसजी

@csgillespie: किया गया।
माइक लॉरेंस

मैंने पाया है कि geom_ribbon()त्रुटि को इंगित करने के साथ इस तरह एक भूखंड को पढ़ना आसान है । यदि आपको 1 और 2 के बीच के क्षेत्रों के लिए स्पष्ट अनुमान उत्पन्न करना पसंद नहीं है, तो कम से कम त्रुटि बार की चौड़ाई कम करें।
जोफर्वल्ड

@JoFrwld: मुझे भी रिबन पसंद हैं, हालांकि मैं उन मामलों के लिए उन्हें आरक्षित करना चाहता हूं जहां एक्स-अक्ष चर यह वास्तव में संख्यात्मक है; "जब तक x- अक्ष चर संख्यात्मक नहीं होता है" नियम का मेरा संस्करण "नियम है कि मैं ऊपर मेरे जवाब में उल्लंघन कर रहा हूँ: Op
माइक लॉरेंस

2

मुझे इस बात की उत्सुकता है कि आपको ये प्लॉट पसंद क्यों नहीं हैं। मुझे उन्हें हर समय इस्तेमाल करना है। स्पष्ट खिलने की इच्छा के बिना, वे आपको विभिन्न समूहों के साधनों की तुलना करने की अनुमति देते हैं और देखते हैं कि उनका 95% सीआई ओवरलैप करता है (अर्थात, वास्तविक का अर्थ अलग होने की संभावना है)।

मुझे लगता है कि विभिन्न उद्देश्यों के लिए सादगी और जानकारी का संतुलन प्राप्त करना महत्वपूर्ण है। लेकिन जब मैं इन भूखंडों का उपयोग करता हूं तो मैं कह रहा हूं- "ये दोनों समूह एक-दूसरे से कुछ महत्वपूर्ण तरीके से अलग हैं" [या नहीं]।

मेरे लिए बहुत अच्छा लगता है, लेकिन मुझे काउंटर-उदाहरण सुनने में दिलचस्पी होगी। मुझे लगता है कि कथानक के उपयोग में निहित यह है कि डेटा में एक बिज़ारे वितरण नहीं है जो कि अमान्य या गलत अर्थ प्रस्तुत करता है।


मैंने एक छोटा सा खंड जोड़ा है कि मैं इन भूखंडों को क्यों नापसंद करता हूं।
csgillespie

1
@ क्रिस ने अतिव्याप्त CIs pubs.amstat.org/doi/abs/10.1198/000313001317097960 की व्याख्या करने के बारे में इस बारे में जांच की। साथ ही मूल प्रश्न यह भी है कि एसई या
एसडीहैंगहैबली

या, इस साइट पर विश्लेषण के लिए, आँकड़े देखें ।stackexchange.com/questions/18215 । @ tosonb1 आपका लिंक समय समाप्त कर रहा है। क्या आप कागज के संदर्भ में आपूर्ति कर सकते हैं?
whuber

2

यदि डेटा की दरें हैं : यानी ट्रायल की संख्या से विभाजित सफलताओं की संख्या, तो एक बहुत ही सुंदर विधि एक फ़नल प्लॉट है। उदाहरण के लिए, http://qshc.bmj.com/content/11/4/390.2.full (यदि लिंक की सदस्यता की आवश्यकता है तो माफी देखें - मुझे बताएं और मुझे दूसरा मिल जाएगा)।

इसे अन्य प्रकार के डेटा के साथ अनुकूलित करना संभव हो सकता है, लेकिन मैंने कोई उदाहरण नहीं देखा है।

अपडेट करें:

यहां एक उदाहरण का लिंक दिया गया है, जिसके लिए सदस्यता की आवश्यकता नहीं है (और इसका एक अच्छा स्पष्टीकरण है कि उनका उपयोग कैसे किया जा सकता है): http://understandunearchty.org/fertility

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

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


डेटा आवश्यक दर नहीं है। यह कुछ भी हो सकता है।
csgillespie

सदस्यता लिंक, दुर्भाग्य से।
मैट पार्कर

... लेकिन यहां फ़नल प्लॉट पर विकिपीडिया लिंक है: en.wikipedia.org/wiki/Funnel_plot
मैट पार्कर

2

मैं यहां बॉक्सप्लॉट्स का उपयोग करूंगा; यदि वितरण अधिक दिलचस्प है , तो स्वच्छ, सार्थक, गैरपारंपरिक ... या vioplot


2
मुझे यकीन नहीं है कि इतने छोटे सैंपल साइज़ (n = 6) के साथ बॉक्सप्लेट्स या वायोप्लाट्स उपयुक्त होंगे
csgillespie

सही है, मैं मानता हूं कि मैंने प्रश्न को ध्यान से नहीं पढ़ा है, इसलिए यह सामान्य विचार था; फिर भी मुझे लगता है कि एक बॉक्सप्लॉट के लिए 6 अंक न्यूनतम लेकिन पर्याप्त हैं। मैंने कुछ प्रयोग किए हैं और वे सार्थक थे। दूसरी ओर, स्पष्ट रूप से बॉक्सप्लॉट टिप्पणियों की संख्या (जो कि यहां एक महत्वपूर्ण जानकारी है) को इंगित नहीं करता है, इसलिए मैं इसके और बिंदुओं के संयोजन का उपयोग करूंगा।

6 बिंदुओं के साथ - स्कैटर प्लॉट शायद सबसे अच्छा है (शायद इस मतलब के लिए लाल डॉट को जोड़ने के साथ)
ताल गैली

2
मैं आम तौर पर सुपरिंपोज्ड पॉइंट्स वाले बॉक्सप्लॉट्स का इस्तेमाल करता हूं, मुझे यह बहुत "विजुअल" लगता है। वायलिन भूखंड, इसके बजाय, मेरी राय में समझना थोड़ा कठिन है।
निको

1
@csgillespie: क्या संकेत देगा कि बार और मूंछ प्लॉट बेहतर हैं? वे मूल रूप से एक बॉक्सप्लॉट के रूप में एक ही जानकारी दिखा रहे हैं (जैसा कि आप बताते हैं, मूंछ विभिन्न चीजों का प्रतिनिधित्व कर सकते हैं), वे सिर्फ एक ही दिशा में त्रुटि देते हैं, जो काफी भ्रामक हो सकता है, यदि असहमति नहीं है ... मुक्केबाजी के लिए बहस नहीं । लेकिन बीनप्लॉट्स / वायलिनप्लॉट्स को अभी भी काम करना चाहिए, यहां तक ​​कि अपेक्षाकृत कम नमूना आकारों के लिए भी, क्योंकि यह सिर्फ एक गाऊसी घनत्व का अनुमान है, जैसा कि मैंने यहां बताया है
n

1

ऊपर से @ csgillespie का भयानक कोड सरल करना:

qplot(
    data=a,
    x=num,
    y=prevs,
    colour=let,
    shape=let,
    group=let,
    ymin=prevs-se,
    ymax=prevs+se,
    position=position_dodge(width=0.25),
    geom=c("point", "line", "errorbar")
    )

0

मैं त्रुटि के लिए geom_pointrange पसंद करता हूं और लगता है कि लाइनें मददगार होने के बजाय विचलित कर रही हैं। यहाँ वह संस्करण है जो मुझे @James या @csgillespie संस्करण की तुलना में बहुत अधिक साफ लगता है:

qplot(
 data=a,
 x=num,
 y=prevs,
 colour=let,
 ymin=prevs-se,
 ymax=prevs+se,
 position=position_dodge(width=0.25),
 geom=c("pointrange"), size=I(2)
 )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.