2012-11-11 35 views
7

इस बार मैं अपने प्रश्नों में से पहले किए गए आउटलेटर्स का पता लगाने के तरीके पर सीधा सवाल नहीं पूछूंगा। मैंने इस विषय से संबंधित कुछ पोस्ट पढ़ीं लेकिन मुझे जो चाहिए वह नहीं मिला। मैं मानों का एक सेट जो नीचे दिए गए हैं है:यूनिवर्सेट बाहरी पहचान

y<-c(0.59, 0.61, 0.59, 1.55, 1.33, 3.50, 1.00, 1.22, 2.50, 3.00, 3.79, 3.98, 4.33, 4.45, 4.59, 4.72, 4.82, 4.90, 4.96, 7.92, 5.01, 5.01, 4.94, 5.05, 5.04, 5.03, 5.06, 5.10, 5.04, 5.06, 7.77, 5.07, 5.08, 5.08, 5.12, 5.12, 5.08, 5.17, 5.18) 

अब के रूप में शोधकर्ताओं के सबसे का कहना है कि बाहरी का पता लगाने की प्रक्रिया न केवल डेटा पर, लेकिन यह भी संदर्भ पर निर्भर करता। मैंने आर जैसे आउटलायर्स (ग्रब टेस्ट), चरमपंथी, mvoutlier (पीसीओटी विधि) से कई पैकेजों का उपयोग किया है लेकिन उन्हें उपयोग करने का सबसे अच्छा तरीका नहीं मिला। यहां इस मामले में (मेरी आवश्यकताओं के आधार पर), 7.77 (ओब्स नो 31), 7.9 2 (20 पर ऑब्जेक्ट), और 3.50 (ओब्स नो 6) आउटलाइर्स हैं। आउटलायर्स पैकेज के ग्रब परीक्षण का उपयोग करके मैं 7.77 और 7.9 2 को आउटलाइन के रूप में देख सकता हूं लेकिन 3.50 नहीं। मुझे नहीं पता कि मैं यहां अपना डेटा प्लॉट पोस्ट कर सकता हूं या नहीं, लेकिन साजिश या वितरण पर डेटा की प्रवृत्ति को देखने के बाद, अवलोकन संख्या 6 एक बाहरी के रूप में स्पष्ट होगा।

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

मेरा प्रश्न बहुत आसान है। क्या यह संभव है कि मैं कुछ मानक पैकेज के साथ इन 3 आउटलाइजर्स का पता कैसे लगा सकता हूं या इन आउटलाइर्स का पता लगाने में सहायता के लिए मैं अपने गैर रेखीय जेनरेट मॉडल का उपयोग कैसे कर सकता हूं?

सादर

शहजाद

enter image description here

+0

क्या आपने MASS पैकेज में आरएलएम का उपयोग करने के बजाय एक मजबूत रैखिक प्रतिगमन करने के लिए विचार किया है? – tcash21

+1

@ tcash21 हां मैंने इसका इस्तेमाल किया है और यह एक रैखिक प्रतिगमन है। मेरे पास nlrob (मजबूत गैर रेखीय प्रतिगमन) भी है लेकिन जेनरेट मॉडल के साथ उल्लिखित आउटलाइनरों का पता लगाने का कोई तरीका नहीं मिला। – Shahzad

उत्तर

4
library(TSA) 
ar = TSA::arima(y, c(1,0,0)) 
detectAO(ar) 

वास्तव में पता चलता है इन 3 अंक (ind संभव बाहरी कारकों के कारण के सूचकांकों है):

> detectAO(ar) 
      [,1]  [,2]  [,3] 
ind  6.000000 20.000000 31.000000 
lambda2 4.739695 5.957604 5.490739 

लेकिन यह लागू करने के लिए सावधान रहना होगा किसी भी प्रकार के डेटा के लिए दृष्टिकोण ।

+0

धन्यवाद। नियमित अरमा आदेश (यहां 1,0,0 के रूप में) डेटा पर निर्भर करता है? – Shahzad

+0

मेरा मतलब है कि आपको अपने डेटा की प्रकृति को समझना चाहिए। – redmode

+0

उदाहरण के लिए: 'पूर्वानुमान' लाइब्रेरी से 'auto.arima() 'फ़ंक्शन मॉडल के वर्ग में सर्वश्रेष्ठ ARIMA मॉडल की खोज करता है।लेकिन इस तरह के अनुमान का उपयोग करके आप बहिष्कारों का पता लगाने में सक्षम नहीं होंगे, जहां तक ​​इन बिंदुओं को सामान्य डेटा के रूप में माना जाएगा, जिन्हें मॉडल के साथ फिट किया जाना चाहिए, लेकिन आउटलेटर्स नहीं। – redmode

5

बस यह कहने के लिए कि मैंने उपरोक्त सुझाव के अनुसार detectAO() का उपयोग करने की कोशिश की है और इसे मेरे डेटा के साथ कुछ भी नहीं मिला (जो कुछ हद तक समान दिखता था: एक छोटी सी प्रवृत्ति लगातार चलती है)। चारों ओर घूमने के बाद, मैंने पाया कि हेमपेल फ़िल्टर (पैकेज पैकेज pracma से) जो मुझे चाहिए वह कर सकता था। मैंने सोचा कि अगर कोई और समाधान ढूंढ रहा है तो मैं इसे यहां जोड़ दूंगा।

0
install.packages("forecast")   
library(forecast) 
tsoutliers(data) 

आर में ये तीन कोड आपके प्रश्न का उत्तर देंगे। उसके बाद tsclean(data) आपके डेटा को साफ़ कर देगा। अभी भी समस्या मौजूद है

install.packages("forecast") 
library(forecast) 
t_s<- ts(y) 
plot(t_s) 
tsoutliers(t_s) 
t_s_new<-tsclean(t_s) 
plot(t_s_new) 

हैं, मेरे पास वापस पाने:

कदम इस प्रकार हैं। मैं अधिक परिष्कृत बाहरी डिटेक्टर प्रदान करूंगा।

+1

आपको अपने उत्तरों को और विस्तृत करना चाहिए – avcajaraville