कुछ लोग लापता मूल्यों को बदलने के लिए -999 या -9999 का उपयोग क्यों करते हैं?


32

मेरे पास एक डेटासेट है। बहुत सारे लापता मूल्य हैं। कुछ स्तंभों के लिए, अनुपलब्ध मान को -999 के साथ बदल दिया गया था, लेकिन अन्य स्तंभों के लिए, अनुपलब्ध मान को 'NA' के रूप में चिह्नित किया गया था।

लापता मूल्य को बदलने के लिए हम -999 का उपयोग क्यों करेंगे?


1
मैंने खुद को कभी -999 नहीं देखा। अब तक मैंने खाली तार और एनए देखे हैं।
ये तियान

12
क्योंकि वे उन लोगों के लिए परिणामों को बुरी तरह से गड़बड़ करना चाहते हैं जो सतही विश्लेषण करते हैं और प्रलेखन को ध्यान से नहीं पढ़ते हैं! (हालांकि गंभीर होने के नाते, @ स्टेफ़न कोलासा का असली जवाब है।)
मैथ्यू गन

1
डेटासेट प्रदान करने वाले व्यक्ति से पूछें ...?
ब्लूराजा - डैनी पफ्लुगुएफ्ट

माप अभी तक लागू नहीं होने का संकेत देने के लिए माप स्तंभों में 999 मान बेहतर हैं ... कम से कम -999 या 0 का अर्थ अर्थ होगा कि यह मान्य / महत्वपूर्ण मूल्य नहीं है। 999 सिर्फ सबसे खराब है।
एडम मार्टिन

मुझे ऐसा लगता है कि मैंने एक बार पढ़ा था कि यह पंच कार्ड पर डेटा रिकॉर्ड करने के दिनों से एक सम्मेलन था। 9s की एक पूरी पंक्ति को मारकर गायब हुए डेटा को स्पष्ट रूप से दिखाई दे रहा था जब कार्ड को देख रहा था क्योंकि यह सचमुच "लापता पंक्ति" थी। मुझे इसे वापस करने का संदर्भ नहीं मिल रहा है, इसलिए मैं इसे टिप्पणी के रूप में छोड़ दूंगा।
लुकास

जवाबों:


65

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

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

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

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

Moral: -999 के रूप में लापता मानों को एनकोड न करें


1
इसके अलावा पहले के समय से एक होल्डआउट होने की संभावना है, ऐसे लोग हैं जिन्होंने कभी नहीं सीखा है कि लापता मूल्यों का स्पष्ट प्रतिनिधित्व मौजूद है, और इसलिए, जब उन्हें एक लापता मूल्य सम्मिलित करने की आवश्यकता होती है, तो यह जानने के लिए कि उपयोग की जाने वाली वस्तु किसी प्रकार का फर्जी है। नंबर।
कोडियोलॉजिस्ट

9
यह सिर्फ एक पकड़ वाली बात नहीं है। अगर मैं डेटा के कुछ हेरफेर करने के लिए एक उपकरण लिख रहा हूं, तो संख्याओं के स्तंभों में पढ़ना किसी भी प्रोग्रामिंग भाषा के बारे में आसान है। मानों को पढ़ना, गैर-संख्यात्मक मानों का पता लगाना, और तदनुसार उन्हें पार्स करना काफी अधिक समय लेता है। और अगर आपको लगता है -9999 mucks आँकड़ों के साथ, मेरे समूह के साथ काम मैं अमान्य मूल्यों के लिए 1e32 का उपयोग करने का एक प्यार विकसित किया है। मुझे बताएं कि जब आप ऐसा करते हैं तो आपके विचरण का क्या होता है!
Cort Ammon - मोनिका

1
बढ़िया, सक्सेस जवाब। लेकिन कुछ ऐतिहासिक विवरणों को जोड़ने से यह और भी बेहतर जवाब हो सकता है। बेशक, कि कुछ शोध ले जाएगा। :)
tchakravarty

1
इस तरह के एन्कोडिंग का उपयोग कुछ अन्य प्रकार की माप त्रुटि को दर्शाने के लिए भी किया जा सकता है; यानी "मशीन काम नहीं कर रही थी" बनाम "कोई भी माप करने के लिए नहीं था"।
हाओ ये

1
@qqqwww: गुमनामी को इंगित करने और ऐसी प्रविष्टियों को असली गुमशुदगी या NA में बदलने के लिए उपयोग किए जाने वाले मूल्य का पता लगाना सबसे अच्छा होगा। संख्यात्मक डेटा का विवेक आमतौर पर एक अच्छा विचार नहीं है।
एस। कोलासा - मोनिका

24

ऐसे मान डेटाबेस के लिए हैं। अधिकांश डेटाबेस बहुत पहले, और आज कई, पूर्णांक-मूल्यवान डेटा के लिए अंकों की एक निश्चित संख्या आवंटित करते हैं। -999 जैसी एक संख्या सबसे छोटी है जिसे चार वर्णों में संग्रहीत किया जा सकता है, -9999 पाँच वर्णों में, और इसी तरह।

(यह कहे बिना जाना चाहिए कि - परिभाषा के अनुसार - एक संख्यात्मक क्षेत्र "NA" जैसे अल्फ़ान्यूमेरिक वर्णों को संग्रहीत नहीं कर सकता है। कुछ संख्यात्मक कोड का उपयोग लापता या अमान्य डेटा का प्रतिनिधित्व करने के लिए किया जाना है।)

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

ऐसी गलती कैसे हो सकती है? यह हर समय होता है जब सिस्टम के बीच डेटा का आदान-प्रदान होता है। एक सिस्टम जो मानता है -9999 एक लापता मूल्य का प्रतिनिधित्व करता है, उस मूल्य को उस समय आउटपुट देगा जब आप सीएसवी जैसे अधिकांश स्वरूपों में डेटा लिखते हैं। ऐसी प्रणाली जो पढ़ती है कि CSV फ़ाइल ऐसे मानों को लापता मानने के लिए "पता नहीं" (या "बताया गया" नहीं) हो सकती है।

एक और कारण यह है कि अच्छे सांख्यिकीय डेटा और कंप्यूटिंग प्लेटफ़ॉर्म कई अलग-अलग प्रकार के लापता मानों को पहचानते हैं: NaN, सही मायने में लापता मूल्य, ओवरफ्लो, अंडरफ्लो, गैर-प्रतिक्रियाएं, आदि। सबसे नकारात्मक संभव मान (जैसे -9999), को समर्पित करके इन पर 9998, -9997, आदि। आप किसी भी तालिका या सरणी से सभी लापता मानों को क्वेरी करना आसान बनाते हैं।

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


उपयोगी निहितार्थ और सामान्यीकरण हैं:

  • -10303

  • नई परिस्थितियों में NoData कोड का आविष्कार करना आसान बनाने के लिए इस प्रकार का एक मानक नियम अपनाएं (जब आप अपना खुद का डेटाबेस सॉफ्टवेयर डिजाइन कर रहे हों)।

  • अपने सॉफ़्टवेयर और सिस्टम को नाटकीय रूप से विफल करने के लिए डिज़ाइन करें यदि वे बिल्कुल विफल हो जाते हैं। सबसे खराब कीड़े वे हैं जो आंतरायिक, यादृच्छिक या छोटे हैं, क्योंकि वे अनिर्धारित हो सकते हैं और नीचे शिकार करना मुश्किल हो सकता है।


2
NaN-10303

NaN एक संख्या नहीं है, NA कम से कम R
llrs

1
सिद्धांत में IEEE फ़्लोट विभिन्न प्रकार के NaN का समर्थन करता है जो विभिन्न प्रकार के गुम / अमान्य डेटा के टैग के रूप में अच्छी तरह से काम करेगा। व्यवहार में अधिकांश प्रोग्रामिंग भाषाओं में ऐसे NaN को अलग करने के लिए उचित समर्थन की कमी होती है और उस अतिरिक्त जानकारी को खोने का खतरा होता है।
कोडइन्चोस

वास्तव में डेटाबेस द्वारा उपयोग की जाने वाली योजना में किसी भी स्थान को साइन बिट के अलावा बहुत अच्छा नहीं लिया गया। वे 00-99 अंकों की जोड़ियों में टूट जाते हैं और उन्हें संख्या के रूप में मानते हैं; लेकिन अगर संख्या नकारात्मक थी, तो वे संख्या के बजाय 255 - # स्टोर करेंगे। इसके अलावा 127 और 128 का उपयोग +/- inf के लिए किया गया था।
जोशुआ

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

13

आप लापता मानों को एनकोड करने के लिए कुछ भी उपयोग कर सकते हैं । कुछ सॉफ़्टवेयर, जैसे R, लापता डेटा को एनकोड करने के लिए विशेष मान का उपयोग करते हैं, लेकिन सॉफ़्टवेयर पैकेज भी हैं, जैसे SPSS, जिसमें गुम डेटा के लिए कोई विशेष कोड नहीं है। दूसरे मामले में आपको ऐसे मूल्यों के लिए मनमानी पसंद करने की आवश्यकता है । आप कुछ भी चुन सकते हैं , लेकिन आम तौर पर यह एक अच्छा विचार है कि कुछ मूल्य चुनें जो आपके डेटा से अलग-अलग होते हैं (जैसे कि आपका डेटा 0-100 रेंज में प्रतिशत है, इसलिए आप लापता डेटा को एन्कोडिंग के लिए 999 चुनते हैं, या आपका डेटा मानव आयु है और आप लापता टिप्पणियों के लिए नकारात्मक मूल्यों का उपयोग करते हैं)। इसके पीछे विचार यह है कि ऐसा करने से आपको यह नोटिस करने में सक्षम होना चाहिए कि क्या कुछ गलत हुआ है और नंबर नहीं जुड़ते हैं।

इस तरह के एन्कोडिंग के साथ समस्या यह है कि आप वास्तव में विशेष एन्कोडिंग को नोटिस नहीं कर सकते हैं और बकवास परिणामों के साथ समाप्त हो सकते हैं।


2

क्या डेटासेट में गणना किए गए चर हैं? या यह एक विश्लेषणात्मक डेटासेट है जो फॉर्म मर्ज किए गए / सॉर्ट किए गए डेटा के रूप में आता है? कुछ सॉफ्टवेयर लापता डेटा को निरूपित करने के लिए बहुत बड़े नकारात्मक मानों का उपयोग करते हैं। लेकिन अन्य सॉफ़्टवेयर NA या के साथ लापता मान बनाता है .। जब वे असंतुष्ट होते हैं, तो आमतौर पर कुछ पोस्ट प्रोसेसिंग में असहमति होती है।


2

बेशक, एसपीएसएस में, लापता मूल्य (ओं) 999 या जो भी आईएस एक विशेष लापता कोड के रूप में टैग किया गया है और अन्य मूल्यों से अलग संभाला है। इसे अलग से सारणीबद्ध किया जा सकता है या पूरी तरह से बाहर रखा जा सकता है। शून्य विभाजन या लॉग (0) जैसी चीजों के परिणाम से एक अंतर किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.