Eddig trendszámítás/regresszió témakörében két blogbejegyzésem született, amelyeket alább olvashattok. Mindkét bejegyzés a matematikai alapok mély megértésére koncentrál.


A többváltozós regressziónál nem egyetlen független (magyarázó) változó van, hanem több. Ez a gyakorlatban annyit tesz, hogy több faktor írja le a független és függő változók közötti kapcsolatot. A többváltozós lineáris regresszió egyenlete a következőképpen írható fel:

y=β0​+β1​x1​+β2​x2​+⋯+βn​xn​+ε

Ahol β0​ a tengelymetszet, a többi β pedig az n-edik dimenzióhoz tartozó meredekséget írja le.
Fontos, hogy a többváltozós regresszió során többdimenziós függvényeket állítunk elő, amelyek nem keverendők össze a polinomiális trenddel/regresszióval, ami alapvetően kétdimenziós!
Az ε a hibatag, tehát a modellünk ε -al fog eltérni a megfigyelt értékektől.

Lényeges még az is, hogy a trendszámítás és a regressziószámítás matematikailag ekvivalensek, ezért ami az egyikre megáll, a legtöbb esetben a másikra is igaz.

Paraméterek kiszámítása

Ahhoz, hogy megkapjuk a paramétereket, tehát az xn​ -ekhez tartozó meredekségeket, a következő mátrixműveleteket szükséges elvégezni:

b^​=(XTX)−1XTy​

ahol:

  • b^​ : az együtthatóvektor (a becsült paraméterek vektora), tehát a számítás eredménye:

    b^​=⎣⎡​β0​β1​β2​⋮βk​​⎦⎤​
  • X : a magyarázó (független) változók mátrixa, az első oszlopban a tengelymetszethez szükséges egyesekkel

  • y​ : az eredményváltozó (függő változó) megfigyelt értékeinek vektora

X nyilván egy mátrix lesz, ha több mint kettő dimenzióban gondolkodunk, Y pedig egy vektor.

Szeretnék visszautalni az első trendszámítással kapcsolatos cikkemre, amelyben kifejtem, hogy az úgynevezett normálegyenletek az SSE (Sum of Squared Errors) deriváltjának nullára rendezésével kaphatók vissza. Ez igaz a fenti képletre is, csak ez a többdimenziós eset.

Az sajnos hátrányban van, aki nem ismeri a lineáris algebra alapjait. Tervezek írni ezzel kapcsolatban egy cikket és linkelni ehhez a bejegyzéshez.
Fontos, hogy ki kell egészítenünk az X-mátrixot egy csupa egyesekből álló oszloppal, hogy megkapjuk a tengelymetszetet. A végső mátrix valahogy így fog kinézni:

⎣⎡​y1​y2​y3​⋮yn​​⎦⎤​=⎣⎡​111⋮1​x1,1​x2,1​x3,1​⋮xn,1​​x1,2​x2,2​x3,2​⋮xn,2​​………⋱…​x1,k​x2,k​x3,k​⋮xn,k​​⎦⎤​⎣⎡​β0​β1​β2​⋮βk​​⎦⎤​+⎣⎡​ε1​ε2​ε3​⋮εn​​⎦⎤​

Centrálás a nagyobb numerikus pontosság érdekében

Ha az adatsorban nagyon nagy értékek is szerepelnek, akkor a transzponált és az eredeti mátrix szorzása miatt létrejövő négyzetszámok akár túl is léphetik a 64 bites lebegőpontos aritmetika korlátait. Tehát elképzelhető, hogy túl nagy számot kapunk és úgynevezett túlcsordulás következik be.
A centrálás semmi más nem jelent, csak azt, hogy a függő és független változók összes értékéből levonjuk az adott változó átlagát. Így minden egyes érték a nulla körül fog szóródni, és jóval kisebb számokkal dolgozunk, viszont pontosan ugyanazt az eredményt kapjuk vissza. Ebben az esetben az egyesek eltűnnek az első sorból, és a tengelymetszetet csak trükkösen kaphatjuk vissza.
A csupa egyesekből álló oszlop elrejtését és a centrálást követően az X-mátrix így fog kinézni:

Xcentered​=⎣⎡​x1,1​−xˉ1​x2,1...
Source:https://dev.to/kovoliver/tobbvaltozos-regresszio-sajat-python-koddal-j5e