आर में सहसंबंध: पियर्सन & मैट्रिक्स उदाहरण के साथ स्पीयरमैन

एक द्विवार्षिक संबंध एक संबंध का वर्णन करता है-सहसंबंध- दो चर के बीच, और। इस ट्यूटोरियल में, हम सहसंबंध की अवधारणा पर चर्चा करते हैं और दिखाते हैं कि किसी भी दो चर के बीच संबंध को मापने के लिए इसका उपयोग कैसे किया जा सकता है।

दो चर के बीच सहसंबंध की गणना करने के लिए दो प्राथमिक विधियां हैं।

  • पियर्सन: पैरामीट्रिक सहसंबंध
  • स्पीयरमैन: गैर पैरामीट्रिक सहसंबंध

इस ट्यूटोरियल में, आप सीखेंगे

  • पियर्सन सहसंबंध
  • स्पीयरमैन रैंक सहसंबंध
  • सहसम्बंध मैट्रिक्स
  • कल्पना सहसंबंध मैट्रिक्स

पियर्सन सहसंबंध

Pearson सहसंबंध विधि आमतौर पर दो चर के बीच संबंध के लिए एक प्राथमिक जांच के रूप में प्रयोग किया जाता है।

सहसंबंध के गुणांक , की ताकत का एक उपाय है रैखिक दो चर और के बीच संबंध। इसका पालन निम्न प्रकार से किया जाता है:

साथ से

  • , के मानक विचलन
  • , के मानक विचलन

सहसंबंध -1 और 1 के बीच होता है।

  • पास या 0 के बराबर मान का तात्पर्य बहुत कम या कोई रैखिक संबंध नहीं है और।
  • इसके विपरीत, करीब 1 या -1 आता है, रैखिक संबंध मजबूत होता है।

हम निम्नलिखित के रूप में टी-परीक्षण की गणना कर सकते हैं और स्वतंत्रता की डिग्री के साथ वितरण तालिका की जांच कर सकते हैं:

स्पीयरमैन रैंक सहसंबंध

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

स्पीयरमैन का रैंक सहसंबंध, -1 और 1 के बीच हमेशा होता है, जिसका चरम के करीब मूल्य मजबूत रिश्ते को दर्शाता है। इसका पालन निम्न प्रकार से किया जाता है:

रैंक और के बीच सहसंयोजकों के साथ कहा। भाजक मानक विचलन की गणना करता है।

R में, हम cor () फ़ंक्शन का उपयोग कर सकते हैं। यह तीन तर्क और विधि लेता है।

cor(x, y, method)

तर्क :

  • x: पहला वेक्टर
  • y: दूसरा वेक्टर
  • विधि: सहसंबंध की गणना करने के लिए प्रयुक्त सूत्र। तीन स्ट्रिंग मान:
    • "पीयरसन"
    • "केंडल"
    • "स्पीयरमैन"

यदि वैक्टर में अनुपलब्ध मान हो तो एक वैकल्पिक तर्क जोड़ा जा सकता है: उपयोग = "पूर्ण.बॉब्स"

हम BudgetUK डेटासेट का उपयोग करेंगे। यह डेटासेट १ ९ reports० और १ ९ .२ के बीच ब्रिटिश परिवारों के बजट आवंटन की रिपोर्ट करता है। उनमें से दस विशेषताओं के साथ १५१ ९ अवलोकन हैं:

  • wfood: शेयर खाद्य शेयर खर्च
  • wfuel: शेयर ईंधन खर्च
  • wcloth: कपड़ों के खर्च के लिए बजट का हिस्सा
  • Walc: शेयर अल्कोहल खर्च
  • wtrans: शेयर परिवहन खर्च
  • wother: अन्य सामानों का हिस्सा खर्च
  • totexp: कुल घरेलू खर्च पाउंड में
  • आय कुल शुद्ध घरेलू आय
  • उम्र: घर की उम्र
  • बच्चे: बच्चों की संख्या
उदाहरण
library(dplyr)PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/british_household.csv"data <-read.csv(PATH)filter(income < 500)mutate(log_income = log(income),log_totexp = log(totexp),children_fac = factor(children, order = TRUE, labels = c("No", "Yes")))select(-c(X,X.1, children, totexp, income))glimpse(data)

कोड स्पष्टीकरण

  • हम पहले डेटा को आयात करते हैं और dplyr लाइब्रेरी से झलक () फ़ंक्शन के साथ एक नज़र रखते हैं।
  • तीन अंक 500K से ऊपर हैं, इसलिए हमने उन्हें बाहर करने का फैसला किया।
  • लॉग में मौद्रिक चर को परिवर्तित करना एक आम बात है। यह आउटलेर्स के प्रभाव को कम करने में मदद करता है और डेटासेट में तिरछापन कम करता है।

आउटपुट:

## Observations: 1,516## Variables: 10## $ wfood  0.4272, 0.3739, 0.1941, 0.4438, 0.3331, 0.3752, 0… ## $ wfuel  0.1342, 0.1686, 0.4056, 0.1258, 0.0824, 0.0481, 0… ## $ wcloth  0.0000, 0.0091, 0.0012, 0.0539, 0.0399, 0.1170, 0… ## $ walc  0.0106, 0.0825, 0.0513, 0.0397, 0.1571, 0.0210, 0… ## $ wtrans  0.1458, 0.1215, 0.2063, 0.0652, 0.2403, 0.0955, 0… ## $ wother  0.2822, 0.2444, 0.1415, 0.2716, 0.1473, 0.3431, 0… ## $ age  25, 39, 47, 33, 31, 24, 46, 25, 30, 41, 48, 24, 2… ## $ log_income  4.867534, 5.010635, 5.438079, 4.605170, 4.605170,… ## $ log_totexp  3.912023, 4.499810, 5.192957, 4.382027, 4.499810,… ## $ children_fac  Yes, Yes, Yes, Yes, No, No, No, No, No, No, Yes,… 

हम "पीयरसन" और "स्पीयरमैन" विधियों के साथ आय और भोजन के चर के बीच सहसंबंध गुणांक की गणना कर सकते हैं।

cor(data$log_income, data$wfood, method = "pearson")

आउटपुट:

## [1] -0.2466986
cor(data$log_income, data$wfood, method = "spearman")

आउटपुट:

## [1] -0.2501252 

सहसम्बंध मैट्रिक्स

द्विवार्षिक सहसंबंध एक अच्छी शुरुआत है, लेकिन हम बहुभिन्नरूपी विश्लेषण के साथ एक व्यापक चित्र प्राप्त कर सकते हैं। एक सहसंबंध मैट्रिक्स के अंदर कई चर के साथ सहसंबंध का चित्रण किया जाता है । एक सहसंबंध मैट्रिक्स एक मैट्रिक्स है जो सभी चर की जोड़ी सहसंबंध का प्रतिनिधित्व करता है।

Cor () फ़ंक्शन एक सहसंबंध मैट्रिक्स देता है। द्विवार्षिक सहसंबंध के साथ एकमात्र अंतर यह है कि हमें कौन से चर को निर्दिष्ट करने की आवश्यकता नहीं है। डिफ़ॉल्ट रूप से, R सभी चर के बीच सहसंबंध की गणना करता है।

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

एक सहसंबंध मैट्रिक्स सममित है जिसका अर्थ है कि विकर्ण के ऊपर के मूल्यों में नीचे के समान मान हैं। मैट्रिक्स का आधा हिस्सा दिखाने के लिए यह अधिक दृश्य है।

हम children_fac को बाहर करते हैं क्योंकि यह एक कारक स्तर चर है। cor एक श्रेणीगत चर पर सहसंबंध नहीं करता है।

# the last column of data is a factor level. We don't include it in the codemat_1 <-as.dist(round(cor(data[,1:9]),2))mat_1

कोड स्पष्टीकरण

  • cor (डेटा): सहसंबंध मैट्रिक्स प्रदर्शित करें
  • राउंड (डेटा, 2): दो दशमलव के साथ सहसंबंध मैट्रिक्स को गोल करें
  • as.dist (): केवल दूसरी छमाही दिखाता है

आउटपुट:

## wfood wfuel wcloth walc wtrans wother age log_income## wfuel 0.11## wcloth -0.33 -0.25## walc -0.12 -0.13 -0.09## wtrans -0.34 -0.16 -0.19 -0.22## wother -0.35 -0.14 -0.22 -0.12 -0.29## age 0.02 -0.05 0.04 -0.14 0.03 0.02## log_income -0.25 -0.12 0.10 0.04 0.06 0.13 0.23## log_totexp -0.50 -0.36 0.34 0.12 0.15 0.15 0.21 0.49

महत्वपूर्ण स्तर

महत्व का स्तर कुछ स्थितियों में उपयोगी होता है जब हम पियर्सन या स्पीयरमैन विधि का उपयोग करते हैं। पुस्तकालय Hmisc से फ़ंक्शन rcorr () हमारे लिए p-value की गणना करता है। हम लाइब्रेरी को कोंडा से डाउनलोड कर सकते हैं और इसे टर्मिनल में पेस्ट करने के लिए कोड की प्रतिलिपि बना सकते हैं:

conda install -c r r-hmisc 

आरसीओआर () को मैट्रिक्स के रूप में संग्रहीत करने के लिए एक डेटा फ्रेम की आवश्यकता होती है। पी-मान के साथ सहसंबंध मैट्रिक्स की गणना करने से पहले हम अपने डेटा को एक मैट्रिक्स में बदल सकते हैं।

library("Hmisc")data_rcorr <-as.matrix(data[, 1: 9])mat_2 <-rcorr(data_rcorr)# mat_2 <-rcorr(as.matrix(data)) returns the same output

सूची ऑब्जेक्ट mat_2 में तीन तत्व हैं:

  • r: सहसंबंध मैट्रिक्स का आउटपुट
  • n: अवलोकन की संख्या
  • पी: पी-मूल्य

हम तीसरे तत्व, पी-मूल्य में रुचि रखते हैं। सहसंबंध के गुणांक के बजाय पी-मान के साथ सहसंबंध मैट्रिक्स को दिखाना आम है।

p_value <-round(mat_2[["P"]], 3)p_value

कोड स्पष्टीकरण

  • mat_2 [["P"]]: P- मान को P नामक तत्व में संग्रहीत किया जाता है
  • राउंड (mat_2 [["P"]], 3): तीन अंकों वाले तत्वों को गोल करें

आउटपुट:

wfood wfuel wcloth walc wtrans wother age log_income log_totexpwfood NA 0.000 0.000 0.000 0.000 0.000 0.365 0.000 0wfuel 0.000 NA 0.000 0.000 0.000 0.000 0.076 0.000 0wcloth 0.000 0.000 NA 0.001 0.000 0.000 0.160 0.000 0walc 0.000 0.000 0.001 NA 0.000 0.000 0.000 0.105 0wtrans 0.000 0.000 0.000 0.000 NA 0.000 0.259 0.020 0wother 0.000 0.000 0.000 0.000 0.000 NA 0.355 0.000 0age 0.365 0.076 0.160 0.000 0.259 0.355 NA 0.000 0log_income 0.000 0.000 0.000 0.105 0.020 0.000 0.000 NA 0log_totexp 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 NA

कल्पना सहसंबंध मैट्रिक्स

एक गर्मी नक्शा एक सहसंबंध मैट्रिक्स दिखाने का एक और तरीका है। GGally लाइब्रेरी ggplot2 का विस्तार है। वर्तमान में, यह कोंडा लाइब्रेरी में उपलब्ध नहीं है। हम सीधे कंसोल में इंस्टॉल कर सकते हैं।

install.packages("GGally")

लाइब्रेरी में सारांश आंकड़े दिखाने के लिए अलग-अलग फ़ंक्शन शामिल हैं जैसे कि मैट्रिक्स में सभी चर के सहसंबंध और वितरण।

Ggcorr () फ़ंक्शन में बहुत सारे तर्क हैं। हम केवल उन तर्कों का परिचय देंगे जिनका उपयोग हम ट्यूटोरियल में करेंगे:

फ़ंक्शन ggcorr

ggcorr(df, method = c("pairwise", "pearson"),nbreaks = NULL, digits = 2, low = "#3B9AB2",mid = "#EEEEEE", high = "#F21A00",geom = "tile", label = FALSE,label_alpha = FALSE)

तर्क:

  • df : डेटासेट का इस्तेमाल किया
  • विधि : सहसंबंध की गणना करने का सूत्र। डिफ़ॉल्ट रूप से, जोड़ीदार और पियर्सन की गणना की जाती है
  • nbreaks : गुणांकों के रंगीकरण के लिए एक श्रेणीगत श्रेणी लौटाएं। डिफ़ॉल्ट रूप से, कोई ब्रेक नहीं और रंग ढाल निरंतर है
  • अंक : सहसंबंध गुणांक को गोल करें। डिफ़ॉल्ट रूप से, 2 पर सेट करें
  • निम्न : रंगाई के निचले स्तर को नियंत्रित करें
  • मध्य : रंगाई के मध्य स्तर को नियंत्रित करें
  • उच्च : रंगाई के उच्च स्तर को नियंत्रित करें
  • geom : ज्यामितीय तर्क के आकार को नियंत्रित करें। डिफ़ॉल्ट रूप से, "टाइल"
  • लेबल : बूलियन मान। लेबल प्रदर्शित करें या न करें। डिफ़ॉल्ट रूप से, `FALSE` पर सेट करें

बुनियादी गर्मी का नक्शा

पैकेज का सबसे बुनियादी प्लॉट हीट मैप है। ग्राफ की किंवदंती 1 से 1 तक एक ढाल रंग दिखाती है, जिसमें गर्म रंग मजबूत सकारात्मक सहसंबंध और ठंडे रंग का संकेत देता है, एक नकारात्मक सहसंबंध।

library(GGally)ggcorr(data)

कोड स्पष्टीकरण

  • ggcorr (डेटा): केवल एक तर्क की आवश्यकता है, जो डेटा फ़्रेम नाम है। फैक्टर स्तर के चर भूखंड में शामिल नहीं हैं।

आउटपुट:

हीट मैप पर नियंत्रण जोड़ें

हम ग्राफ में अधिक नियंत्रण जोड़ सकते हैं।

ggcorr(data,nbreaks = 6,low = "steelblue",mid = "white",high = "darkred",geom = "circle")

कोड स्पष्टीकरण

  • nbreaks = 6: 6 रैंक के साथ किंवदंती को तोड़ें।
  • कम = "स्टीलब्लू": नकारात्मक सहसंबंध के लिए हल्के रंगों का उपयोग करें
  • मध्य = "सफ़ेद": मध्य श्रेणी सहसंबंध के लिए सफेद रंगों का उपयोग करें
  • उच्च = "गहरा": सकारात्मक सहसंबंध के लिए गहरे रंगों का उपयोग करें
  • geom = "सर्कल": हीट मैप में खिड़कियों के आकार के रूप में सर्कल का उपयोग करें। सर्कल का आकार सहसंबंध के निरपेक्ष मूल्य के लिए आनुपातिक है।

आउटपुट:

हीट मैप में लेबल जोड़ें

GGally हमें विंडोज़ के अंदर एक लेबल जोड़ने की अनुमति देता है।

ggcorr(data,nbreaks = 6,label = TRUE,label_size = 3,color = "grey50")

कोड स्पष्टीकरण

  • लेबल = TRUE: हीट मैप के अंदर सहसंबंध के गुणांक के मान जोड़ें।
  • color = "grey50": रंग चुनें, अर्थात ग्रे
  • Label_size = 3: लेबल का आकार 3 के बराबर सेट करें

आउटपुट:

ggpairs

अंत में, हम GGaly लाइब्रेरी से एक और फंक्शन शुरू करते हैं। Ggpair। यह एक मैट्रिक्स प्रारूप में एक ग्राफ का उत्पादन करता है। हम एक ग्राफ के भीतर तीन प्रकार की गणना प्रदर्शित कर सकते हैं। मैट्रिक्स एक आयाम है, जिसमें टिप्पणियों की संख्या बराबर होती है। ऊपरी / निचला भाग खिड़कियां और विकर्ण में प्रदर्शित करता है। हम नियंत्रित कर सकते हैं कि हम मैट्रिक्स के प्रत्येक भाग में कौन सी जानकारी दिखाना चाहते हैं। Ggpair का सूत्र है:

ggpair(df, columns = 1: ncol(df), title = NULL,upper = list(continuous = "cor"),lower = list(continuous = "smooth"),mapping = NULL)

तर्क :

  • df : डेटासेट का इस्तेमाल किया
  • कॉलम : प्लॉट खींचने के लिए कॉलम का चयन करें
  • शीर्षक : एक शीर्षक शामिल करें
  • ऊपरी : भूखंड के विकर्ण के ऊपर बक्से को नियंत्रित करें। लौटने के लिए कम्प्यूटेशन या ग्राफ के प्रकार की आपूर्ति करने की आवश्यकता है। यदि निरंतर = "कोर", हम आर को सहसंबंध की गणना करने के लिए कहते हैं। ध्यान दें, तर्क के लिए एक सूची होनी चाहिए। अन्य तर्कों का उपयोग किया जा सकता है, अधिक जानकारी के लिए [विगनेट] ("http://ggobi.github.io/ggally/#custom_functions") देखें।
  • निचला : विकर्ण के नीचे के बक्से को नियंत्रित करें।
  • मैपिंग : ग्राफ के सौंदर्य को दर्शाता है। उदाहरण के लिए, हम विभिन्न समूहों के लिए ग्राफ की गणना कर सकते हैं।

समूहन के साथ ggpair के साथ Bivariate विश्लेषण

अगले ग्राफ में तीन सूचनाएं हैं:

  • Log_totexp, log_income, उम्र और wtrans चर के बीच सहसंबंध मैट्रिक्स को इस बात से जोड़ा जाता है कि घर में कोई बच्चा है या नहीं।
  • समूह द्वारा प्रत्येक चर का वितरण प्लॉट करें
  • समूह द्वारा ट्रेंड के साथ स्कैटर प्लॉट प्रदर्शित करें
library(ggplot2)ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"), title = "Bivariate analysis of revenue expenditure by the British household", upper = list(continuous = wrap("cor",size = 3)),lower = list(continuous = wrap("smooth",alpha = 0.3,size = 0.1)),mapping = aes(color = children_fac))

कोड स्पष्टीकरण

  • कॉलम = c ("log_totexp", "log_income", "आयु", "wtrans"): ग्राफ़ में दिखाने के लिए चर चुनें
  • शीर्षक = "ब्रिटिश परिवार द्वारा राजस्व व्यय का विश्लेषण": एक शीर्षक जोड़ें
  • ऊपरी = सूची (): ग्राफ़ के ऊपरी भाग को नियंत्रित करें। यानी विकर्ण के ऊपर
  • निरंतर = लपेट ("कोर", आकार = 3)): सहसंबंध के गुणांक की गणना करें। हम ग्राफ (जैसे आकार = 3) -लवर = सूची () के सौंदर्य को नियंत्रित करने के लिए रैप () फ़ंक्शन के अंदर निरंतर तर्क को लपेटते हैं: ग्राफ के निचले हिस्से को नियंत्रित करते हैं। विकर्ण के नीचे यानी।
  • निरंतर = लपेटें ("चिकनी", अल्फा = 0.3, आकार = 0.1): एक रेखीय प्रवृत्ति के साथ एक तितर बितर साजिश जोड़ें। हम ग्राफ के सौंदर्य को नियंत्रित करने के लिए रैप () फ़ंक्शन के अंदर निरंतर तर्क को लपेटते हैं (अर्थात आकार = 0.1, अल्फा = 0.3)
  • मैपिंग = एईएस (रंग = बच्चों_फैक): हम चाहते हैं कि ग्राफ के प्रत्येक भाग को चर बच्चों_फैक द्वारा स्टैक्ड किया जाए, जो कि घर के बच्चे और 2 नहीं होने पर 1 का मान लेने वाला एक श्रेणीगत चर है।

आउटपुट:

आंशिक समूहन के साथ ggpair के साथ Bivariate विश्लेषण

नीचे दिया गया ग्राफ़ थोड़ा अलग है। हम ऊपरी तर्क के अंदर मैपिंग की स्थिति बदलते हैं।

ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"),title = "Bivariate analysis of revenue expenditure by the British household",upper = list(continuous = wrap("cor",size = 3),mapping = aes(color = children_fac)),lower = list(continuous = wrap("smooth",alpha = 0.3,size = 0.1)))

कोड स्पष्टीकरण

  • इसके अलावा पिछले उदाहरण के समान कोड:
  • मैपिंग = एईएस (रंग = बच्चों_फैक): सूची को ऊपरी = सूची () में स्थानांतरित करें। हम केवल ग्राफ़ के ऊपरी भाग में समूह द्वारा खड़ी की गई गणना चाहते हैं।

आउटपुट:

सारांश

हम नीचे दी गई तालिका में फ़ंक्शन को संक्षेप में प्रस्तुत कर सकते हैं:

पुस्तकालय

उद्देश्य

तरीका

कोड

आधार

द्विवार्षिक सहसंबंध

पियर्सन

cor(dfx2, method = "pearson")

आधार

द्विवार्षिक सहसंबंध

भाला धारण करनेवाला सिपाही

cor(dfx2, method = "spearman")

आधार

बहुभिन्नरूपी सहसंबंध

पियर्सन

cor(df, method = "pearson")

आधार

बहुभिन्नरूपी सहसंबंध

भाला धारण करनेवाला सिपाही

cor(df, method = "spearman")

हिम्मि

P मान

rcorr(as.matrix(data[,1:9]))[["P"]]

धीरे से

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

ggcorr(df)

बहुभिन्नरूपी भूखंड

cf code below

दिलचस्प लेख...