दो क्रमिक चर के बीच संबंध के लिए ग्राफ


46

दो क्रमिक चर के बीच संबंध को दर्शाने के लिए एक उपयुक्त ग्राफ क्या है?

कुछ विकल्प जो मैं सोच सकता हूं:

  1. एक दूसरे को छिपाने वाले बिंदुओं को रोकने के लिए जोड़ा गया यादृच्छिक घबराना के साथ स्कैटर प्लॉट। जाहिर तौर पर एक मानक ग्राफिक - मिनिटैब इसे "व्यक्तिगत मूल्यों की साजिश" कहता है। मेरी राय में यह भ्रामक हो सकता है क्योंकि यह नेत्रहीन रूप से क्रमिक स्तरों के बीच एक प्रकार के रैखिक प्रक्षेप को प्रोत्साहित करता है, जैसे कि डेटा अंतराल पैमाने से था।
  2. स्कैटर प्लॉट को अनुकूलित किया गया ताकि बिंदु का आकार (क्षेत्र) प्रत्येक नमूना इकाई के लिए एक बिंदु को खींचने के बजाय स्तरों के उस संयोजन की आवृत्ति का प्रतिनिधित्व करे। मैंने कभी-कभी व्यवहार में ऐसे भूखंड देखे हैं। वे पढ़ने में कठिन हो सकते हैं, लेकिन अंक एक नियमित रूप से फैलाने वाले जाली पर झूठ बोलते हैं जो कुछ हद तक घबराए हुए तितर बितर साजिश की आलोचना को खत्म करता है कि यह नेत्रहीन "डेटा को बाधित करता है"।
  3. विशेष रूप से यदि चर में से एक को आश्रित माना जाता है, तो स्वतंत्र चर के स्तरों द्वारा वर्गीकृत एक बॉक्स प्लॉट। आश्रित दिखने के लिए यदि आश्रित चर के स्तर की संख्या पर्याप्त रूप से अधिक नहीं है (बहुत "फ्लैट" लापता मूंछ या बहुत खराब ढहने वाली चतुर्थक के साथ जो कि मध्ययुगीन की दृश्य पहचान को असंभव बनाता है) नहीं है, लेकिन कम से कम मध्ययुगीन और चतुर्थक पर ध्यान आकर्षित करता है जो कि हैं एक प्रासंगिक चर के लिए प्रासंगिक वर्णनात्मक आँकड़े।
  4. आवृत्ति को इंगित करने के लिए हीट टेबल के साथ मूल्यों की तालिका या कोशिकाओं के रिक्त ग्रिड। दृष्टि भिन्न और वैचारिक रूप से फ़्रीक्वेंसी दिखाने वाले बिंदु क्षेत्र के साथ स्कैटर प्लॉट के समान है।

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

यदि कोई किसी प्लॉट के साथ चित्रण करना चाहता है, तो फर्जी नमूना डेटा के लिए आर कोड।

"आपके लिए व्यायाम कितना महत्वपूर्ण है?" 1 = सभी महत्वपूर्ण नहीं, 2 = कुछ महत्वहीन, 3 = न तो महत्वपूर्ण और न ही महत्वहीन, 4 = कुछ महत्वपूर्ण, 5 = बहुत महत्वपूर्ण।

"आप नियमित रूप से 10 मिनट या उससे अधिक समय तक कैसे दौड़ते हैं?" 1 = कभी नहीं, 2 = एक पखवाड़े से कम, 3 = एक बार हर एक या दो सप्ताह, प्रति सप्ताह 4 = दो या तीन बार, प्रति सप्ताह 5 = चार या अधिक बार।

यदि एक आश्रित चर के रूप में "अक्सर" और एक स्वतंत्र चर के रूप में "महत्व" का व्यवहार करना स्वाभाविक होगा, अगर एक भूखंड दोनों के बीच अंतर करता है।

importance <- rep(1:5, times = c(30, 42, 75, 93, 60))
often <- c(rep(1:5, times = c(15, 07, 04, 03, 01)), #n=30, importance 1
           rep(1:5, times = c(10, 14, 12, 03, 03)), #n=42, importance 2
           rep(1:5, times = c(12, 23, 20, 13, 07)), #n=75, importance 3
           rep(1:5, times = c(16, 14, 20, 30, 13)), #n=93, importance 4
           rep(1:5, times = c(12, 06, 11, 17, 14))) #n=60, importance 5
running.df <- data.frame(importance, often)
cor.test(often, importance, method = "kendall") #positive concordance
plot(running.df) #currently useless

निरंतर चर के लिए एक संबंधित प्रश्न मुझे उपयोगी लगा, शायद एक उपयोगी प्रारंभिक बिंदु: दो संख्यात्मक चर के बीच संबंध का अध्ययन करते समय स्क्रैपप्लेट के विकल्प क्या हैं?


1
एक स्पाइनप्लॉट के बारे में क्या?
दिमित्री वी। मास्टरोव

कई समूहों में अविभाज्य क्रमिक डेटा प्रदर्शित करने के लिए एक संबंधित प्रश्न भी प्रासंगिक हो सकता है: ऑर्डिनल डेटा - मीन्स, मेडियन और मीन रैंक्स प्रदर्शित करना
सिल्वरफ़िश

जवाबों:


15

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

कुछ कार्यान्वयन इंटरैक्टिव ग्राफिक्स निर्धारित करते हैं, ताकि उपयोगकर्ता प्रत्येक टाइल को इसके बारे में अधिक जानने के लिए पूछताछ कर सके।

एक विकल्प जो बहुत अच्छी तरह से काम कर सकता है वह दो-तरफ़ा बार चार्ट (कई अन्य नाम मौजूद हैं) है।

उदाहरण के लिए देखें tabplotभीतर http://www.surveydesign.com.au/tipsusergraphs.html

इन आंकड़ों के लिए, एक संभावित भूखंड ( tabplotस्टैटा में उपयोग करके निर्मित , लेकिन किसी भी सभ्य सॉफ्टवेयर में आसान होना चाहिए)

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

प्रारूप का अर्थ है कि व्यक्तिगत बार को पंक्ति और स्तंभ पहचानकर्ताओं से संबंधित करना आसान है और आप आवृत्तियों, अनुपात या गड़बड़ी के साथ एनोटेट कर सकते हैं (ऐसा न करें यदि आपको लगता है कि परिणाम बहुत व्यस्त है, स्वाभाविक रूप से)।

कुछ संभावनाएँ:

  1. यदि एक चर को दूसरे के प्रतिपादक के रूप में प्रतिक्रिया के बारे में सोचा जा सकता है, तो यह हमेशा की तरह ऊर्ध्वाधर अक्ष पर साजिश रचने के लायक है। यहाँ मैं एक दृष्टिकोण को मापने के रूप में "महत्व" के बारे में सोचता हूं, सवाल यह है कि क्या यह व्यवहार को प्रभावित करता है ("अक्सर")। इन काल्पनिक आंकड़ों के लिए भी कारण का मुद्दा अक्सर अधिक जटिल होता है, लेकिन बिंदु बना रहता है।

  2. सुझाव # 1 को हमेशा ट्रम्प किया जाना चाहिए यदि रिवर्स बेहतर काम करता है, अर्थ, के बारे में सोचना और व्याख्या करना आसान है।

  3. प्रतिशतता या संभाव्यता टूटने से अक्सर समझ में आता है। कच्ची आवृत्तियों का एक भूखंड उपयोगी भी हो सकता है। (स्वाभाविक रूप से, इस भूखंड में एक ही बार में दोनों प्रकार की जानकारी दिखाने के मोज़ेक भूखंडों के गुण का अभाव है।)

  4. आप निश्चित रूप से समूहीकृत बार चार्ट्स या स्टैक्ड बार चार्ट्स (या अभी भी काफी असामान्य समूह वाले डॉट चार्ट डब्ल्यूएस क्लीवलैंड के अर्थ में) के (बहुत अधिक सामान्य) विकल्पों की कोशिश कर सकते हैं। इस मामले में, मुझे नहीं लगता कि वे भी काम करते हैं, लेकिन कभी-कभी वे बेहतर काम करते हैं।

  5. कुछ अलग-अलग प्रतिक्रिया श्रेणियों को अलग-अलग रंग देना चाहते हैं। मुझे कोई आपत्ति नहीं है, और यदि आप चाहते हैं कि आप किसी भी तरह से आपत्तियों को गंभीरता से नहीं लेंगे।

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


ग्राफिक को जोड़ने के लिए धन्यवाद। यह इस बात का मुद्दा उठाता है कि ग्राफिक्स और पाठ डेटा कैसे संयोजित होते हैं - मुझे पता है कि कुछ लोग बार के शीर्ष पर नंबर डालना पसंद नहीं करते हैं (क्योंकि यह बार को वास्तव में होने की तुलना में लंबा दिखाई देता है; मेरे पास हाथ के लिए प्रशस्ति पत्र नहीं है; यह लेकिन मुझे लगता है कि यह एक प्रसिद्ध राय है)।
सिल्वर फिश

दूसरी ओर, संख्याओं की स्थिति को ठीक करने से दो समस्याओं में से एक का निर्माण होता है: या तो संख्याएं सलाखों पर सुपरइम्पोज हो सकती हैं, जो उन्हें अस्पष्ट करती हैं, या बार के ऊपर संख्याओं को ठीक करने से उन्हें निचली सलाखों से "डिस्कनेक्ट" किया जा सकता है। विशेष रूप से। क्या इन मुद्दों की कहीं अच्छी चर्चा है?
सिल्वर फिश

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

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

30

यहाँ एक हीट मैप पर एक त्वरित प्रयास है , मैंने कोशिकाओं को तोड़ने के लिए ब्लैक सेल बॉर्डर का उपयोग किया है, लेकिन शायद ग्लेन_ब के जवाब में टाइल्स को अलग किया जाना चाहिए।

गर्मी के नक्शे

library(ggplot2)
runningcounts.df <- as.data.frame(table(importance, often))
ggplot(runningcounts.df, aes(importance, often)) +
   geom_tile(aes(fill = Freq), colour = "black") +
   scale_fill_gradient(low = "white", high = "steelblue")

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

विकम, हेडली और हाइक हॉफमैन। 2011. उत्पाद भूखंडविज़ुअलाइज़ेशन और कंप्यूटर ग्राफिक्स पर आईईईई लेन-देन (प्रोक। इन्फोविस `11)प्री-प्रिंट पीडीएफ

उतार-चढ़ाव की साजिश

theme_nogrid <- function (base_size = 12, base_family = "") {
  theme_bw(base_size = base_size, base_family = base_family) %+replace% 
    theme(panel.grid = element_blank())   
}

ggplot(runningcounts.df, aes(importance, often)) +
  geom_point(aes(size = Freq, color = Freq, stat = "identity", position = "identity"), shape = 15) +
  scale_size_continuous(range = c(3,15)) + 
  scale_color_gradient(low = "white", high = "black") +
  theme_nogrid()

1
" शायद टाइल्स को ग्लेन_ब के जवाब में अधिक अलग किया जाना चाहिए " - मुझे यकीन नहीं है कि इस मामले में यह आवश्यक है, यहां श्रेणियों को लगातार देखने के लिए बहुत कम प्रलोभन है।
Glen_b

18

यहाँ एक उदाहरण है कि डेटा का एक स्पाइनप्लॉट कैसा दिखेगा। मैंने इसे बहुत जल्दी स्टाटा में किया, लेकिन एक आर कार्यान्वयन है । मुझे लगता है कि आर में यह सिर्फ होना चाहिए:

spineplot(factor(often)~factor(importance))

यदि आप R श्रेणीबद्ध चर देते हैं तो स्पाइनप्लॉट वास्तव में डिफ़ॉल्ट प्रतीत होता है:

plot(factor(often)~factor(importance))

प्रायः प्रत्येक श्रेणी के लिए महत्वपूर्ण की श्रेणियों का आंशिक टूटना दिखाया गया है। स्टैक्ड सलाखों को ऊर्ध्वाधर आयाम के साथ खींचा जाता है, जिसे अक्सर महत्व श्रेणी दी जाती है। क्षैतिज आयाम प्रत्येक महत्व श्रेणी में अंश दिखाता है। इस प्रकार गठित टाइल के क्षेत्र महत्व और अक्सर के प्रत्येक क्रॉस-संयोजन के लिए आवृत्तियों, या अधिक सामान्यतः योगों का प्रतिनिधित्व करते हैं।

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


1
मैंने इसे बदल दिया।
दिमित्री वी। मास्टरोव

1
निक कॉक्स (स्टाटा स्पाइनप्लॉट के लेखक) का हवाला देते हुए: दो चर का प्रतिबंध वास्तविक से अधिक स्पष्ट है। समग्र चर दो या अधिक श्रेणीबद्ध चर के संयोजन द्वारा बनाए जा सकते हैं .... एक प्रतिक्रिया चर आमतौर पर y अक्ष पर बेहतर दिखाया जाता है। यदि एक चर द्विआधारी है, तो यह अक्सर y अक्ष पर प्लॉट करना बेहतर होता है। स्वाभाविक रूप से, इन सुझावों के बीच कुछ तनाव हो सकता है।
दिमित्री वी। मास्टरोव

3
मैं उपरोक्त से सहमत हूं। लेकिन स्टाटा की डिफॉल्ट कोलो [यू] आर योजना ऑर्डिनल वैरिएबल के लिए काफी घटिया है। कई अच्छे विकल्प लाल और / या नीले रंग के अलग-अलग शेड्स हैं, या सिर्फ gr {a। E} yscale विकल्प हैं।
निक कॉक्स

3
@ दिमित्री मुझे एक ही स्थिति में रंगों के मनमाने मिश्रण का उपयोग करना बहुत अजीब लगता है! मैं कुछ भी नहीं या सटीक रंगों से या अनुमान नहीं लगाता, हालांकि मात्रा निर्धारित है। लेकिन बिंदु केवल यह है कि एक श्रेणीबद्ध पैमाने को रंगों के क्रमबद्ध अनुक्रम द्वारा अच्छी तरह से मिलान किया जाता है। गर्मी के नक्शे के रंग में भी कुछ मनमानी है, और वास्तव में कई प्रकार के विषयगत कार्टोग्राफी में।
निक कॉक्स

2
मैं एक वर्गीकृत रंग योजना के साथ समस्या को नहीं देखता जब तक कि रंग अलग-अलग न हों। किसी को प्रक्षेप करने के लिए क्यों लुभाया जाएगा? मैं मनमाने रंगों का तर्क नहीं देख सकता। इंद्रधनुष के अनुक्रम भौतिकी में समझ में आते हैं, लेकिन इस संदर्भ में नहीं कि लोग रंगों को कैसे समझते हैं (उदाहरण के लिए पीले और लाल बहुत अलग हैं)। मेरे पास विकल्पों के माध्यम से कई छात्रों से बात करने के सबूत हैं, और मैं कहूंगा कि 80% ईमानदारी से कहेंगे "यह बहुत बेहतर है" जब वे रेनबो या फलों के सलाद पर एक सूक्ष्म श्रेणीबद्ध अनुक्रम देखते हैं। हल्के नीले रंग के माध्यम से हल्के नीले रंग के माध्यम से नीले रंग से अच्छी तरह से काम करता है। सुनिश्चित करें कि आप इसे महिलाओं के साथ-साथ पुरुषों पर भी आजमाते हैं।
निक कॉक्स

13

जिस तरह से मैंने यह किया है वह थोडा थोडा है, लेकिन इसे आसानी से तय किया जा सकता है।

यह घबराने वाले दृष्टिकोण का एक संशोधित संस्करण है।

कुल्हाड़ियों को हटाने से पैमाने को निरंतर रूप से व्याख्या करने का प्रलोभन कम हो जाता है; घिसे-पिटे संयोगों के इर्द-गिर्द बक्सों को खींचना इस बात पर जोर देता है कि "स्केल ब्रेक" जैसा कुछ है - अंतराल जरूरी नहीं के बराबर हैं

आदर्श रूप से, 1..5 लेबल को श्रेणी नामों के साथ प्रतिस्थापित किया जाना चाहिए, लेकिन मैं इसे अभी के लिए कल्पना के लिए छोड़ दूंगा; मुझे लगता है कि यह इसका बोध कराता है।

 plot(jitter(often)~jitter(importance),data=running.df,bty="n",
    ylim=c(0.5,5.5),xlim=c(0.5,5.5),cex=0.5,pty="s",xaxt="n",yaxt="n") 
 axis(1,tick=TRUE,col=0)
 axis(2,tick=TRUE,col=0)
 rect(rep(seq(0.75,4.75,1),5),rep(seq(0.75,4.75,1),each=5),
       rep(seq(1.25,5.25,1),5),rep(seq(1.25,5.25,1),each=5),
       border=8)

घबराना अध्यादेश-संबंधी साजिश


संभावित शोधन:

i) ब्रेक को छोटा बनाना (मैं व्यक्तिगत रूप से इससे बड़ा ब्रेक पसंद करता हूं), और

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

अर्ध-यादृच्छिक घबराना और बड़े बक्से

library("fOptions")

 hjit <- runif.halton(dim(running.df)[1],2) 
 xjit <- (hjit[,1]-.5)*0.8
 yjit <- (hjit[,2]-.5)*0.8  

 plot(I(often+yjit)~I(importance+xjit),data=running.df,bty="n",
    ylim=c(0.5,5.5),xlim=c(0.5,5.5),cex=0.5,pty="s",xaxt="n",yaxt="n") 
 axis(1,tick=TRUE,col=0)
 axis(2,tick=TRUE,col=0)
 rect(rep(seq(0.55,4.55,1),5),rep(seq(0.55,4.55,1),each=5),
       rep(seq(1.45,5.45,1),5),rep(seq(1.45,5.45,1),each=5),
       border=8)

1
मुझे यह पसंद है, मेरे लिए जुदाई वास्तव में डेटा की क्रमिक प्रकृति पर जोर देती है! दुर्भाग्य से मानव आंख स्वाभाविक रूप से स्पष्ट रूप से पैटर्न में स्पष्ट पैटर्न के लिए तैयार की जाती है जैसे कि "ऊपर की ओर रुझान" पैनलों (4,5) और (5,3) में। प्लस साइड पर "अंक गिनना" डॉट आकार द्वारा आवृत्ति को आंकने की तुलना में मेरे लिए बहुत अधिक स्वाभाविक लगता है। क्या ऐसे रूपांतर हैं जहाँ बिंदुओं को समान रूप से फैलाया जाता है, या "जॉगिंग ट्रेंड" से ध्यान हटाने से बचने के लिए केंद्रों पर नियमित पैटर्न में टकराते हैं?
सिल्वर फिश

1
@ सिल्वरफ़िश, भूगोल में एक समान अवधारणा डॉट-घनत्व मानचित्र हैं। भूगोलवेत्ताओं ने कुछ प्रमाण पाए हैं कि नियमित पैटर्न या पैटर्न जो एक निश्चित मात्रा में व्हाट्सएप को भरते हैं (इसलिए दूर तक फैले हुए हैं) यादृच्छिक रूप से पर्यवेक्षकों के बीच अधिक सटीक धारणा पैदा करते हैं।
एंडी डब्ल्यू

IMO यह एक अच्छा विचार है, लेकिन पैनलों के बीच अंतर इस उदाहरण में इतना बड़ा है कि यह किसी भी प्रवृत्ति को बहुत कठिन बना देता है। इलाज बीमारी से भी बदतर है (लेकिन यह बहुत आसान होना चाहिए कि पैनल एक साथ बहुत करीब हों)।
एंडी डब्ल्यू

1
@ सिल्वरफ़िश अर्ध-यादृच्छिक घबराना इसका एक संभावित समाधान होगा। आपकी चिंता मुझे खुद है।
Glen_b

1
बहुत अच्छा! इस उदाहरण में स्पाइनप्लॉट की तुलना में IMO एक बेहतर विकल्प है (स्पाइन या मोज़ेक प्लॉट किसी भी श्रेणी के जोड़े के लिए सशर्त वितरण का आकलन करने के लिए बेहतर है - यह घबराना डॉट प्लॉट रुझानों का आकलन करने के लिए आसान है - डेटा की क्रमिक प्रकृति का लाभ उठाते हुए और कुछ ग्रहण करना मोनोटोनिक संबंध का प्रकार)।
एंडी डब्ल्यू

7

आर पैकेज रिवरप्लॉट का उपयोग करना:

  data$importance <- factor(data$importance, 
                            labels = c("not at all important",
                                       "somewhat unimportant",
                                       "neither important nor unimportant",
                                       "somewhat important",
                                       "very important"))
  data$often <- factor(data$often, 
                       labels = c("never",
                                  "less than once per fortnight",
                                  "once every one or two weeks",
                                  "two or three times per week",
                                  "four or more times per week"))

  makeRivPlot <- function(data, var1, var2, ...) {

    require(plyr)
    require(riverplot)
    require(RColorBrewer)

    names1 <- levels(data[, var1])
    names2 <- levels(data[, var2])

    var1 <- as.numeric(data[, var1])
    var2 <- as.numeric(data[, var2])

    edges <- data.frame(var1, var2 + max(var1, na.rm = T))
    edges <- count(edges)

    colnames(edges) <- c("N1", "N2", "Value")

    nodes <- data.frame(ID     = c(1:(max(var1, na.rm = T) +
                                      max(var2, na.rm = T))),
                        x      = c(rep(1, times = max(var1, na.rm = T)),
                                   rep(2, times = max(var2, na.rm = T))),
                        labels = c(names1, names2) ,
                        col    = c(brewer.pal(max(var1, na.rm = T), "Set1"),
                                   brewer.pal(max(var2, na.rm = T), "Set1")),
                        stringsAsFactors = FALSE)

    nodes$col <- paste(nodes$col, 95, sep = "")

    return(makeRiver(nodes, edges))

  }

a <- makeRivPlot(data, "importance", "often")

riverplot(a, srt = 45)

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


1
(+1) मुझे इसके लिए समानांतर निर्देशांक का उपयोग करने का विचार पसंद है ! मुझे लगता है कि आरेख के माध्यम से पथों का पता लगाना आसान होगा, और देखें कि "अक्सर" उत्तर कैसे विघटित होते हैं, अगर रंग बाएं से दाएं की ओर बहते हैं (एक योजना जो प्रभावी रूप से "अक्सर" निर्भर चर के रूप में प्रदर्शित होगी और " महत्व "व्याख्यात्मक चर के रूप में)। ऐसे भूखंडों के कुछ संवादात्मक कार्यान्वयन पर आप उस चर द्वारा रंग करने के लिए एक अक्ष पर क्लिक कर सकते हैं, जो उपयोगी है।
सिल्वरफिश

1
तुलना के लिए, रॉबर्ट कोसरा के "समांतर सेट" विज़ुअलाइज़ेशन , जो स्पष्ट डेटा के लिए डिज़ाइन किया गया है, में आरेख के माध्यम से बहने वाले रंग हैं।
सिल्वरफिश

6

एक अलग विचार है कि मैं मूल रूप से एक चलनी की साजिश के बारे में नहीं सोचा था ।

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

प्रत्येक टाइल का आकार अपेक्षित आवृत्ति के लिए आनुपातिक है; आयतों के अंदर छोटे वर्ग वास्तविक आवृत्तियों का प्रतिनिधित्व करते हैं। इसलिए वर्गों का अधिक घनत्व अपेक्षित आवृत्ति से अधिक इंगित करता है (और छायांकित नीला है); वर्गों की कम घनत्व (लाल) अपेक्षित आवृत्ति से कम है।

मुझे लगता है कि अगर रंग आकार का प्रतिनिधित्व करता है, तो न केवल अवशेष, बल्कि अवशिष्ट का भी। यह किनारे के मामलों के लिए विशेष रूप से सच है जहां अपेक्षित और अवलोकन की गई आवृत्तियां समान हैं और अवशिष्ट शून्य के करीब है; एक नीरस लाल / नीली योजना छोटे विचलन को अधिक करती है।

आर में कार्यान्वयन:

library(vcd)
runningcounts.df <- as.data.frame(table(importance, often))
sieve(Freq ~ often + importance, data=runningcounts.df, shade= TRUE)

1
आपकी पसंद के बारे में कि रंग आकार के साथ-साथ संकेत का भी प्रतिनिधित्व करता है, एक संभावना यह है कि रंगों को अधिक धूसर बनाया जाए जब अपेक्षित अंतर अपेक्षाकृत छोटा हो।
Glen_b

6

आर। में एक पहलू बार चार्ट। यह "महत्व" के प्रत्येक स्तर पर "अक्सर" के वितरण को बहुत स्पष्ट रूप से दर्शाता है। लेकिन अगर अधिकतम गिनती "महत्व" के स्तरों के बीच अधिक होती तो यह इतनी अच्छी तरह से काम नहीं करती; खाली जगह के बहुत से बचने के लिए scales="free_y"ggplot ( यहां देखें ) में सेट करना काफी आसान है , लेकिन वितरण का आकार "महत्व" के कम-आवृत्ति स्तरों पर विचार करना मुश्किल होगा क्योंकि सलाखों इतने छोटे होंगे। शायद उन स्थितियों में इसके बजाय ऊर्ध्वाधर अक्ष पर सापेक्ष आवृत्ति (सशर्त संभावना) का उपयोग करना बेहतर होता है।

मुखरित बार चार्ट

यह स्टाटा में टैबप्लेट के रूप में इतना "साफ" नहीं है कि निक कॉक्स से जुड़ा हुआ है, लेकिन इसी तरह की जानकारी बताती है।

आर कोड:

library(ggplot)
running2.df <- data.frame(often = factor(often, labels = c("never", "less than once per fortnight", "once every one or two weeks", "two or three times per week", "four or more times per week")), importance = factor(importance, labels = c("not at all important", "somewhat unimportant", "neither important nor unimportant", "somewhat important", "very important")))
ggplot(running2.df, aes(often)) + geom_bar() +
  facet_wrap(~ importance, ncol = 1) +
  theme(axis.text.x=element_text(angle = -45, hjust = 0)) +
  theme(axis.title.x = element_blank())
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.