एक गाऊसी घंटी-वक्र के लिए संख्याओं का एक सेट मजबूर करना


9

( यह स्टैक ओवरफ्लो पर मेरी प्रोग्रामिंग प्रश्न से संबंधित है : बेल कर्व गॉसियन एल्गोरिथम (पायथन और / या सी #) ।)

Answers.com पर, मुझे यह सरल उदाहरण मिला:

  1. अंकगणित माध्य (औसत) => सेट में सभी मानों का योग, सेट में तत्वों की संख्या से विभाजित करें
  2. सेट में सभी मानों के वर्गों का योग ज्ञात कीजिए
  3. सेट में तत्वों की संख्या से अधिक (2) का उत्पादन विभाजित करें
  4. (3) के आउटपुट से माध्य (1) के वर्ग को घटाएं
  5. (4) के परिणाम का वर्गमूल लें

उदाहरण: A = {1,3,4,5,7} सेट करें

  1. (१ + ३ + ४ + ५ + 4) / ५ = ४
  2. (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 * 100
  3. 100/5 = 20
  4. 20 - 4 * 4 = 20-16 = 4
  5. SQRT (4) = 2

(यह wiki.answers.com की एक पोस्ट से आया है ।)

अब यह सब देखते हुए, मैं उपरोक्त डेटा को घंटी वक्र (जैसे क्रेडिट स्कोर) से 200 से 800 तक कैसे फिट कर सकता हूं। जाहिर है कि उपरोक्त सेट में संख्या 5 500 होगी। लेकिन फिर यह निर्धारित करने के लिए क्या फार्मूला है 3 एक ही पैमाने पर होना चाहिए। भले ही मूल सेट सेट ए = {1,3,4,5,7} एक घंटी-वक्र नहीं है, मैं इसे घंटी-वक्र में मजबूर करना चाहता हूं।

कल्पना कीजिए कि ये 5 लोगों के स्कोर हैं। अगले महीने स्कोर निम्नानुसार बदल सकते हैं: सेट A2={1,2,4,5,9}(एक लोग एक बिंदु खो देता है, और शीर्ष लड़का दो और अंक प्राप्त करता है - अमीर अमीर हो जाता है और गरीब गरीब हो जाता है)। फिर शायद एक नया लड़का सेट में आता है: सेट A3={1,2,4,5,8,9}


2
यदि आपका सेट समय-समय पर बदलता है तो इसे उसी घंटी-वक्र में फिट करना असंभव है। मान लीजिए आपके पास सेट हैA={1,2,3,4}, इसलिए 4 को 800 होना चाहिए, लेकिन अगर एक नया अवलोकन 5 आता है, तो यह 800 हो जाना चाहिए।
एमपीआईसीटी

1
CrossValidated, NealWalters में आपका स्वागत है। आपको लग सकता है कि एक सांख्यिकीविद् "मैं यह कैसे करूँ" पूछने के लिए एक सामान्य प्रतिक्रिया है "आप ऐसा क्यों करना चाहते हैं?"
onestop

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

आपकी पिछली टिप्पणी को पढ़कर, मुझे आश्चर्य है कि दृष्टिकोण क्या सबसे अच्छा है: उदाहरण दें, प्रत्येक ऋण के लिए 1 अंक का भुगतान किया गया, अन्य बातों के लिए अन्य बिंदु, फिर अंत में भारी स्कोर को वश में करने का प्रयास करें, या शायद प्रत्येक घटक के साथ कुछ अधिक सार्थक करें अंतिम स्कोर बनाता है? उदाहरण के लिए, यदि आप भुगतान किए गए ऋणों के लिए अंक देते हैं, तो आप लॉग (1 + नंबरऑफ़लवांसपेडऑफ) के रूप में अपने ऋण भुगतान बंद (एलपीओ) बिंदुओं की गणना कर सकते हैं। तो शून्य भुगतान वाले किसी व्यक्ति को 0 का एलपीओ मिलता है, किसी को 3 ऋणों का भुगतान किया जाता है, जिसे 1.1 का एलपीओ मिलता है, जबकि 100 ऋणों वाले किसी व्यक्ति को 4.6 का एलपीओ मिलता है। कैप एलपीओ 5. पर
वेन

जवाबों:


13

एक मापी गई सीमा , जैसे 200 से 800 (सैट के लिए, उदाहरण के लिए ), माप की इकाइयों का सिर्फ एक बदलाव है । (यह फारेनहाइट के तापमान को सेल्सियस में बदलने वाले तापमान की तरह ही काम करता है।)

500 का मध्य मान डेटा के औसत के अनुरूप है। जब यह डेटा सामान्य वितरण ("बेल कर्व") का पालन करता है, तो सीमा लगभग 99.7% डेटा के अनुरूप होती है । यह डेटा के 8/9 ( चेबीशेव की असमानता ) को शामिल करने की गारंटी है ।

इस मामले में, सूत्र 1-5 डेटा के मानक विचलन की गणना करता है। यह मूल डेटा के लिए माप की एक नई इकाई है। इसे नए पैमाने में 100 इकाइयों के अनुरूप होने की जरूरत है। इसलिए, एक मूल मान को स्केल किए गए मान में बदलने के लिए,

  • औसत घटाएं।

  • मानक विचलन द्वारा विभाजित करें।

  • 100 से गुणा करें।

  • 500 जोड़ें।

यदि परिणाम सीमा से परे है [200,800] आप या तो इसका उपयोग कर सकते हैं-या "दबाना" कर सकते हैं इसे रेंज तक 200 तक, 800 से नीचे तक।

उदाहरण में , डेटा का उपयोग करना{1,3,4,5,7}औसत है 4 और एसडी है 2। इसलिए, rescaling पर,1 हो जाता है (14)/2100+500=350। संपूर्ण पुनर्विकसित डेटासेट, समान रूप से गणना की जाती है{350,450,500,550,650}

जब मूल डेटा को एक अलग गैर-सामान्य तरीके से वितरित किया जाता है, तो आपको एक और दृष्टिकोण की आवश्यकता होती है । अब आप औसत या एसडी की गणना नहीं करते हैं। इसके बजाय, 1 (सबसे छोटी) से, तक सभी स्कोर क्रम में रखेंnध (सबसे बड़ा)। ये उनके रैंक हैं । किसी भी रैंक को कन्वर्ट करेंiइसके प्रतिशत में (i1/2)/n। (उदाहरण में,n=5 और डेटा पहले से ही रैंक क्रम में हैं i=1,2,3,4,5। इसलिए उनका प्रतिशत है1/10,3/10,5/10,7/10,9/10, अक्सर समान रूप से लिखा जाता है 10%,30%, आदि) किसी भी प्रतिशत के बीच (बीच में) 0 तथा 1, जरूरी) एक सामान्य मात्रा है । इसकी गणना सामान्य क्वांटाइल फ़ंक्शन के साथ की जाती है , जो त्रुटि फ़ंक्शन से निकटता से संबंधित है । (सरल संख्यात्मक अनुमान कोड के लिए सीधे हैं।) इसके मूल्य, जो आमतौर पर -3 और 3 के बीच होंगे, को श्रेणी में (पहले की तरह) फिर से विभाजित किया जाना है।[200,800]। इसे पहले सामान्य मात्रा को 100 से गुणा करें और फिर 500 को जोड़ दें।

सामान्य मात्रात्मक फ़ंक्शन कई कंप्यूटिंग प्लेटफार्मों में उपलब्ध है, जिसमें स्प्रेडशीट ( उदाहरण के लिए एक्सेल का मानदंड ) शामिल हैं। उदाहरण के लिए, डेटा के लिए सामान्य मात्राएँ (या "सामान्य स्कोर"){1,3,4,5,7} कर रहे हैं {372,448,500,552,628}

यह " सामान्य स्कोरिंग " दृष्टिकोण हमेशा 200 और 800 के बीच स्कोर देगा जब आपके पास 370 या कम मान होंगे। जब आपके पास 1111 या उससे कम मान होते हैं, तो सभी उच्चतम और निम्नतम में 200 और 800 के बीच स्कोर होंगे।


+1, मैंने अपना उत्तर हटा दिया है, क्योंकि आपका रास्ता बेहतर था और मेरा अप्रचलित हो गया :)
mpiktas

आपको 1-5 में 5 कहां मिल रहे हैं? 4 औसत है। क्या यह 1-4 होना चाहिए? मैं आज पायथन के साथ परीक्षण कर रहा हूं, फिर से धन्यवाद।
नीलवैल्ट्स 15

@NealWalters क्षमा करें, वह उंगली की एक पर्ची थी। मैंने इसे अब ठीक कर दिया है इसलिए यह (1-4) / 2 * 100 + 500 पढ़ता है।
whuber

4

आप इस दृष्टिकोण को आजमा सकते हैं - अपने डेटा सेट को मान -1 और +1 के बीच की सीमा पर सामान्यीकृत करें:

(individual_valuemin_of_all_valuesmax_of_all_valuesmin_of-all_values0.5)2.
यह आपके डेटा में प्रत्येक मान को -1 और +1 के बीच के मान में बदल देगा, वास्तविक अधिकतम और न्यूनतम मान क्रमशः +1 और -1 पर सेट किए जाएंगे, और फिर इन +1 और -1 मानों को +0.9999 पर रीसेट किया जाएगा। (-0.9999 (गणना के लिए आवश्यक)

फिर उपरोक्त सामान्यीकृत मूल्यों में से प्रत्येक के लिए फिशर परिवर्तन को "बल" के लिए लागू करें जो लगभग एक सामान्य वितरण के अनुरूप है, और फिर 200 और 800 के बीच मूल्य में रेंज करने के लिए इनमें से प्रत्येक फिशर ट्रांसफ़ॉर्म मान को "अन-नॉर्मलाइज़" करें:

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

एसओ और स्केलेबिलिटी के मुद्दे पर अपने मूल प्रश्न का संदर्भ देते हुए, इस दृष्टिकोण का लाभ यह है कि बशर्ते कोई भी नया डेटा बिंदु अपने आप में डेटा सेट के लिए एक नया अधिकतम या न्यूनतम नहीं है क्योंकि आप उपरोक्त गणनाओं को नए डेटा बिंदु पर लागू कर सकते हैं मूल डेटा सेट के किसी भी मौजूदा स्कोर को प्रभावित किए बिना 200 और 800 के बीच अपना स्कोर प्राप्त करने के लिए। यदि एक नया डेटा बिंदु एक नया अधिकतम या न्यूनतम है, तो आपको इस नए "सामान्य" अधिकतम या न्यूनतम मूल्य के साथ सेट किए गए पूरे डेटा के लिए स्कोर पुनर्गणना करना होगा।

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