हिस्टोग्राम में डिब्बे की इष्टतम संख्या की गणना


79

मुझे एक विधि के इष्टतम के रूप में खोजने में दिलचस्पी है, मैं यह निर्धारित करने के लिए कर सकता हूं कि मुझे हिस्टोग्राम में कितने डिब्बे का उपयोग करना चाहिए। मेरे डेटा को अधिकतम 30 से 350 ऑब्जेक्ट तक होना चाहिए, और विशेष रूप से मैं थ्रेसहोल्ड (जैसे ओट्सु की विधि) को लागू करने की कोशिश कर रहा हूं, जहां "अच्छी" वस्तुएं, जिनके पास मुझे कम होना चाहिए और अधिक प्रसार होना चाहिए, से अलग हो गए हैं " खराब "वस्तुएं, जो मूल्य में अधिक घनी होनी चाहिए। एक ठोस मूल्य में प्रत्येक वस्तु के लिए 1-10 का स्कोर होगा। मैं स्कोर 6-10 के साथ 5-10 ऑब्जेक्ट और स्कोर 1-4 के साथ 20-25 ऑब्जेक्ट था। मैं एक हिस्टोग्राम बिनिंग पैटर्न ढूंढना चाहता हूं जो आम तौर पर ओट्सु की विधि को कम स्कोरिंग ऑब्जेक्ट्स को दहलीज करने की अनुमति देता है। हालाँकि, ओट्सु के कार्यान्वयन में मैंने देखा है, बिन आकार 256 था, और अक्सर मेरे पास बहुत कम डेटा बिंदु होते हैं जो 256, जो मुझे पता चलता है कि 256 एक अच्छा बिन नंबर नहीं है। इतने कम डेटा के साथ, उपयोग करने के लिए डिब्बे की संख्या की गणना के लिए मुझे क्या दृष्टिकोण अपनाना चाहिए?


मुझे लगता है कि स्टर्ज़ के नियम का उपयोग n <200 के लिए किया जा सकता है; जहाँ n टिप्पणियों की संख्या है
venkasub

जवाबों:


94

h=2×IQR×n1/3(maxmin)/hn

बेस आर में, आप उपयोग कर सकते हैं:

hist(x, breaks="FD")

इस विकल्प के बिना अन्य प्लॉटिंग पुस्तकालयों के लिए (उदाहरण के लिए ggplot2, आप) के रूप में इनकी गणना कर सकते हैं:

bw <- 2 * IQR(x) / length(x)^(1/3)

### for example #####
ggplot() + geom_histogram(aes(x), binwidth = bw)

2
@nico। R में डिफॉल्ट ब्रेक = "स्टर्ज" है जो हमेशा अच्छे परिणाम नहीं देता है।
रॉब ह्यंडमैन

4
कोई कैसे गणना करता है IQR?
कर्ट मुलर

1
@KurtMueller IQR का मतलब है इंटरक्वेर्टाइल रेंज। 1 चतुर्थक और 3 चतुर्थक के लिए देखो और अंतर IQR है। IQR पहले से ही R के साथ आता है इसलिए आप इसका उपयोग कर सकते हैं।
जियाओदाई

4
अगर मैं गलत नहीं हूं, तो जवाब पढ़ना चाहिएnum_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
जशा

1
nclass.FDनौ साल पहले अस्तित्व में नहीं था।
राब ह्यंडमैन

18

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

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

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

हिदेकी शिमजाकी का यह पृष्ठ एक वैकल्पिक विधि बताता है। यह गणना करने के लिए थोड़ा अधिक जटिल है, लेकिन लगता है कि यह बहुत अच्छा काम करेगा। पृष्ठ का शीर्ष भाग एक जावा ऐप है। अतीत को स्क्रॉल करें जो सिद्धांत और स्पष्टीकरण देखने के लिए, फिर कागजात के लिंक को खोजने के लिए स्क्रॉल करते रहें जो विधि की व्याख्या करते हैं।


हिडकी के पेज का लिंक टूटा हुआ है। मुझे यकीन नहीं है अगर यह एक ही बात है: Toyoizumilab.brain.riken.jp/hideaki/res/histogram.html
डैरेन डब्ल्यू

9

हो सकता है कि डेन्बी और मल्लो द्वारा " हिस्टोग्राम पर भिन्नता " पत्र रुचि के हों:

यह नया प्रदर्शन जिसे हम "dhist" (तिरछे-कटे हुए हिस्टोग्राम के लिए) कहते हैं, दोनों समान-चौड़ाई वाले hist और समान-क्षेत्र hist दोनों की वांछनीय विशेषताओं को संरक्षित करता है। यह ईग हिस्ट की तरह लंबे संकरे डिब्बे दिखाएगा जब डेटा में स्पाइक्स होंगे और सामान्य हिस्टोग्राम की तरह अलग-थलग दिखेंगे।

वे यह भी उल्लेख करते हैं कि R में कोड अनुरोध पर उपलब्ध है।


5

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

मैं समान बिन चौड़ाई के बजाय प्रत्येक बिन में समान अंकों के साथ हिस्टोग्राम प्रस्तुत करने का बहुत बड़ा प्रशंसक हूं। मुझे लगता है कि ये आमतौर पर डेटा को बेहतर ढंग से प्रदर्शित करते हैं, फिर निरंतर बिन चौड़ाई हालांकि वे उत्पादन करने में मुश्किल होते हैं।


1
क्षमा करें, मुझे यह उल्लेख करना चाहिए कि मुझे इसे स्वचालित तरीके से करने की आवश्यकता है। "कई बार ऐसा करने का विकल्प जब तक मुझे वह नहीं मिल जाता है जो मेरे उद्देश्य के लिए सबसे अच्छा है" मेरे लिए काम नहीं करेगा। कम्प्यूटेशनल रूप से किया जाना है ...
टोनी स्टार्क

4
मैं सहमत हूं - यह विचार कि एक "इष्टतम" बिन चौड़ाई एक विशाल सरलीकरण धारणा है।
हैडली

5

आपने शिमजाकी-शिनोमोटो विधि देखी ?

हालांकि यह कम्प्यूटेशनल रूप से महंगा लगता है, लेकिन यह आपको अच्छे परिणाम दे सकता है। यदि कम्प्यूटेशनल समय आपकी समस्या नहीं है तो यह एक कोशिश देने के लायक है। निम्नलिखित लिंक में जावा, MATLAB इत्यादि में इस पद्धति के कुछ कार्यान्वयन हैं, जो काफी तेजी से चलता है: वेब-इंटरफ़ेस


3

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


2

कृपया इस उत्तर को श्री रॉब हयंडमैन के उत्तर के पूरक के रूप में देखें ।

फ़्रीडमैन-डायकोनिस नियम या तो मूल आर या पैकेज का उपयोग करके सटीक समान अंतराल या 'बिनविथ्स' के साथ हिस्टोग्राम प्लॉट बनाने के लिए , हम फ़ंक्शन के मूल्यों में से एक का उपयोग कर सकते हैं । मान लीजिए कि हम फ्रीडमैन-डायकोनिस नियम का उपयोग करके डेटा से हिस्टोग्राम बनाना चाहते हैं । बेसिक R में हम उपयोग करते हैंggplot2hist()breaksqsecmtcars

x <- mtcars$qsec
hist(x, breaks = "FD")

इस बीच, ggplot2पैकेज में हम उपयोग करते हैं

h <- hist(x, breaks = "FD", plot = FALSE)
qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white"))

या, वैकल्पिक रूप से

ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white")

वे सभी हिस्टोग्राम प्लॉटों को ठीक उसी अंतराल और इरादों की संख्या के साथ उत्पन्न करते हैं।


-5

एयू जी / टी के लिए मेरे पास 600 अवलोकन हैं। बिन आकार 1 मुझे यह देता है:यहाँ छवि विवरण दर्ज करें

स्वचालित चयन (बिन सीमा को छोड़ें) यह देता है:यहाँ छवि विवरण दर्ज करें

डेटा पहले और दूसरे ग्राफ़ पर ओके दिखता है, जैसे कि डेटा अखंडता के साथ कोई समस्या नहीं है। केवल बिन आकार 0.1 (जी / टी) इस सवाल का जवाब देता है: माप गलत और अभेद्य दोनों थेयहाँ छवि विवरण दर्ज करें

मेरा निर्णय: 1. प्राकृतिक घटना के वास्तविक मूल्य को दिखाने के लिए पृथ्वी पर कोई माप तकनीक नहीं है। सभी माप अनुमानित हैं, कुछ सही मूल्य के करीब हैं। यह नमूना डिजाइन, अंशांकन, मानव योग्यता आदि पर निर्भर करता है। यही कारण है कि वितरण सममित के बजाय तिरछा है। 3. फिर भी, वितरण का आकार कम से कम लगभग "घंटी जैसा" खंड जैसा होना चाहिए। एक बार में एक घंटी (जब तक कि कई भूगर्भीय वातावरण न हों)। 4. बिन आकार हेरफेर के साथ वितरण वितरण पैटर्न को प्रकट करने में मदद कर सकता है कि माप कितने सटीक और सटीक थे। ताकि पत्थर पर एक नियम कटौती के बजाय बिन आकार के एक प्रायोगिक पिक की आवश्यकता हो।


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

2
आपने टिप्पणियां जोड़ दी हैं, लेकिन मैं यह स्पष्ट नहीं कर रहा हूं कि कोई भी उपयोगी नए विवरण को थ्रेड में योगदान देता है। 1. मेरे द्वारा ठीक है लेकिन यहाँ मुद्दा नहीं है। 2. 1. से पालन नहीं करता है क्योंकि कुछ वितरण लगभग सममित हैं। 3. संदिग्ध है: ऐसी कई स्थितियाँ हैं जहाँ घंटियों के अलावा अन्य आकृतियों की अपेक्षा की जाती है। 4. यह भी संदिग्ध है क्योंकि मूल माप की गुणवत्ता अक्सर किसी हिस्टोग्राम से स्पष्ट नहीं होती है, लेकिन अक्सर वितरण की बहुत अच्छी संरचना पर ध्यान देने के साथ सबसे अच्छी जांच की जाती है।
निक कॉक्स

2. वर्तमान में सममित सममित नहीं है। आप लगभग गर्भवती नहीं हो सकती हैं: या तो गर्भवती हैं या नहीं।
सर्गो कुसियानी

2
यकीन है, लेकिन डेटा में सटीक समरूपता इतनी दुर्लभ है कि अगर मैंने "सममित" कहा था तो किसी को यथोचित आपत्ति हो सकती है। यह लगभग आसानी से सममित होने के लिए है; यही कारण है कि हमारे पास तिरछा होने के उपाय कैसे और कैसे हैं।
निक कॉक्स

1
सुप्रसिद्ध, लेकिन आपकी टिप्पणी सामान्य थी और आपके द्वारा दिए गए संदर्भ का अभाव था। बदले में मैंने कहा "संदिग्ध" नहीं "गलत"। मेरी प्रमुख टिप्पणी यह ​​है कि आपका उत्तर वास्तव में बिन आकार या समान रूप से डिब्बे की संख्या का चयन करने के लिए थ्रेड में बहुत कुछ नहीं जोड़ता है। एक और उदाहरण है जिसमें यह मुश्किल है सवाल पर एक स्पिन है, वास्तव में एक जवाब नहीं है।
निक कॉक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.