2012-11-13 26 views
7

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

var dataPoints = [{ 
"w" : 1, "x" : 2, "z" : 1, "y" : 7 
}, { 
"w" : 2, "x" : 1, "z" : 4, "y" : 5 
}, { 
"w" : 1, "x" : 5, "z" : 3, "y" : 2 
}, { 
"w" : 4, "x" : 3, "z" : 5, "y" : 15 
}]; 

मैं एक समारोह है कि इस तरह एक सूत्र वस्तु वापसी होगी चाहते हैं (डब्ल्यू, एक्स, जेड स्वतंत्र चर हैं और y निर्भर चर है):

var regressionEquation = [{ 
"var" : "w", "power" : 1, "coeff" : "1.5" 
}, { 
"var" : "x", "power" : 1, "coeff" : "2" 
}, { 
"var" : "z", "power" : 1, "coeff" : "1" 
}]; 

क्या इस तरह के एक रिग्रेशन समीकरण के साथ कदम उठाने और मूल्यों को प्लग करने के बिना इस तरह के एक रिग्रेशन समीकरण के साथ आने का कोई तरीका है? क्या 1 से अधिक शक्तियों के लिए प्रतिगमन समीकरण के साथ आने का कोई तरीका है? अग्रिम में धन्यवाद।

संपादित

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

+0

क्या आप पॉलिनोमियल इंटरपोलेशन जैसे कुछ के बारे में सोच रहे हैं? (https://en.wikipedia.org/wiki/Polynomial_interpolation) मैंने कुछ जेएस को वंडरमोंड मैट्रिक्स पर संचालन के माध्यम से करने के लिए लिखा है। – sgcharlie

+0

नहीं, मैं एक रिग्रेशन समीकरण ढूंढना चाहता हूं और फिर –

+0

extrapolate करना चाहता हूं ताकि आपके पास^k2 + cz^k3 द्वारा w = ax^k1 + फ़ंक्शन हो, जहां आप ए, बी, सी, के 1, के 2 और के 3 ढूंढना चाहते हैं जो आपके अनुरूप हैं डेटा? –

उत्तर

1

जैसा कि आपने कहा है कि समस्या यह है कि यह एक रैखिक प्रतिगमन समस्या के लिए रूपांतरण के तहत बराबर है। आपने टिप्पणियों में कहा है कि आपने एक्सपोनेंट k_1, k_2, और k_3 तय किए हैं। परिवर्तन {w, x, z ,y} को ट्यूपल {w^k_1, x^k_2, z^k_2, y} = {w', x', z' ,y} पर टुपल लेता है। अपने गुणांक प्राप्त करने के लिए प्राथमिक चर पर रैखिक प्रतिगमन का प्रयोग करें।

{"w" : 4, "x" : 3, "z" : 5, "y" : 15} 
==> {"w*" : 16, "x*" : 27, "z*" : 5, "y" : 15} 

यह सिर्फ कैसे आप एक रेखीय प्रतिगमन एक में एक polynomial regression समस्या परिवर्तित की एक विशेष मामला है:

उदाहरण के लिए, यदि k_1 = 2, k_2 = 3, और k_3 = 1, तो यहाँ बदलने की एक एकल उदाहरण है। आपके मामले में आप जिन बहुपद रूपों पर विचार कर रहे हैं वे विशेष रूप से सरल हैं।

रैखिक प्रतिगमन समस्या को हल करने के लिए आपको पसंद की जाने वाली किसी भी जावास्क्रिप्ट लाइब्रेरी का उपयोग करें; उनमें से कई हैं।

+0

कृपया मेरे लिए संपादन देखें आपके उत्तर –

1

मुझे लगता है कि यदि यह मामला है कि चार समीकरण और केवल 3 चर हैं (जैसा कि आपने पहले से ही शक्तियों, प्लगइन को निर्धारित किया है और इसे रैखिक समीकरण बना दिया है), रैखिक समीकरण पूर्ण हो गया है, और वहां मौजूद नहीं है सटीक उत्तर जो सभी चार समीकरणों को पूरा करेगा।

आप क्या कर सकते हैं अवशिष्ट त्रुटि को कम करने और सर्वोत्तम अनुमान प्राप्त करने के लिए।

, मान लें कि गुणांक अब और wx और z के लिए ग है

मैट्रिक्स को परिभाषित

M=[w1,x1,z1;w2,x2,z2;w3,x3,z3;w4,x4,z4]. 

और परिभाषित वेक्टर

v=[a;b;c], 

परिभाषित वेक्टर

r=[y1;y2;y3;y4]. 

फिर पी roblem

M*v=r solve v. 

1. है रैंक (एम)> चर संख्या, आप अवशिष्ट त्रुटि

||M*v-r||_2. 

को कम से कम के बाद से इस उत्तल है, उस पर व्युत्पन्न लेने के लिए और यह शून्य करना है:

M^T*M*v-M^T*r=0 => v=(M^T*M)\M^T*r. 

(एम^टी * एम) \ एम^टी एम के सांसद-उल्टा होता है, अगर रैंक (एम)> चर संख्या है, तो (एम^टी * एम) inversible है।

2. यदि रैंक (एम) < = परिवर्तनीय संख्या, तो आप समीकरण के असीमित रूप से कई सटीक समाधान प्राप्त कर सकते हैं।

M=U*S*V^T, 

तो

v=V*S^-1*U^T*r 

समाधान में से एक है:

M*v=r. 

एम के एकमात्र मूल्य अपघटन करते हैं।

वी * एस^-1 * यू^टी एम

की छद्म उल्टा होता है आप एक रेखीय बीजगणित पुस्तकालय का उपयोग करते हैं, यह बार-बार दोहराना बिना बंद फ़ॉर्म समाधान पाने के लिए बहुत आसान है। http://sylvester.jcoglan.com/

+0

के साथ समस्याएं यदि पहला मामला http://sylvester.jcoglan.com/api/matrix.html#inverse पहले ही हल हो सकता है। लेकिन अगर दूसरे मामले में, मुझे कोई जावास्क्रिप्ट लाइब्रेरी दिखाई नहीं दे रही है जो छद्म उलटा कर सकता है। शायद यह लाइब्रेरी http://www.numericjs.com/ मदद कर सकती है क्योंकि यह मैट्रिक्स के एसवीडी की गणना कर सकती है, और आप यूएस और वी –

+0

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

+0

मैंने कोशिश की और यह एक त्रुटि हुई क्योंकि एम उलटा नहीं है क्योंकि यह वर्ग –

0

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

(http://en.wikipedia.org/wiki/Least_squares)

रैखिक लोकसभा जावास्क्रिप्ट में और आप शायद इन 3 आयामों (जैसे http://dracoblue.net/dev/linear-least-squares-in-javascript/159/ एक त्वरित गूगल खोज से करने के लिए अनुकूलित कर सकते हैं के लिए कई लिंक कर रहे हैं)। गैर-रैखिक मामले के लिए हालांकि इसे कुछ और काम की आवश्यकता होगी।

+0

जिस तरह से मैंने आपके द्वारा पोस्ट किए गए लिंक को समझ लिया है, वह कई चर के लिए काम नहीं करेगा जो एक बड़ी समस्या –

+0

है, यह किसी भी प्रकार के चर या किसी भी फ़ंक्शन के लिए काम कर सकता है (उदाहरण के लिए देखें http://en.wikipedia.org/ विकी/Least_squares # Solving_the_least_squares_problem) - बात यह है कि इसका उपयोग ज्यादातर y = ax + b के लिए किया जाता है, इसलिए आपके द्वारा प्राप्त किए जाने वाले अधिकांश कोड इस प्रकार के फ़ंक्शन को लक्षित करेंगे। एकाधिक चर के साथ रैखिक मामले के लिए http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)#The_general_problem देखें। लेकिन आम तौर पर, गैर-रैखिक समस्याओं के लिए आपको शायद अपने आप से कुछ गणित करना होगा। – nvlass

+0

संपादित/जोड़: चूंकि, सिस्टम अधिक निर्धारित है, यह शायद जाने का तरीका है। – nvlass