2013-11-28 14 views
5

में रेग्रेस फ़ंक्शन को समझना मुझे समझ में आ रहा है कि मैटलैब में रेग्रेस कैसे काम करता है।मैटलैब

कहें कि मेरे पास 2 एरे (एक्स और वाई) हैं, प्रत्येक के पास एक ही आकार है (मान लें कि वे प्रत्येक 1x10 हैं)। जो मैं समझता हूं उससे, रेग्रेस फ़ंक्शन मुझे एक्स और वाई के बीच संबंध ढूंढने में मदद कर सकता है (मैं प्लॉट किए गए डेटा के माध्यम से एक सर्वोत्तम फिट लाइन बनाना चाहता हूं), और फिर मुझे ढलान दें। जब मैंने मैटलैब में यह कोशिश की, तो मुझे यह कहते हुए एक त्रुटि मिली कि 2 चरों में पंक्तियों की एक अलग संख्या है .... लेकिन वे नहीं करते, क्या वे करते हैं?

मैं वास्तव में इसकी सराहना करता हूं अगर कोई मुझे समझने में मदद कर सके कि फ़ंक्शन और उसके पैरामीटर कैसे काम करते हैं, बस मुझे मूल स्तर पर जाने के लिए।

x = [1,2,3,4,5,6,7,8,9,10]; 
y = [1,2,3,4,5,6,7,8,9,10]; %defining the arrays, they are linearly related 
X=[x ones(size(x,1),1)]; %adding the (necessary?) column of ones 
regress(y,X) % using the regress function for a relationship 

मैं इस त्रुटि मिलती है:

??? Error using ==> regress at 64 
The number of rows in Y must equal the number of rows in X. 

उत्तर

2

मुझे लगता है कि आप कॉलम के साथ पंक्तियों भ्रमित कर रहे हैं किसी भी तरह (मैटलैब column-major ordering उपयोग करता है)

यहाँ एक उदाहरण के रूप में कुछ कोड है। यदि आप अपने दो इनपुट, y और X प्रिंट करते हैं, तो आप तुरंत देखेंगे कि वे अलग-अलग लंबाई के पंक्ति वैक्टर हैं। regress सावधानी से मदद/दस्तावेज़ीकरण पढ़ें - पहला इनपुट एन-बाय-1 कॉलम वेक्टर होना चाहिए। और दूसरा एन-बाय-पी मैट्रिक्स। इसलिए कुछ इस तरह काम कर सकता था:

x = 1:10; 
y = 1:10; 
X = [x; ones(1,length(x))]; 
b = regress(y.',X.') 
1

regress कई रेखीय प्रतीपगमन के लिए है। आप बस X और Y के बीच संबंध ढूंढना चाहते हैं। उस polyfit कमांड के लिए पर्याप्त होना चाहिए। मुझे लगता है कि जब आप आंकड़ों की गणना करना चाहते हैं तो केवल कॉलम आवश्यक है।

MATLAB प्रलेखन से

:

regress is for multiple linear regression. You just want to find relation between X and Y. For that polyfit command should be enough. I think the column of ones is necessary only when you want to calculate statistics.

आप regress का उपयोग करेगा जब आप X और Y के संबंध में कैसे Z बर्ताव करता है पता लगाना चाहते हैं। संक्षेप में, Z=f(X,Y)। इस मामले में, आप Z को nx1 वेक्टर (regress कमांड में पहला तर्क) के रूप में प्लग करेंगे। फिर आप एक और मैट्रिक्स बनाते हैं, D=[X Y] कहें। यह nx2 वेक्टर है। regress कमांड के लिए यह दूसरा तर्क होगा।

अब फिर से MATLAB डॉक्स से पढ़ें, देखें कि क्या वह समझ में आता है:

b = regress(y,X) returns a p-by-1 vector b of coefficient estimates for a multilinear regression of the responses in y on the predictors in X. X is an n-by-p matrix of p predictors at each of n observations. y is an n-by-1 vector of observed responses.

+0

आप एकाधिक रेखीय प्रतीपगमन और सामान्य प्रतिगमन के बीच अंतर के बारे में समझाएं कर सकते हैं? मैं matlab में फिटlm और regress आदेशों के बीच अंतर को समझ नहीं सका। – roni

+0

'fitlm' बनाम 'regress' के संबंध में, दोनों रैखिक regressors हैं। मुझे लगता है कि 'fitlm' बेहतर संगठित है और आप 'fitlm' में विधियों का उपयोग करके मीट्रिक आदि की साजिश कर सकते हैं। आप 'regress' में इतनी सारी चीज़ें नहीं कर सकते हैं। हालांकि, मुझे यकीन नहीं है। मुझे लगता है कि आपका मतलब "बहुविकल्पीय सामान्य प्रतिगमन" था, जिसके लिए MATALB के 'mvregress' को पढ़ा गया था और' regress' के साथ इसकी तुलना करें। आपको अंतर मिलना चाहिए। –