आर में आउटलेर्स को कैसे हटाएं
आउटलायर एक ऐसा अवलोकन है जो डेटा सेट में अन्य मानों से असामान्य रूप से दूर होता है। आउटलेर्स समस्याग्रस्त हो सकते हैं क्योंकि वे विश्लेषण के परिणामों को प्रभावित कर सकते हैं।
यह ट्यूटोरियल बताता है कि आर में आउटलेर्स को कैसे पहचाना और हटाया जाए।
आर में आउटलेर्स की पहचान कैसे करें
इससे पहले कि आप आउटलेयर को हटा सकें, आपको पहले यह तय करना होगा कि आप किसे आउटलेयर मानते हैं। ऐसा करने के दो सामान्य तरीके हैं:
1. अंतरचतुर्थक श्रेणी का उपयोग करें।
इंटरक्वेर्टाइल रेंज (IQR) एक डेटा सेट में 75वें प्रतिशतक (Q3) और 25वें प्रतिशतक (Q1) के बीच का अंतर है। यह औसत 50% मूल्यों के वितरण को मापता है।
आप एक अवलोकन को बाह्य के रूप में परिभाषित कर सकते हैं यदि यह तीसरे चतुर्थक (Q3) के ऊपर अंतरचतुर्थक सीमा का 1.5 गुना है या पहले चतुर्थक (Q1) के नीचे अंतरचतुर्थक सीमा का 1.5 गुना है।
आउटलाइर्स = अवलोकन > Q3 + 1.5*IQR या <Q1 – 1.5*IQR
2. z-स्कोर का प्रयोग करें.
एक z-स्कोर आपको बताता है कि दिया गया मान माध्य से कितने मानक विचलन है। हम z-स्कोर की गणना के लिए निम्नलिखित सूत्र का उपयोग करते हैं:
z = (एक्स – μ) / σ
सोना:
- X एकल कच्चा डेटा मान है
- μ जनसंख्या माध्य है
- σ जनसंख्या मानक विचलन है
आप किसी अवलोकन को आउटलायर के रूप में परिभाषित कर सकते हैं यदि उसका z-स्कोर -3 से कम या 3 से अधिक है।
आउटलेयर = z-स्कोर वाले अवलोकन > 3 या < -3
आर में आउटलेर्स को कैसे हटाएं
एक बार जब आप तय कर लेते हैं कि आप किसे बाहरी मानते हैं, तो आप उन्हें पहचान सकते हैं और डेटासेट से हटा सकते हैं। यह कैसे करें यह समझाने के लिए, हम निम्नलिखित डेटा फ़्रेम का उपयोग करेंगे:
#make this example reproducible set.seed(0) #create data frame with three columns A', 'B', 'C' df <- data.frame(A=rnorm(1000, mean=10, sd=3), B=rnorm(1000, mean=20, sd=3), C=rnorm(1000, mean=30, sd=3)) #view first six rows of data frame head(df) ABC 1 13.78886 19.13945 31.33304 2 9.02130 25.52332 30.03579 3 13.98940 19.52971 29.97216 4 13.81729 15.83059 29.09287 5 11.24392 15.58069 31.47707 6 5.38015 19.79144 28.19184
फिर हम z-स्कोर विधि या इंटरक्वेर्टाइल रेंज विधि का उपयोग करके आउटलेर्स को परिभाषित और हटा सकते हैं:
Z-स्कोर विधि:
निम्नलिखित कोड दिखाता है कि डेटा फ़्रेम के प्रत्येक कॉलम में प्रत्येक मान के z-स्कोर की गणना कैसे करें और फिर उन पंक्तियों को हटा दें जिनमें 3 से अधिक पूर्ण मान के साथ कम से कम एक z-स्कोर है:
#find absolute value of z-score for each value in each column z_scores <- as.data.frame (sapply(df, function(df) (abs(df-mean(df))/sd(df)))) #view first six rows of z_scores data frame head(z_scores) ABC 1 1.2813403 0.25350805 0.39419878 2 0.3110243 1.80496734 0.05890232 3 1.3483190 0.12766847 0.08112630 4 1.2908343 1.32044506 0.38824414 5 0.4313316 1.40102642 0.44450451 6 1.5271674 0.04327186 0.70295309 #only keep rows in dataframe with all z-scores less than absolute value of 3 no_outliers <- z_scores[!rowSums(z_scores>3), ] #view row and column count of new data frame dim(no_outliers) [1] 994 3
मूल डेटा फ़्रेम में 1000 पंक्तियाँ और 3 कॉलम थे। नए डेटा फ़्रेम में 994 पंक्तियाँ और 3 कॉलम हैं, जो हमें बताता है कि 6 पंक्तियाँ हटा दी गईं क्योंकि उनके कॉलम में 3 से अधिक पूर्ण मान वाला कम से कम एक z-स्कोर था।
अंतरचतुर्थक श्रेणी विधि:
कुछ मामलों में, हम केवल डेटा फ़्रेम के कॉलम में आउटलेर्स की पहचान करना चाह सकते हैं। उदाहरण के लिए, मान लें कि हम केवल अपने डेटा फ़्रेम के कॉलम “ए” में बाहरी पंक्तियों को हटाना चाहते हैं।
निम्नलिखित कोड दिखाता है कि डेटा फ्रेम से पंक्तियों को कैसे हटाया जाए, जिसका कॉलम “ए” में मान तीसरे चतुर्थक (क्यू 3) के ऊपर इंटरक्वर्टाइल रेंज का 1.5 गुना या पहले चतुर्थक (क्यू 1) के नीचे इंटरक्वर्टाइल रेंज का 1.5 गुना है। .
#find Q1, Q3, and interquartile range for values in column A Q1 <- quantile(df$A, .25) Q3 <- quantile(df$A, .75) IQR <- IQR(df$A) #only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3 no_outliers <- subset(df, df$A> (Q1 - 1.5*IQR) & df$A< (Q3 + 1.5*IQR)) #view row and column count of new data frame dim(no_outliers) [1] 994 3
मूल डेटा फ़्रेम में 1000 पंक्तियाँ और 3 कॉलम थे। नए डेटा फ्रेम में 994 पंक्तियाँ और 3 कॉलम हैं, जो हमें बताता है कि 6 पंक्तियों को हटा दिया गया था क्योंकि उनमें कॉलम ए में कम से कम एक बाहरी हिस्सा था।
आउटलेर्स को कब हटाना है
यदि एक या अधिक आउटलेयर मौजूद हैं, तो आपको पहले यह सत्यापित करना होगा कि वे डेटा प्रविष्टि त्रुटि का परिणाम नहीं हैं। कभी-कभी कोई व्यक्ति डेटा सहेजते समय गलत डेटा मान दर्ज कर देता है।
यदि आउटलेयर डेटा प्रविष्टि त्रुटि का परिणाम बनता है, तो आप इसे एक नया मान निर्दिष्ट करने का निर्णय ले सकते हैं जैसे कि डेटा सेट का माध्य या माध्यिका ।
यदि मान वास्तव में एक बाहरी है, तो आप इसे हटाने का विकल्प चुन सकते हैं यदि इसका आपके समग्र विश्लेषण पर महत्वपूर्ण प्रभाव पड़ेगा। बस अपनी अंतिम रिपोर्ट या विश्लेषण में यह उल्लेख करना सुनिश्चित करें कि आपने एक बाहरी चीज़ हटा दी है।
अतिरिक्त संसाधन
इस ट्यूटोरियल में, हमने वेक्टर लंबाई n , जनसंख्या माध्य μ , और जनसंख्या मानक विचलन σ दिए गए सामान्य रूप से वितरित यादृच्छिक चर के वैक्टर उत्पन्न करने के लिए rnorm() का उपयोग किया। आप यहां इस सुविधा के बारे में अधिक जान सकते हैं.
हमने z-स्कोर की गणना करने वाले डेटा फ़्रेम में प्रत्येक कॉलम पर एक फ़ंक्शन लागू करने के लिए sapply() का भी उपयोग किया। आप यहां इस सुविधा के बारे में अधिक जान सकते हैं.