2010-09-26 6 views
18

मैं सभी संख्यात्मक मान के साथ एक data.frame पर cor() चल रहा हूँ और मैं परिणाम के रूप में इस हो रही है:कोर सहसंबंधों के लिए केवल एनए या 1 दिखाता है - क्यों?

 price exprice... 
price  1  NA 
exprice NA  1 
... 

तो यह जिसके परिणामस्वरूप तालिका में प्रत्येक मूल्य के लिए या तो 1 या NA है। NA एस वैध सहसंबंधों के बजाय क्यों दिख रहे हैं?

उत्तर

21

1 एस क्योंकि सब कुछ पूरी तरह से संबंधित है, और NA एस हैं क्योंकि आपके चर में NA एस हैं।

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

आप इस व्यवहार को use तर्क के साथ cor पर बदल सकते हैं, विवरण के लिए ?cor देखें।

11

एनएएस भी दिखाई देते हैं यदि शून्य भिन्नता वाले गुण हैं (सभी तत्वों के बराबर के साथ); उदाहरण के लिए देखें:

cor(cbind(a=runif(10),b=rep(1,10))) 

जो रिटर्न:

a b 
a 1 NA 
b NA 1 
Warning message: 
In cor(cbind(a = runif(10), b = rep(1, 10))) : 
    the standard deviation is zero 
+0

मैं इस समस्या हो रही है। ऐसा गणितीय रूप से समझ में आता है कि सहसंबंध की गणना भिन्नता से की जाती है इसलिए एनए शून्य भिन्नता के लिए। लेकिन तार्किक रूप से दो तत्व अभी भी संबंधित हैं भले ही भिन्नता शून्य हो। नहीं? उदाहरण के लिए मैं यह देखने की कोशिश कर रहा हूं कि कौन सा आइटम बिक्री हर दिन तापमान से सहसंबंधित है। और कुछ वस्तुओं के लिए एक ही बिक्री है। इसलिए शून्य भिन्नता। लेकिन एनए तर्कसंगत रूप से गलत लगता है। – urwaCFC

24

सहसंबंध को बताएँ use तर्क के साथ NAS अनदेखी करने के लिए, जैसे:

cor(data$price, data$exprice, use = "complete.obs") 
1

एनए वास्तव में हो सकता है 2 कारणों की वजह से । एक यह है कि आपके डेटा में एक एनए है। एक और कारण है कि मूल्यों में से एक स्थिर है। इसके परिणामस्वरूप मानक विचलन शून्य के बराबर होता है और इसलिए कोर फ़ंक्शन एनए देता है।

1

बहुत ही सरल और सही जवाब

सहसंबंध उपयोग तर्क के साथ NAS अनदेखी करने के लिए बताओ, उदा .:

cor(data$price, data$exprice, use = "complete.obs") 
संबंधित मुद्दे