2013-11-28 19 views
5

Mam problem ze zrozumieniem, jak działa regres w programie Matlab.Opis funkcji regresji w programie Matlab

Powiedzmy, że mam 2 tablice (X i Y), z których każda ma ten sam rozmiar (powiedzmy, że każdy z nich to 1x10). Z tego, co rozumiem, funkcja regresji powinna pomóc mi znaleźć relację między X i Y (chcę narysować linię najlepiej pasującą przez naniesione dane), a następnie dać mi nachylenie. Kiedy próbowałem to w Matlab, dostałem błąd, mówiąc, że 2 zmienne mają różną liczbę wierszy .... ale nie, prawda?

Byłbym bardzo wdzięczny, gdyby ktokolwiek mógł mi pomóc zrozumieć, jak działa funkcja i jej parametry, po to tylko, aby osiągnąć poziom podstawowy.

Oto niektóre kodu jako przykład:

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 

otrzymuję ten błąd:

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

Odpowiedz

2

myślę, że jesteś mylące wiersze z kolumnami jakoś (Matlab używa column-major ordering). Jeśli wydrukujesz swoje dwa wejścia, y i X, natychmiast zobaczysz, że są to wektory rzędu o różnych długościach. Przeczytaj uważnie pomoc/dokumentację dla regress - pierwsze wejście musi być wektorem kolumny N na 1. A druga macierz N-na-p. Dlatego coś takiego może zadziałać:

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

regress służy do wielokrotnej regresji liniowej. Chcesz tylko znaleźć relację między X a Y. Dla tego polecenia powinno wystarczyć polecenie polyfit. Myślę, że kolumna z nich jest konieczna tylko wtedy, gdy chcesz obliczyć statystyki.

Z dokumentacji 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.

Będziesz korzystać regress jeśli chcesz dowiedzieć się, jak Z zachowuje się w odniesieniu do X i Y. W skrócie: Z=f(X,Y). W takim przypadku podłączysz Z jako wektor nx1 (pierwszy argument w poleceniu regress). Następnie tworzysz inną macierz, na przykład D=[X Y]. To jest wektor nx2. Będzie to drugi argument dla polecenia regress.

Teraz przeczytaj to z docs MATLAB ponownie sprawdzić, czy ma to sens:

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

Czy możesz wyjaśnić różnicę między wielokrotnej regresji liniowej regresji i normalne? Nie mogłem zrozumieć różnicy między poleceniami fitlm i regress w programie Matlab. – roni

+0

W odniesieniu do 'fitlm' vs.' regress', oba są regresorami liniowymi. Myślę, że 'fitlm' jest lepiej zorganizowany i możesz drukować, obliczać metryki itp., Używając metod z' fitlm'. Nie możesz zrobić tylu rzeczy w "regresie". Jednak nie jestem pewien. Myślę, że miałeś na myśli "wieloczynnikową normalną regresję", dla tego przeczytaj 'mvregress' z MATALB i porównaj to z' regresem'. Powinieneś dostać różnicę. –

Powiązane problemy