Lineární regrese

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Ilustrace lineární regrese

Lineární regrese je matematická metoda používaná pro proložení souboru bodů v grafu přímkou. O bodech reprezentujících měřená data se předpokládá, že jejich x-ové souřadnice jsou přesné, zatímco ypsilonové souřadnice mohou být zatíženy náhodnou chybou, přičemž předpokládáme, že závislost y na x lze graficky vyjádřit přímkou. Pokud měřené body proložíme přímkou, tak při odečítání z grafu bude mezi ypsilonovou hodnotou měřeného bodu a ypsilonovou hodnotou ležící na přímce odchylka. Podstatou lineární regrese je nalezení takové přímky, aby součet druhých mocnin těchto odchylek byl co nejmenší. Lineární regresi lze zobecnit i pro prokládání jinou funkcí než přímkou. Termín lineární regrese proto může označovat dvě částečně odlišné věci:

  • V obecnějším případě může lineární regrese znamenat aproximaci daných hodnot [x_i, y_i] takovou funkcí y = f(x, b_1, \ldots , b_k), kterou lze vyjádřit jako lineární kombinaci funkcí f1 až fk: y = b_1 f_1(x) + \ldots + b_k f_k(x). Koeficienty b_1, \ldots, b_k se opět určují metodou nejmenších čtverců.

Homoscedastičnost (homogenita ve varianci) dat je běžným jevem. Avšak její předpoklad může vést k přecenění korelačního koeficientu. V jistých případech je tedy nutné uvážit heteroscedastičnost a použít váženou regresi.

Aproximace přímkou[editovat | editovat zdroj]

Uvažujme funkční závislost: f(x) = ax + b

Součet čtverců pak bude vypadat takto:

S(a, b) = \sum_{i=1}^{n} {[f(x_i)-y_i]^2} = \sum_{i=1}^{n} {(a x_i + b - y_i)^2 }

kde [x_i, y_i] jsou souřadnice aproximovaných bodů.

Abychom našli minimum součtu (našli koeficienty a, b tak, aby nalezená závislost vhodně aproximovala daná data), položíme obě parciální derivace součtu čtverců rovny nule:

0 = { \partial S \over \partial a} = 2 \sum_{i=1}^{n} (ax_i + b - y_i)x_i
0 = { \partial S \over \partial b} = 2 \sum_{i=1}^{n} (ax_i + b - y_i)

Úpravami obdržíme soustavu:

a\sum_{i=1}^{n} {x_i^2} + b\sum_{i=1}^{n} {x_i} = \sum_{i=1}^{n} x_i y_i
a\sum_{i=1}^{n} {x_i} + bn = \sum_{i=1}^{n} y_i

Lze ukázat, že matice této soustavy je regulární pro všechna n \geq 2, a má tedy právě jedno řešení. Obecně lze také ukázat, že v tomto bodě má součet čtverců minimum.

Jejím řešením pro konkrétní hodnoty x_{i} a y_{i} dostaneme konečně hledané hodnoty parametrů a a b.

a = \frac{n \sum{x_i y_i} - \sum{x_i} \sum{y_i}}{n \sum{x_i^2} - \left( \sum{x_i} \right)^2}
b = \frac{\sum{x_i^2}\sum{y_i} - \sum{x_i}\sum{x_i y_i}}{n \sum{x_i^2} - \left(\sum{x_i}\right)^2}

Podobný postup lze aplikovat na jakýkoliv druh závislosti i více proměnných.

Pokud je každá hodnota zatížena jinou chybou \sigma_i (např. měříme několika různými přístroji), je výhodné zahrnout i toto do aproximace. Označíme-li <x> = \sum_{i=1}^{n} {\frac{x_i}{\sigma_i^2}}, potom dostáváme

a = \frac{<1><xy> - <x><y>}{<1><x^2> - <x>^2}
b = \frac{<y><x^2> - <xy><x>}{<1><x^2> - <x>^2}

Přímka procházející počátkem[editovat | editovat zdroj]

Pokud je požadováno, aby přímka procházela počátkem, hledá se aproximace y = a x. Pro konstantu a lze odvodit následující vztah:

a = \frac{\sum{x_i y_i}}{\sum{x_i^2}}

Máme-li závislost y = ax a hodnoty jsou zatíženy chybami \sigma_i, pak pro odhad parametru a platí a = \frac{<xy>}{<x^2>} (je užito označení <x>=\sum_{i=1}^{n}{\frac{x}{\sigma_i^2}} a \sigma_i značí chybu (směrodatnou odchylku) i-tého měření).

Dále pro rozptyl parametru a platí V[a]=\frac{1}{<x^2>}.

Výpočet na počítači[editovat | editovat zdroj]

Matlab umožňuje použít funkci P = POLYFIT(X, Y, 1), kde poslední parametr 1 udává, že hledáme koeficienty polynomu prvního řádu. [1] [2]

V Excelu lze koeficient a zjistit funkcí SLOPE(Y; X) [3] [4] a konstantu b funkcí INTERCEPT(Y; X) [5] [6]. Případně lze oba koeficienty zjistit maticově zadanou funkcí {=LINEST(Y;X)}. [7] [8] V českém Excelu se tato funkce nazývá LINREGRESE. [9]

Obecná lineární regrese[editovat | editovat zdroj]

Ilustrace hledání optimální lineární kombinace. Zelená plocha colX představuje prostor, ve kterém se nachází všechny možné lineární kombinace f(X,β)=β1X12X2. Vektor y, představuje vektor hodnot, ke kterým se aproximace βX snaží přiblížit s nejmenší možnou chybou ε=y−βX, respektive druhou mocninou této chyby. Další popis viz kapitola Odvození: Kolmé vektory v článku Metoda nejmenších čtverců.

V obecnějším případě je možné danými hodnotami [x_i; y_i], i=1,\ldots,n proložit funkci y = f(x, b_1, \ldots , b_k) sestavenou jako lineární kombinaci k funkcí y = b_1 f_1(x) + \ldots + b_k f_k(x), kde f_1(x), \ldots , f_k(x) jsou libovolné (zpravidla lineárně nezávislé) funkce. Regrese se nazývá lineární, neboť funkční předpis y = f(x, b_1, \ldots , b_k) je lineární v proměnných b_1, \ldots, b_k, tedy v koeficientech, které podrobujeme regresi. Jinými slovy, úlohu lze formulovat algebraicky jako (lineární) metoda nejmenších čtverců.

Lineární regresí je tedy i výše popsané proložení bodů přímkou (f_1(x) = x, f_2(x) = 1, f(x) = b_1 x + b_2), ale také parabolou (f_1(x) = x^2, f_2(x) = x, f_3(x) = 1, f(x) = b_1 x^2 + b_2 x + b_3) nebo obecným polynomem. Poznamenejme, že s proložením množiny bodů parabolou, resp. obecným polynomem se můžeme v literatuře setkat pod pojmem kvadratická, resp. polynomická (či polynomiální) regrese.[1]

Koeficienty b_1, \ldots, b_k jsou vypočteny metodou nejmenších čtverců, tedy tak, aby součet druhých mocnin odchylek modelu od daných dat, tj.

S = \sum_{i=1}^n(y_i - f(x_i, b_1, \ldots, b_k) )^2 = \sum_{i=1}^n(b_1 f_1(x_i) + \ldots +  b_k f_k(x_i) - y_i)^2,

byl minimální.

1. způsob výpočtu: parciální derivace[editovat | editovat zdroj]

Pro koeficienty, které minimalizují výše uvedené kritérium S, musí platit, že všechny první parciální derivace kritéria podle těchto koeficientů musí být rovny nule.

\frac{\part S}{\part b_1} = \ldots = \frac{\part S}{\part b_k} = 0

Dalšími úpravami se lze dostat k soustavě lineárních rovnic:

\begin{matrix}
a_{11} b_1 & + & \ldots & + & a_{1k} b_k & = & a_1     \\
\vdots     &   & \ddots &   & \vdots     & = & \vdots  \\
a_{k1} b_1 & + & \ldots & + & a_{kk} b_k & = & a_k     \\
\end{matrix}

Kde jednotlivé prvky a_{jk} a a_j znamenají:

a_{jk} = \sum_{i=1}^n{f_j(x_i) f_k(x_i)}
a_j  = \sum_{i=1}^n{f_j(x_i) y_i}

Výše uvedenou soustavu rovnic lze řešit některou z metod uvedených v článku Soustava lineárních rovnic.

2. způsob výpočtu: přeurčená soustava rovnic[editovat | editovat zdroj]

Jiným způsobem, jak vypočítat hledané koeficienty, je sestavení přeurčené soustavy rovnic a její vyřešení, opět metodou nejmenších čtverců, ale poněkud odlišným postupem. Přeurčená soustava rovnic může vypadat následovně:

\bold A \bold x = \bold b

\bold A = \left[ \begin{matrix} f_1(x_1) & \ldots & f_k(x_1) \\ \vdots & & \vdots \\ f_1(x_n) & \cdots & f_k(x_n) \end{matrix} \right]
, \quad
\bold x = \left[ \begin{matrix} b_1 \\ \vdots \\ b_k \end{matrix} \right]
, \quad
\bold b = \left[ \begin{matrix} y_1 \\ \vdots \\ y_n \end{matrix} \right]
, \quad k \leq n.

Hledané koeficienty, umístěné ve vektoru \bold x, lze, za předpokladu lineární nezávislosti sloupců matice \bold A, vyjádřit vztahem:

\bold x = \left( \bold A^T \bold A \right)^{-1} \bold A^T \bold b

Výpočet na počítači[editovat | editovat zdroj]

Matlab umožňuje soustavu rovnic Ax=b řešit velmi snadno pomocí operátoru \ (zpětné lomítko), tedy x = A \ b. Ekvivalentní je funkce MLDIVIDE, tedy x = mldivide(A, b). [10]

V Excelu lze výše sestavenou přeurčenou soustavu rovnic řešit použitím maticové funkce {=LINEST(known_y's; known_x's; const)} [11] [12] (v českém Excelu LINREGRESE(pole_y; pole_x; b) [13]), kde první parametr known_y's (česky pole_y) je svislá oblast buněk obsahující složky vektoru b a druhý parametr known_x's (česky pole_x) je oblast obsahující prvky matice A. Výsledný vektor x se nachází ve vodorovné oblasti, přičemž jeho složky jsou umístěny v buňkách v opačném pořadí, tedy bk je v buňce nejvíce vlevo a b1 je nejvíce vpravo. Třetí parametr const (česky b) musí být v tomto příkladu roven nule, správné použití tedy je: {=LINEST(b; A; 0)}.

Ovšem nejjednodušším způsobem odhadu parametrů metodou nejmenších čtverců je použití ekonometrického softwaru jako např. STATA, Gretl, Eviews nebo R, kde existují obecné příkazy pro jejich výpočet. Zároveň i tyto programy umožňují jednoduše testovat předpoklady daného modelu.

Převod mocninné a exponenciální regrese na lineární[editovat | editovat zdroj]

Na lineární problém lze transformovat i aproximaci mocninnou funkcí f(x)=a \cdot x^b nebo aproximaci funkcí exponenciální f(x)=a \cdot b^x.

Mocninná funkce[editovat | editovat zdroj]

Problém, jak aproximovat původní data [x_i,y_i] křivkou y=a \cdot x^b lze převést na podobný problém zlogaritmováním rovnice křivky.

\ln(y) = \ln(a) + b \cdot \ln(x),

přičemž místo \ln(a) lze psát c.

\ln(y) = c + b \cdot \ln(x)

Vznikl tak problém, jak aproximovat logaritmovaná původní data [\ln(x_i), \ln(y_i)] přímkou y = c + b \cdot x, který již problémem není. Koeficient a v mocninné funkci lze z koeficientu c vypočítat jako a = e^c.

Exponenciální funkce[editovat | editovat zdroj]

Problém, jak aproximovat původní data [x_i,y_i] křivkou y=a \cdot b^x lze převést na podobný problém zlogaritmováním rovnice křivky.

\ln(y) = \ln(a) + x \cdot \ln(b),

přičemž místo konstant \ln(a) a \ln(b) lze psát c a d.

\ln(y) = c + x \cdot d

Na rozdíl od aproximace mocninnou funkcí, stačí z původních dat logaritmovat pouze hodnoty y_i a řešit problém, jak aproximovat data [x_i, \ln(y_i)] přímkou y = c + d \cdot x. Koeficienty a a b v exponenciální funkci lze z koeficientů c a d vypočítat jako a = e^c, b = e^d.

Reference[editovat | editovat zdroj]

  1. Jiří Likeš, Josef Machek, Matematická statistika, SNTL Praha 1988, s. 165-169

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]

Logo Wikimedia Commons
Wikimedia Commons nabízí obrázky, zvuky či videa k tématu