आर

2012-05-23 11 views
10

में एनए मानों के साथ क्लस्टरिंग मुझे आश्चर्य हुआ कि claralibrary(cluster) से एनएएस की अनुमति देता है। लेकिन फ़ंक्शन प्रलेखन यह मानता है कि यह इन मानों को कैसे प्रबंधित करता है।आर

तो मेरी प्रश्न हैं:

  1. clara कैसे संभालती NAS?
  2. क्या यह किसी भी तरह से kmeans (नास की अनुमति नहीं है) के लिए उपयोग किया जा सकता है?

[अपडेट] clara समारोह में कोड की तो मैंने पाया था कि लाइनों:

inax <- is.na(x) 
valmisdat <- 1.1 * max(abs(range(x, na.rm = TRUE))) 
x[inax] <- valmisdat 

जो valmisdat द्वारा मूल्य प्रतिस्थापन याद आ रही है। यकीन नहीं है कि मैं इस सूत्र का उपयोग करने के कारण को समझता हूं। कोई विचार? क्या प्रत्येक कॉलम द्वारा अलग-अलग एनएएस का इलाज करने के लिए यह "प्राकृतिक" होगा, शायद औसत/औसत के साथ बदलना?

उत्तर

7

हालांकि स्पष्ट रूप से नहीं बताया गया है, मुझे विश्वास है कि NA?daisy सहायता पृष्ठ में वर्णित तरीके से संभाला जाता है। विवरण अनुभाग है:

डेज़ी एल्गोरिथ्म में, x की एक पंक्ति में लापता मूल्यों असमानताओं को बताया उस पंक्ति को शामिल में शामिल नहीं हैं।

को देखते हुए आंतरिक रूप से एक ही कोड clara() द्वारा किया जा रहा हो जाएगा कि मैं कैसे समझते हैं कि डेटा में NA रों संभाला जा सकता है - वे बस गणना में हिस्सा नहीं लेते। यह ऐसे मामलों में आगे बढ़ने का एक उचित मानक तरीका है और उदाहरण के लिए गॉवर के सामान्यीकृत समानता गुणांक की परिभाषा में उपयोग किया जाता है।

अद्यतनclara.c के लिए C सूत्रों स्पष्ट रूप से संकेत मिलता है कि यह (ऊपर) कैसे NA रों clara() (लाइनों ./src/clara.c में 350-356) द्वारा नियंत्रित किया जाता है है: सुनिश्चित नहीं

if (has_NA && jtmd[j] < 0) { /* x[,j] has some Missing (NA) */ 
     /* in the following line (Fortran!), x[-2] ==> seg.fault 
      {BDR to R-core, Sat, 3 Aug 2002} */ 
     if (x[lj] == valmd[j] || x[kj] == valmd[j]) { 
     continue /* next j */; 
     } 
    } 
+0

'क्लैसी' फ़ंक्शन में 'डेज़ी' में अनुपलब्ध मानों का इलाज करने के लिए समान कोड लाइनें (मेरा प्रश्न अपडेट देखें)। –

+0

@ danas.zuokas मुझे यकीन नहीं है कि स्रोत से उन कोडों की मनमानी रेखाओं को खींचना कितना उपयोगी है जो आपको लगता है कि प्रश्न से संबंधित है। आपको आर कोड और सी कोड दोनों का अध्ययन करने की आवश्यकता है। 'valmisdat' वह मान है जो सीए कोड में लापता डेटा (' एनए ') को इंगित करने के लिए उपयोग किया जाता है, बजाय इसे' एनए 'का उपयोग करने के बजाय। यदि आप सी कोड देखते हैं तो आप देखेंगे कि यह स्पष्ट रूप से उन तुलनाओं को अनदेखा करता है जहां एक चर के पास एक या दूसरे या दोनों नमूनों के लिए अनुपलब्ध मूल्य होता है जिसके लिए असमानता की गणना की जा रही है। कोड में पॉइंटर के लिए अद्यतन उत्तर देखें। –

+0

धन्यवाद, गेविन! –

3

अगर kmeans संभाल कर सकते हैं एक पंक्ति में लापता मूल्यों को अनदेखा करके डेटा खोना।

kmeans में दो चरण हैं;

  1. अवलोकन और मूल क्लस्टर माध्य के बीच की दूरी की गणना करना।
  2. नई गणना अवधि को नए गणना की दूरी के आधार पर अपडेट करना।

हम अवलोकन के गुम डेटा उपलब्ध होने पर: चरण 1 clara/pam/daisy पैकेज में के रूप में उचित रूप से दूरी मीट्रिक का समायोजन करके नियंत्रित किया जा सकता है। लेकिन चरण 2 केवल तभी किया जा सकता है जब हमारे पास अवलोकन के प्रत्येक कॉलम के लिए कुछ मूल्य हो। इसलिए लापता डेटा को सौदा करने के लिए kmeans के लिए आने वाला अगला सबसे अच्छा विकल्प हो सकता है।

0

क्लारा सी कोड को देखकर, मैंने देखा कि क्लारा एल्गोरिदम में, जब अवलोकनों में अनुपलब्ध मूल्य होते हैं, तो वर्गों का योग गुम मूल्यों की संख्या के अनुपात में "कम" होता है, जो मुझे लगता है कि गलत है! clara.c की लाइन 646 "dsum * = (nobs/pp)" की तरह है जो दिखाती है कि यह प्रत्येक जोड़ी के अवलोकन (nobs) में गैर-अनुपलब्ध मानों की संख्या की गणना करता है, इसे चर (पीपी) की संख्या से विभाजित करता है और इसे गुणा करता है वर्गों का योग मुझे लगता है कि यह अन्य तरीकों से किया जाना चाहिए, यानी "dsum * = (पीपी/नोम्स)"।

+1

आप अपने पिछले उत्तर को संपादित करने के लिए [संपादित करें लिंक] (https://stackoverflow.com/posts/35925440/edit) का उपयोग कर सकते हैं। – zero323