पीसीए के लिए लापता मूल्यों का विचलन


23

मैंने prcomp()आर में एक पीसीए (प्रमुख घटक विश्लेषण) करने के लिए फ़ंक्शन का उपयोग किया । हालांकि, उस फ़ंक्शन में एक बग है जैसे कि na.actionपैरामीटर काम नहीं करता है। मैंने स्टैकओवरफ्लो पर मदद मांगी ; वहाँ दो उपयोगकर्ताओं ने NAमूल्यों से निपटने के दो अलग-अलग तरीकों की पेशकश की । हालांकि, दोनों समाधानों के साथ समस्या यह है कि जब कोई NAमूल्य होता है, तो उस पंक्ति को गिरा दिया जाता है और पीसीए विश्लेषण में नहीं माना जाता है। मेरा वास्तविक डेटा सेट 100 x 100 का एक मैट्रिक्स है और मैं केवल एक पूरी पंक्ति खोना नहीं चाहता क्योंकि इसमें एक एकल NAमान शामिल है।

निम्न उदाहरण से पता चलता है कि prcomp()फ़ंक्शन पंक्ति 5 के लिए कोई मुख्य घटक वापस नहीं करता है क्योंकि इसमें एक NAमान होता है ।

d       <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10), 
                      V3 = sample(1:100, 10))
result  <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x                                # $
d$V1[5] <- NA                           # $
result  <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x

अगर मैं सेट कर सकते हैं मैं सोच रहा था NAएक विशिष्ट संख्यात्मक मूल्य के मूल्यों जब centerऔर scaleकी तैयारी में हैं TRUEताकि prcomp()समारोह काम करता है और युक्त पंक्तियों को दूर नहीं करता NAहै, लेकिन यह भी पीसीए विश्लेषण के परिणाम को प्रभावित नहीं करता।

मैंने NAएक एकल स्तंभ में माध्य मान के साथ या 0. के करीब मान के साथ मानों को बदलने के बारे में सोचा । हालांकि, मुझे यकीन नहीं है कि यह पीसीए विश्लेषण को कैसे प्रभावित करता है।

क्या कोई भी उस समस्या को हल करने का एक अच्छा तरीका सोच सकता है?


8
आपकी समस्या पीसीए समस्या नहीं है, लेकिन एक व्यापक लापता मूल्यों की समस्या है। यदि आप इससे परिचित नहीं हैं, तो कृपया इस पर थोड़ा पढ़ें । आपके पास कई अवसर हैं: (1) मामलों को सूचीबद्ध या (2) जोड़ो को हटाएं, या (3) मिसिंग को माध्य या माध्यिका से बदलें। या (4) मान्य वैल्यू (हॉट-डेक एप्रोच) के यादृच्छिक रूप से चुना जाता है। या (5) आपसी प्रतिगमन (या बिना शोर के साथ) दृष्टिकोण से या एक बेहतर (6) ईएम दृष्टिकोण द्वारा गुमशुदा।
ttnphns

जैसा कि टिप्पणियां और उत्तर दिखा रहे हैं, एक अच्छा जवाब पाने की कुंजी यह है कि NAमूल्यों का क्या मतलब है : "लापता" का कारण क्या है?
whuber

2
मुझे लगता है कि "pcaMethods" पैकेज आपकी समस्या ( यहाँ ) हल कर सकता है
ToNoY

जवाबों:


22

वास्तव में गप्पी मैट्रिस से निपटने के लिए एक अच्छी तरह से प्रलेखित तरीका है - आप अपने डेटा से दूषित एक सहसंयोजक मैट्रिक्स को विघटित कर सकते हैं , जिसे साझा मूल्यों की संख्या :सीएक्सn

सी=1nएक्सटीएक्स,                सीjएल=एक्सjYएल¯

और फिर मुख्य गुणांक का विस्तार कम से कम वर्ग फिट (@ user969113 उल्लेख के रूप में) के माध्यम से करें। यहाँ एक उदाहरण है

हालाँकि, इस पद्धति से कई समस्याएं हैं, इस तथ्य से संबंधित है कि सहसंयोजक मैट्रिक्स अब अर्ध-निश्चित नहीं है और ईजन / एकवचन मान फुलाए जाते हैं। इन समस्याओं की एक अच्छी समीक्षा बेकर्स और रिक्सन (2003) में पाई जा सकती है , जहां वे लापता अंतरालों को बेहतर तरीके से प्रक्षेपित करने का एक तरीका प्रस्तावित करते हैं - DINEOF (डेटा इंटरपोलिंग एम्पिरिकल ऑर्थोगोनल फ़ंक्शंस)। मैंने हाल ही में एक फ़ंक्शन लिखा है जो DINEOF करता है , और यह वास्तव में जाने के लिए एक बेहतर तरीका है। आप सीधे अपने डेटासेट पर DINEOF कर सकते हैं , और फिर इनपुट के रूप में प्रक्षेपित डेटासेट का उपयोग कर सकते हैं ।एक्सprcomp

अद्यतन करें

एक गप्पी डेटासेट पर पीसीए आयोजित करने का एक अन्य विकल्प "पुनरावर्ती सबटाइटल एम्पिरिकल ऑर्थोगोनल फंक्शंस" (टेलर एट अल। 2013) है। यह कम से कम वर्गों के दृष्टिकोण में कुछ समस्याओं के लिए भी सही है, और अनिवार्य रूप से DINEOF की तुलना में बहुत तेज है। यह पोस्ट पीसी का उपयोग करके डेटा पुनर्निर्माण की सटीकता के संदर्भ में सभी तीन दृष्टिकोणों की तुलना करता है।

संदर्भ

बेकर्स, जीन-मैरी और एम। रिक्सन। "ईओएफ गणना और अधूरा ओशनोग्राफिक डेटासेट से डेटा भरना।" वायुमंडलीय और महासागरीय प्रौद्योगिकी जर्नल 20.12 (2003): 1839-1856।

टेलर, एम।, लॉस, एम।, वेन्ज़ेल, एम।, और श्रॉटर, जे (2013)। गप्पी डेटा से प्राप्त एम्पिरिकल ऑर्थोगोनल फ़ंक्शंस का उपयोग करके क्षेत्र के पुनर्निर्माण और भविष्यवाणी की संवेदनशीलता पर। जलवायु का जर्नल, 26 (22), 9194-9205।


(+1) यह मेरे लिए एक बहुमूल्य योगदान की तरह लगता है, क्योंकि यह एक उपन्यास विचार है। मैंने बहुत पहले एक समान प्रश्न पूछा था जो हड़ताली रूप से समान है: जब आप डेटा (लापता होने के बजाय) सेंसर किए जाते हैं तो आप एक सहसंयोजक मैट्रिक्स का अनुमान कैसे लगाते हैं ? यदि आपके पास उस स्थिति के बारे में कोई विचार है, तो मुझे उत्तर की खुशी होगी!
व्हिबर

धन्यवाद @whuber - मेरा मानना ​​है कि इस पद्धति में बहुत योग्यता है। भले ही आप प्रक्षेपित मानों में रुचि नहीं रखते हों, लेकिन यह विधि बहुत बेहतर है क्योंकि डेटासेट के लिए ईओएफएस / पीसी का वर्णन करना - जैसे कि पुन: निर्मित डेटा और मूल के बीच की त्रुटि एल्गोरिथ्म के माध्यम से कम से कम होती है।
बॉक्स

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

@whuber - डेटा को विरल करने के लिए एक समान पुनरावृत्त सहसंयोजक मैट्रिक्स फिटिंग प्रक्रिया का वर्णन करने वाले निम्नलिखित पेपर में आपकी रुचि हो सकती है: बिएन, जेकब, और रॉबर्ट जे टिब्शीरानी। "एक सहसंयोजक मैट्रिक्स का विरल अनुमान।" बायोमेट्रिक 98.4 (2011): 807-820।
बॉक्स में

साभार @Marc दुर्भाग्य से सेंसरिंग और स्पेयरनेस अलग-अलग चिंताओं के साथ दो अलग-अलग चीजें हैं।
whuber

6

मेरा सुझाव इस बात पर निर्भर करता है कि कितना डेटा गायब है और क्यों गायब है। लेकिन इसका पीसीए से कोई लेना-देना नहीं है, वास्तव में। यदि बहुत कम डेटा गायब है, तो यह बहुत मायने नहीं रखता कि आप क्या करते हैं। माध्यिका के साथ प्रतिस्थापित करना आदर्श नहीं है, लेकिन यदि बहुत अधिक लापता नहीं है, तो यह एक बेहतर समाधान से बहुत अलग नहीं होगा। आप माध्य प्रतिस्थापन और सुस्पष्ट विलोपन दोनों के साथ पीसीए करने की कोशिश कर सकते हैं और देख सकते हैं कि परिणामों में प्रमुख अंतर हैं या नहीं।

अगला, यदि अधिक डेटा गायब है, तो आपको यह विचार करना चाहिए कि क्या यह पूरी तरह से यादृच्छिक पर गायब है, यादृच्छिक पर गायब है, या यादृच्छिक पर गायब नहीं है। मैं पहले दो मामलों में और कई बार तीसरे मामले में कई प्रतिरूपण का सुझाव दूंगा - जब तक कि डेटा अपने NMAR की स्थिति से अत्यधिक विकृत नहीं होता है, मुझे लगता है कि कई प्रतिरूपण लिस्ट वाइज विलोपन से बेहतर होगा (पेन स्टेट का जोफर) लापता डेटा पर बहुत काम - मुझे याद है कि उनके कुछ काम दिखाते हैं कि कई प्रतिरूपण कुछ NMAR मामलों में भी बहुत अच्छी तरह से काम करते हैं)। हालाँकि, यदि डेटा MCAR या MAR हैं, तो कई अशुद्धता के गुण सिद्ध किए जा सकते हैं।

यदि आप एमआई के साथ जाने का फैसला करते हैं, तो एक नोट सावधान रहना होगा क्योंकि पीसीए में घटकों के संकेत मनमाना हैं, और डेटा में एक छोटा परिवर्तन एक संकेत को फ्लिप कर सकता है। फिर जब आप PCA करेंगे तो आपको बकवास लगेगा। कुछ समय पहले मैंने एसएएस में एक समाधान निकाला - यह कठिन नहीं है, लेकिन इसके बारे में सावधान रहना चाहिए।


1

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


3
मैं सिर्फ पीसीए और लापता डेटा के लिए googled और पाया कि: 4.2 कैसे SIMCA लापता डेटा के साथ सामना करता है? सीधे शब्दों में कहें तो NIPALS एल्गोरिथम कम से कम वर्ग फिट का उपयोग करके लापता बिंदु को प्रक्षेपित करता है लेकिन लापता डेटा को मॉडल पर कोई प्रभाव नहीं देता है। क्रमिक पुनरावृत्तियों केवल अंक और उस बिंदु के लिए लोड को गुणा करके लापता मान को परिष्कृत करते हैं। लापता डेटा के लिए कई अलग-अलग तरीके मौजूद हैं, जैसे अनुमान लेकिन वे आम तौर पर एक ही समाधान में परिवर्तित होते हैं। मिसिंग डेटा स्वीकार्य है अगर वे बेतरतीब ढंग से वितरित किए जाते हैं। लापता डेटा के व्यवस्थित ब्लॉक समस्याग्रस्त हैं।
user969113 11

1
मुझे नहीं पता कि आपके मॉडल पर कोई प्रभाव नहीं है। समन्वय के लिए लापता मूल्य का कोई भी विकल्प प्रमुख घटकों को प्रभावित करेगा।
माइकल आर। चेरिक

1

हाल ही में एक पेपर जो पीसीए विश्लेषणों में लापता मूल्यों से निपटने के लिए दृष्टिकोण की समीक्षा करता है, "ड्राय एंड जोसे (2015) द्वारा" लापता मूल्यों के साथ प्रमुख घटक विश्लेषण: तरीकों का तुलनात्मक सर्वेक्षण "है । पीसीए तरीकों कि मान अनुपलब्ध के लिए अनुमति देने का सबसे अच्छा ज्ञात तरीकों में से दो NIPALS एल्गोरिथ्म, में लागू कर रहे हैं nipalsके समारोह ade4पैकेज, और पुनरावृत्ति पीसीए (इप्का या EM-पीसीए), में लागू imputePCAकरने का कार्य missMDAपैकेज। कागज ने निष्कर्ष निकाला कि इप्का विधि ने सबसे व्यापक परिस्थितियों में सर्वश्रेष्ठ प्रदर्शन किया।

आपके उदाहरण के लिए वाक्य रचना है:

NIPALS के लिए:

library(ade4)
nipals(d[,c(1,2)])

इप्का के लिए:

library(missMDA)
imputePCA(d[,c(1,2)],method="EM",ncp=1)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.