पीसीए के माध्यम से ऑर्थोगोनल रिग्रेशन (कुल कम से कम वर्ग) कैसे करें?


29

मैं हमेशा x पर ylm() का रैखिक प्रतिगमन करने के लिए R में उपयोग करता हूं । यह फ़ंक्शन एक गुणांक लौटाता है जैसे किyx= β x β

y=βx.

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

r <- princomp( ~ x + y)

मेरी समस्या यह है: इसके परिणामों की व्याख्या कैसे करें? मैं प्रतिगमन गुणांक कैसे प्राप्त कर सकता हूं? "गुणांक" से मेरा तात्पर्य संख्या β जिसे मुझे y के करीब संख्या देने के लिए x मान को गुणा करने के लिए उपयोग करना है ।y


एक पल लोग, मैं थोड़ा उलझन में हूँ। इसे देखें: zoonek2.free.fr/UNIX/48_R/09.html इसे PCA (प्रिंसिपल कंपोनेंट एनालिसिस, उर्फ़ "ऑर्थोगोनल रिग्रेशन" या "चौकों का सीधा जोड़ " या "कुल कम से कम वर्ग") कहा जाता है, इसलिए मुझे लगता है कि हम बात कर रहे हैं। के साथ TLS के बारे में () नहीं?
Dail

नहीं; वे दो अलग चीजें हैं, पीसीए के बारे में विकिपीडिया लेख देखें। तथ्य यह है कि यहाँ प्रयोग किया जाता है एक हैक है (मुझे नहीं पता कि कितना सटीक है, लेकिन मैं इसे जांचने जा रहा हूं); यही कारण है कि गुणांक के जटिल निष्कर्षण।

1
एक संबंधित प्रश्न: आंकड़े.stackexchange.com/questions/2691/… और एक ब्लॉग पोस्ट में से एक के जवाब से संदर्भित है: cerebralmastication.com/2010/09/…
जोनाथन

जवाबों:


48

कुल न्यूनतम वर्ग बनाम कम से कम वर्ग

आइए पहले केवल एक भविष्यवक्ता (स्वतंत्र) चर के सबसे सरल मामले पर विचार करें । सादगी के लिए, x और y दोनों को केंद्रित होने दें, अर्थात अवरोधन हमेशा शून्य होता है। मानक ओएलएस प्रतिगमन और "ऑर्थोगोनल" टीएलएस प्रतिगमन के बीच का अंतर इस पर स्पष्ट रूप से दिखाया गया है (मेरे द्वारा अनुकूलित) पीसीए पर सबसे लोकप्रिय धागे में सबसे लोकप्रिय उत्तर से।xxy

ओएलएस बनाम टीएलएस

OLS फिट के समीकरण मनाया मूल्यों के बीच वर्ग दूरी कम करके y भविष्यवाणी मूल्यों औरy=βxy । टीएलएसलाइन पर(x,y)बिंदुओं और उनके प्रक्षेपण केबीच वर्ग दूरी को कम करके एक ही समीकरण को फिट करता है। इस सरलतम मामले में टीएलएस लाइन 2 डी डेटा का पहला प्रमुख घटक है। जानने के लिएβ, पर पीसीए है(एक्स,वाई)अंक अर्थात निर्माण2×2सहप्रसरण मैट्रिक्सΣऔर इसके पहले आइजन्वेक्टर खोजने केवी=y^(x,y)β(x,y)2×2Σ ; तो β = वी y / वी एक्सv=(vx,vy)β=vy/vx

मतलाब में:

 v = pca([x y]);    //# x and y are centered column vectors
 beta = v(2,1)/v(1,1);

आर में:

 v <- prcomp(cbind(x,y))$rotation
 beta <- v[2,1]/v[1,1]

वैसे, यह सही ढलान का उत्पादन करेगा भले ही और वाई केंद्रित नहीं थे (क्योंकि अंतर्निहित पीसीए फ़ंक्शन स्वचालित रूप से केंद्रित होते हैं)। अवरोधन ठीक करने के लिए, गणना बीटा 0 = ˉ y - बीटा ˉ एक्सxyβ0=y¯βx¯

ओएलएस बनाम टीएलएस, कई प्रतिगमन

एक आश्रित चर को देखते हुए और कई स्वतंत्र चरों x मैं (फिर से, सभी सादगी के लिए केंद्रित), प्रतिगमन एक समीकरण फिट बैठता है y = β 1 एक्स 1 + ... + βyxiOLS की प्रेक्षित मूल्यों के बीच वर्ग त्रुटियों को कम करके फिट करता है y और भविष्यवाणी की मानों y । टीएलएस के बीच मनाया वर्ग दूरी कम करके फिट करता है ( एक्स , वाई ) आर पी + 1

y=β1x1++βpxp.
yy^(x,y)Rp+1 अंक और प्रतिगमन विमान / हाइपरप्लेन पर निकटतम बिंदु।

ध्यान दें कि अब कोई "प्रतिगमन रेखा" नहीं है! उपर्युक्त समीकरण एक हाइपरप्लेन निर्दिष्ट करता है : यह एक 2 डी प्लेन है यदि दो प्रेडिक्टर हैं, 3 डी हाइपरप्लेन हैं यदि तीन प्रेडिक्टर हैं, आदि। तो उपरोक्त समाधान काम नहीं करता है: हम केवल पहला पीसी लेकर टीएलएस समाधान नहीं प्राप्त कर सकते हैं (जो है) एक लाइन)। फिर भी, पीसीए के माध्यम से समाधान आसानी से प्राप्त किया जा सकता है।

पहले की तरह, PCA बिंदुओं पर किया जाता है। यह V के स्तंभों में p + 1 eigenvectors पैदावार देता है । पहले p eigenvectors एक p -dimensional हाइपरप्लेन एच को परिभाषित करते हैं जो हमें चाहिए; अंतिम (संख्या p + 1 ) eigenvector v p + 1 इसके लिए रूढ़िवादी है। सवाल यह है कि पहले p eigenvectors द्वारा दिए गए H के आधार को ients गुणांक में कैसे बदला जाए(x,y)p+1VppHp+1vp+1Hpβ

ध्यान से देखें कि अगर हम सेट सभी के लिए मैं k और केवल एक्स कश्मीर = 1 , तो y = β कश्मीर , यानी वेक्टर ( 0 , ... , 1 , ... , β कश्मीर ) एच hyperplane में निहित एच । दूसरी ओर, हम जानते हैं कि v p + 1 = ( v 1 , , v p + 1)xi=0ikxk=1y^=βk

(0,,1,,βk)H
H लिए ऑर्थोगोनल है। यानी उनके डॉट उत्पाद शून्य होना चाहिए: वी कश्मीर + बीटा कश्मीर वी पी + 1 = 0 बीटा कश्मीर = - वी कश्मीर / वी पी + 1
vp+1=(v1,,vp+1)H
vk+βkvp+1=0βk=vk/vp+1.

मतलाब में:

 v = pca([X y]);    //# X is a centered n-times-p matrix, y is n-times-1 column vector
 beta = -v(1:end-1,end)/v(end,end);

आर में:

 v <- prcomp(cbind(X,y))$rotation
 beta <- -v[-ncol(v),ncol(v)] / v[ncol(v),ncol(v)]

फिर से, यह सही ढलान का उत्पादन करेगा भले ही और वाई केंद्रित नहीं थे (क्योंकि अंतर्निहित पीसीए फ़ंक्शन स्वचालित रूप से केंद्रित होते हैं)। अवरोधन ठीक करने के लिए, गणना बीटा 0 = ˉ y - ˉ एक्स βxyβ0=y¯x¯β

एक पवित्रता की जाँच के रूप में, ध्यान दें कि यह समाधान केवल एक ही पूर्वसूचक मामले में पिछले एक के साथ मेल खाता है । दरअसल, तब ( x , y ) स्पेस 2 डी है, और इसलिए, यह देखते हुए कि पहला PCA eigenvector दूसरे (अंतिम) वन, v ( 1 ) y / v ( 1 ) x = के लिए ऑर्थोगोनल है x(x,y)vy(1)/vx(1)=vx(2)/vy(2)

टीएलएस के लिए बंद फार्म समाधान

β

Xyvp+1 के साथ एक eigenvalue σ 2 पी +[Xy]σp+12vp+1/vp+1=(β1)

(XXXyyXyy)(β1)=σp+12(β1),
βTLS=(XXσp+12I)1Xy,
βOLS=(XX)1Xy.

मल्टीवेरिएट मल्टीपल रिग्रेशन

बहु सूत्रीय मामले में एक ही सूत्र को सामान्यीकृत किया जा सकता है, लेकिन यह भी परिभाषित करने के लिए कि बहुभिन्नरूपी TLS क्या करता है, इसके लिए कुछ बीजगणित की आवश्यकता होगी। TLS पर विकिपीडिया देखें । बहुभिन्नरूपी OLS प्रतिगमन प्रत्येक निर्भर चर के लिए univariate OLS प्रतिगमन का एक गुच्छा के बराबर है, लेकिन TLS मामले में ऐसा नहीं है।


1
मैं आर को नहीं जानता, लेकिन फिर भी भविष्य के संदर्भ के लिए आर स्निपेट प्रदान करना चाहता था। आर में कुशल यहां कई लोग हैं। यदि जरूरत हो तो कृपया मेरे स्निपेट्स को संपादित करने के लिए स्वतंत्र महसूस करें! धन्यवाद।
अमीबा का कहना है कि मोनिका को बहाल करो

(0,,1,,βk) hyperplane में निहित है?
जॉनके

xixk=1y=βjxjy=βk1=βk(0,,1,βk)y=βjxj
अमीबा का कहना है कि

मुझे लगता है कि यह हिस्सा गलत है, लेकिन अब यह स्पष्ट है। स्पष्टीकरण के लिए भी धन्यवाद।
जॉन सिप २

2
आर में, आप "प्रिजन (cbind (x, y))) $ vectors" "prcomp (cbind (x, y)) $ रोटेशन" को पसंद कर सकते हैं क्योंकि पूर्व बड़े वैक्टर के लिए बहुत तेज है।
थॉमस ब्राउन

9

यहाँ पाए गए भोले ग्नू ऑक्टेव कार्यान्वयन के आधार पर , इस तरह के कुछ (नमक के दाने, यह देर हो चुकी है) काम हो सकता है।

tls <- function(A, b){

  n <- ncol(A)
  C <- cbind(A, b)

  V <- svd(C)$v
  VAB <- V[1:n, (n+1):ncol(V)]
  VBB <- V[(n+1):nrow(V), (n+1):ncol(V)]
  return(-VAB/VBB)
}

4

princompकुल कम से कम वर्गों प्रतिगमन के बजाय प्रमुख घटक विश्लेषण चल रहा है । जहां तक ​​मुझे पता है कि कोई आर फ़ंक्शन नहीं है और न ही पैकेज जो टीएलएस करता है; अधिकांश में MethComp में Deming प्रतिगमन है ।
फिर भी, कृपया इसे एक सुझाव के रूप में मानें कि यह सबसे अधिक संभावना है कि इसके लायक नहीं है।


मैंने सोचा कि MethComp पैकेज में Deming TLS था - क्या अंतर है?
mark999

You must give it the ratio of errors on x and y; pure TLS optimises this.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.