Re: Matriiseilla operointia (Viikon Vinkeimpiä #4)

[vastaus aiempaan viestiin]

Kirjoittaja: Kimmo Vehkalahti
Sähköposti:    -
Päiväys: 21.10.2004 11:04

En vielä paljasta mitään painokerroinmatriisin tekemisestä, johon
usutin eilisessä viestissäni. Sen sijaan heitän lisää löylyä otsikon
suomissa rajoissa.

Tuli mieleen näistä matriiseilla operoinneista ja regressioanalyysin
tulosten tallettamisesta matriisimuotoon (ks. myös "Toivomuksia
täsmennyksistä ym." -keskustelu) pieni esimerkki josta saattaisi
olla iloa joillekuille.

Helsingin yliopiston matematiikan ja tilastotieteen laitoksella
luennoimani Data-analyysi II -kurssin alussa minulla on ollut tapana
kerrata matriisilaskennan käsitteitä numeerisilla laskelmilla. Ohessa
tämän syksyn tehtävän "malliratkaisuja". Jutun viittaukset kohdistuvat
luentomonisteeseeni http://www.helsinki.fi/~kvehkala/da2/moniste.pdf 
sekä Timo Patovaaran vektori- ja matriisilaskennan monisteeseen, joka
on tässä vaiheessa oleville (pääaine)opiskelijoillemme tutumpi kuin
esim. Sepon monimuuttujamenetelmien kirja.

NHL:n työsulku jatkuu, mutta se ei tätä tehtävää haittaa... ;-)

terv. Kimmo

-------------------------------------------------------------------------------

Kimmon kommentteja matriisitehtävistä

Osa käyttämistäni komennoista eroaa hieman ohjeissa annetuista
ja selitystekstiä on valmiiksi annetuissa kohdissa vähemmän.
Vertaa omiin tuloksiisi, pohdi ja kokeile.

........................................................................
Oheisessa taulukossa on NHL:n kauden 2002-2003 runkosarjan
maalintekotilastoja 30 eniten pisteitä keränneen keskushyökkääjän
osalta (muuttujien selitykset taulukon alla):

MATRIX NHL
///          Goals ShortHG EvenSG
Forsberg       29     21      8
Thornton       36     22     12
Lemieux        28     14     14
Modano         28     21      5
Fedorov        36     24     10
Prospal        22     13      9
Lecavalier     33     20     11
Richards       17     13      4
Sundin         37     18     16
Koivu          21     15      5
Morrison       25     17      6
Lang           22     12     10
Cassels        20     10      9
Weight         15      8      7
Jokinen        36     20     13
Yashin         26     12     14
O_Neill        30     19     11
Damphousse     23      8     15
Marchant       20     12      7
White          25     16      8
Nylander       17     10      7
Craig          22     17      5
Roenick        27     18      8
Rucchin        20      1     13
Briere         24      0     15
Zhamnov        15      3     10
Sakic          26      0     18
Nedved         27      3     16
Francis        22      1     13
Elias          28      0     22

Goals    Goals (maalit kaikkiaan)
ShortHG  Short handed goals (alivoimamaalit)
EvenSG   Even strength goals (tasakentällisin tehdyt maalit)

Lähteet: www.nhl.com, www.nhlpa.com

........................................................................

Regressioanalyysia

MAT SAVE NHL / matriisin talletus tiedostoksi NHL.MAT

Dimensiot esille:
MAT DIM NHL /* rowNHL=30 colNHL=3

"Ykköstolppa" kaikkine koristeineen:

MAT I1=CON(rowNHL,1)
MAT NAME I1 AS 1
MAT RLABELS FROM NHL TO I1 / riviotsikoiden kopiointi
MAT I1(0,1)="Vakio" / sarakeotsikko paikalleen

MAT LOAD I1' ### CUR+1 / tehty vektori esille transponoituna
MATRIX I1'
1'
///      For Tho Lem Mod Fed Pro Lec Ric Sun Koi Mor Lan Cas Wei Jok Yas O_N Dam Mar Whi Nyl Cra Roe Ruc Bri Zha Sak Ned Fra Eli
Vakio      1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1

Formaatti ### määrää esitysleveyden; myös otsikot noudattavat sitä.
Sen voi antaa myös numeerisena, esim. 111 tai 123.

Erotetaan Goals vektoriksi Y, asetetaan sen tilalle I1 ja nimetään
näin saatu selittäjien matriisi X:ksi:

MAT Y!=NHL(*,Goals)
MAT NHL(1,1)=I1
MAT X!=NHL         / *X~NHL&1 30*3

MAT LOAD X
MATRIX X
///         Vakio  ShortHG   EvenSG
Forsberg        1       21        8
Thornton        1       22       12
Lemieux         1       14       14
Modano          1       21        5
Fedorov         1       24       10
Prospal         1       13        9
Lecavali        1       20       11
Richards        1       13        4
Sundin          1       18       16
Koivu           1       15        5
Morrison        1       17        6
Lang            1       12       10
Cassels         1       10        9
Weight          1        8        7
Jokinen         1       20       13
Yashin          1       12       14
O_Neill         1       19       11
Damphous        1        8       15
Marchant        1       12        7
White           1       16        8
Nylander        1       10        7
Craig           1       17        5
Roenick         1       18        8
Rucchin         1        1       13
Briere          1        0       15
Zhamnov         1        3       10
Sakic           1        0       18
Nedved          1        3       16
Francis         1        1       13
Elias           1        0       22

MAT LOAD Y
MATRIX Y
///         Goals
Forsberg       29
Thornton       36
Lemieux        28
Modano         28
Fedorov        36
Prospal        22
Lecavali       33
Richards       17
Sundin         37
Koivu          21
Morrison       25
Lang           22
Cassels        20
Weight         15
Jokinen        36
Yashin         26
O_Neill        30
Damphous       23
Marchant       20
White          25
Nylander       17
Craig          22
Roenick        27
Rucchin        20
Briere         24
Zhamnov        15
Sakic          26
Nedved         27
Francis        22
Elias          28

Ortogonaaliprojektori H:

MAT H=X*INV(X'*X)*X'

Projektiomatriisina H:n tulee olla symmetrinen ja idempotentti.
Todetaan ensin symmetrisyys:

MAT EROTUS=H-H'    / *EROTUS~X*INV(X'*X)*X'-(X*INV(X'*X)*X')' 30*30

Tämän pitäisi olla nollamatriisi. Voidaan todeta esim. laskemalla
alkioiden neliöiden summa (pelkkä summa ei riitä, miksi?).

MAT NSUMMA=SUM(SUM(EROTUS,2)')

Sisempi SUM(EROTUS,2) laskee EROTUS-matriisin sarakkeittaiset
neliösummat rivivektoriksi. Se transponoidaan (') ja lasketaan
näin saadusta sarakevektorista alkioiden summa.

Tulos on puhdas nolla kuten pitääkin:

MAT LOAD NSUMMA 1.1234567890123456 CUR+1
MATRIX NSUMMA
SUM(SUM(X*INV(X'*X)*X'-(X*INV(X'*X)*X')',2)')
///                    Sum2
Sum      0.0000000000000000

Huomaa, miten matriisin sisäinen nimi kertoo tarkemmin, miten
lopputulos on syntynyt, ja miten sitä tukevat rivi- ja sarakeotsikot.

Toinen tapa laskea sama asia on koota matriisin alkiot vektoriksi
VEC-operaatiolla ja laskea sitten vektorin alkioiden neliösumma:

MAT NSUMMA=SUM(VEC(EROTUS),2)

Sama numeerinen tulos, eri lauseke, ja hieman eri otsikot:

MAT LOAD NSUMMA 1.1234567890123456 CUR+1
MATRIX NSUMMA
SUM(VEC(X*INV(X'*X)*X'-(X*INV(X'*X)*X')'),2)
///                       1
Sum2     0.0000000000000000

Tietenkin tulos on selvä jo teoreettisen kaavan perusteella:

H-H' = X*INV(X'*X)*X'-(X*INV(X'*X)*X')'
     = X*INV(X'*X)*X'-X*INV(X'*X)*X'
     = 0

Idempotenttisuus selviää samaan tapaan. Väitteenä on, että H^2 = H.

MAT H2=H^2         / *H2~(X*INV(X'*X)*X')^2 30*30
MAT EROTUS=H2-H    / *EROTUS~(X*INV(X'*X)*X')^2-X*INV(X'*X)*X' 30*30
MAT NSUMMA=SUM(SUM(EROTUS,2)')

Lopputulos nähdään myös näin
(aktivoi heti yhtäsuuruusmerkin oikealta puolelta):

MAT_NSUMMA(1,1)=5.2956275586818e-031

(Kyseessä on puhdas nolla, vaikkei se siltä heti näytäkään.)

Ja tietenkin asia selviää teoreettisesti yhtä suoraviivaisesti:

H-H^2 = X*INV(X'*X)*X'-(X*INV(X'*X)*X')^2
      = X*INV(X'*X)*X'-X*INV(X'*X)*X'*X*INV(X'*X)*X'
      = X*INV(X'*X)*X'-X*INV(X'*X)*X'
      = 0


Muodostetaan yksikkömatriisi I ja asetetaan sille samat otsikot
kuin NHL-matriisin riveillä (havaintojen tunnukset):

MAT I=IDN(rowNHL,rowNHL)
MAT RLABELS FROM NHL TO I
MAT I!=I'          / *I~IDN' D30*30
MAT RLABELS FROM NHL TO I
MAT LOAD I # CUR+2 / (kapein mahdollinen formaatti)

MATRIX I
///      F T L M F P L R S K M L C W J Y O D M W N C R R B Z S N F E
Forsberg 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Thornton 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Lemieux  0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Modano   0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Fedorov  0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Prospal  0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Lecavali 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Richards 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Sundin   0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Koivu    0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Morrison 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Lang     0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Cassels  0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Weight   0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Jokinen  0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Yashin   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
O_Neill  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
Damphous 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Marchant 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
White    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Nylander 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Craig    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Roenick  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Rucchin  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Briere   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Zhamnov  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Sakic    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Nedved   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
Francis  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
Elias    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Projektiomatriisi J on ominaisuuksiltaan vastaavankaltainen kuin
edellä tarkasteltu H. Se projisoi y:n aliavaruuteen (suoralle) C(1),
kun taas H projisoi y:n aliavaruuteen C(X) (eli X:n sarakeavaruuteen).

MAT J=I1*INV(I1'*I1)*I1'
MAT LOAD J #.## CUR+2

MATRIX J
1*INV(1'*1)*1'
///      Fors Thor Lemi Moda Fedo Pros Leca Rich Sund Koiv Morr Lang Cass Weig Joki Yash O_Ne Damp Marc Whit Nyla Crai Roen Rucc Brie Zham Saki Nedv Fran Elia
Forsberg 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Thornton 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Lemieux  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Modano   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Fedorov  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Prospal  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Lecavali 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Richards 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Sundin   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Koivu    0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Morrison 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Lang     0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Cassels  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Weight   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Jokinen  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Yashin   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
O_Neill  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Damphous 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Marchant 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
White    0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Nylander 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Craig    0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Roenick  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Rucchin  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Briere   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Zhamnov  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Sakic    0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Nedved   0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Francis  0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03
Elias    0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.03

Matriisissa J esiintyvä luku on yhtäkuin 1/n=0.03333333333333

Tämä selviää miettimällä lausekkeen I1*INV(I1'*I1)*I1'
syvintä olemusta; kyseessähän on pelkkien ykkösten manipulointi.

Lasketaan edellä muodostettujen matriisien avulla joitakin tuloksia:

MAT BHAT=INV(X'*X)*X'*Y   / regressiokertoimet normaaliyhtälöistä (1.7)
MAT LOAD BHAT
MATRIX BHAT
INV(X'*X)*X'*Y
///         Goals
Vakio    1.493070
ShortHG  0.831310
EvenSG   1.265688

MAT YHAT=X*BHAT           / sovite (1.13)
tai
MAT YHAT=H*Y              / sovite (1.13), toinen tapa

MAT LOAD YHAT
MATRIX YHAT
X*INV(X'*X)*X'*Y
///         Goals
Forsberg 29.07608
Thornton 34.97014
Lemieux  30.85104
Modano   25.27901
Fedorov  34.10138
Prospal  23.69129
Lecavali 32.04183
Richards 17.36285
Sundin   36.70766
Koivu    20.29116
Morrison 23.21946
Lang     24.12567
Cassels  21.19736
Weight   17.00337
Jokinen  34.57321
Yashin   29.18842
O_Neill  31.21052
Damphous 27.12887
Marchant 20.32860
White    24.91953
Nylander 18.66598
Craig    21.95378
Roenick  26.58215
Rucchin  18.77833
Briere   20.47840
Zhamnov  16.64388
Sakic    24.27546
Nedved   24.23801
Francis  18.77833
Elias    29.33821

MAT RES=Y-YHAT           / residuaali (1.14)
tai
MAT RES=(I-H)*Y          / residuaali (1.14), toinen tapa

MAT LOAD RES
MATRIX RES
(I-X*INV(X'*X)*X')*Y
///         Goals
Forsberg -0.07608
Thornton  1.02986
Lemieux  -2.85104
Modano    2.72099
Fedorov   1.89862
Prospal  -1.69129
Lecavali  0.95817
Richards -0.36285
Sundin    0.29234
Koivu     0.70884
Morrison  1.78054
Lang     -2.12567
Cassels  -1.19736
Weight   -2.00337
Jokinen   1.42679
Yashin   -3.18842
O_Neill  -1.21052
Damphous -4.12887
Marchant -0.32860
White     0.08047
Nylander -1.66598
Craig     0.04622
Roenick   0.41785
Rucchin   1.22167
Briere    3.52160
Zhamnov  -1.64388
Sakic     1.72454
Nedved    2.76199
Francis   3.22167
Elias    -1.33821

Jos sarakeotsikko "Goals" häiritsee, sen voi vaihtaa:
MAT RES(0,1)="Jäännös"

MAT LOAD RES(Koivu:Jokinen,*),CUR+1 / (vain valitut rivit)
MATRIX RES
(I-X*INV(X'*X)*X')*Y
///       Jäännös
Koivu     0.70884
Morrison  1.78054
Lang     -2.12567
Cassels  -1.19736
Weight   -2.00337
Jokinen   1.42679

Neliösummat (1.21)-(1.23)
MAT SSR=Y'*(H-J)*Y
MAT SSE=Y'*(I-H)*Y
MAT SST=Y'*(I-J)*Y

Nämä ovat siis 1x1-matriiseja eli skalaareja:

MAT DIM SSR /* rowSSR=1 colSSR=1 rankSSR=1
MAT DIM SSE /* rowSSE=1 colSSE=1 rankSSE=1
MAT DIM SST /* rowSST=1 colSST=1 rankSST=1

MAT LOAD SSR
MATRIX SSR
Y'*(X*INV(X'*X)*X'-1*INV(1'*1)*1')*Y
///         Goals
Goals    996.3787

tai MAT_SSR(Goals,Goals)=996.37872798624
tai MAT_SSR(1,1)=996.37872798624

Vastaavat varianssit (tai keskineliöt) (ks. taulukko 1.1)

Dimensiot: n=rowNHL p=colNHL k=p-1

MAT MSR=SSR/k      / *MSR~Y'*(X*INV(X'*X)*X'-1*INV(1'*1)*1')*Y/k D1*1
MAT MSE=SSE/(n-k-1)          / *MSE~Y'*(I-X*INV(X'*X)*X')*Y/(n-k-1) D1*1
MAT MST=SST/(n-1)  / *MST~Y'*(I-1*INV(1'*1)*1')*Y/(n-1) D1*1

........................................................................

Varianssitaulu

Dimensiot: n=30 k=2

  SSR=MAT_SSR(1,1)  MSR=MAT_MSR(1,1)   F=MSR/MSE  p=1-F.F(k,n-k-1,F)
  SSE=MAT_SSE(1,1)  MSE=MAT_MSE(1,1)  s2=MSE
  SST=MAT_SST(1,1)  MST=MAT_MST(1,1)  R2=SSR/SST

    Yleis-F-testin testisuure F=121.1943656918
    liittyy siis hypoteesin (1.25) testaukseen.
    Miten testissä käy, kun p-arvo on p=0.00000000000003
    eli mitä se sanallisesti tarkoittaa?

    Jäännösvarianssin harhaton estimaatti on s2=4.1106643955713
    eli jäännöshajonta on sqrt(s2)=2.0274773477332
    ja mallin selitysaste puolestaan R2=0.89977309050261

Mitä kaikkea saaduista tuloksista voi päätellä?

Tuloksista voi päätellä mm., että ainakin toinen varsinaisten selittäjien
regressiokertoimista poikkeaa tilastollisesti merkitsevästi nollasta.

........................................................................

Otossuureiden laskeminen

Palautetaan aluksi Y (Goals) matriisiin NHL vakion tilalle:
MAT NHL(1,1)=Y
(vakiovektoria tarvittiin vain regressiotarkasteluihin).

Nyt aineisto on siis alkuperäisessä muodossaan:
(sisäinen nimi kertoo edelleen tehdyistä muutoksista)

MAT LOAD NHL
MATRIX NHL
NHL&1&Y
///         Goals  ShortHG   EvenSG
Forsberg       29       21        8
Thornton       36       22       12
Lemieux        28       14       14
Modano         28       21        5
Fedorov        36       24       10
Prospal        22       13        9
Lecavali       33       20       11
Richards       17       13        4
Sundin         37       18       16
Koivu          21       15        5
Morrison       25       17        6
Lang           22       12       10
Cassels        20       10        9
Weight         15        8        7
Jokinen        36       20       13
Yashin         26       12       14
O_Neill        30       19       11
Damphous       23        8       15
Marchant       20       12        7
White          25       16        8
Nylander       17       10        7
Craig          22       17        5
Roenick        27       18        8
Rucchin        20        1       13
Briere         24        0       15
Zhamnov        15        3       10
Sakic          26        0       18
Nedved         27        3       16
Francis        22        1       13
Elias          28        0       22

Nimetään matriisi kuitenkin pelkäksi NHL:ksi (ts. unohdetaan
sisäinen nimi NHL&1&Y):
MAT NAME NHL AS NHL

Lasketaan otoskovarianssimatriisi S (ks. esim. Patovaara s. 177).
Projektori I-J suorittaa tässä havaintomatriisin keskistyksen.
Mieti miten se tapahtuu, matriisit I ja J on esitelty edellä!

MAT S!=NHL'*(I-J)*NHL
MAT LOAD S
MATRIX S
///         Goals  ShortHG   EvenSG
Goals     1107.37   740.13   301.10
ShortHG    740.13  1609.87  -472.60
EvenSG     301.10  -472.60   548.30

Koska muuttujien vaihteluvälit ovat hieman erilaisia, ovat
kovarianssitkin melko erisuuruisia. Ei ole suositeltavaa (useinkaan)
lähteä analysoimaan aineistoa kovarianssimatriisin pohjalta.
Niinpä standardoidaan tilanne, ts. siirrytään korrelaatioihin.

Erotetaan kovarianssimatriisin päädiagonaali (siis varianssit)
lävistäjämatriisiksi D. Lasketaan alkioiden neliöjuuret (eli
korotetaan ne potenssiin 0.5) jolloin saadaan keskihajonnat.
Samalla otetaan käänteisluvut näistä (negatiivinen eksponentti).

MAT D=DIAG(S)^(-0.5)
MAT LOAD D
MATRIX D
DIAG(S)^(-0.5)
///         Goals  ShortHG   EvenSG
Goals    0.030051 0.000000 0.000000
ShortHG  0.000000 0.024923 0.000000
EvenSG   0.000000 0.000000 0.042706

Kerrotaan S tällä lävistäjämatriisilla edestä ja takaa, jolloin
S:n alkiot (kovarianssit) tulevat jaetuiksi vastaavilla
hajonnoilla. Diagonaalille pitäisi silloin tulla ykköset ja
ulkopuolelle välillä [-1,1] olevia lukuja. Katsotaan:

MAT R=D*S*D
MAT LOAD R
MATRIX R
DIAG(S)^(-0.5)*S*DIAG(S)^(-0.5)
///         Goals  ShortHG   EvenSG
Goals     1.00000  0.55433  0.38642
ShortHG   0.55433  1.00000 -0.50303
EvenSG    0.38642 -0.50303  1.00000

Tarkastetaan tulos Survon CORR-operaatiolla käyttäen NHL-matriisia
havaintoaineistona (siksi tässä ".MAT"):

CORR NHL.MAT     / lasketaan keskiarvot, hajonnat ja korrelaatiot
MAT LOAD CORR.M  / otetaan näkyville vain korrelaatiomatriisi
MATRIX CORR.M
R(NHL.MAT)
///         Goals  ShortHG   EvenSG
Goals     1.00000  0.55433  0.38642
ShortHG   0.55433  1.00000 -0.50303
EvenSG    0.38642 -0.50303  1.00000

Eri operaatioiden (kuten CORR) tulosmatriisien nimessä on ".M" perässä,
muuten ne ovat aivan samanlaisia kuin matriisitulkilla tehdyt, ja niitä
voi käsitellä samalla tavalla.)

........................................................................

Korrelaatiot, toinen tapa

Toinen tapa laskea korrelaatiomatriisi perustuu matriisitulkin
erilaisten valmiiden funktioiden käyttöön. Seuraavassa tapahtuu
(sisimmistä suluista lähtien) 1. keskistys (CENTER), 2. normeeraus
(NRM), ja 3. tulosummien laskenta (MTM). Viimeksi mainittu tekee
tilastotieteen sovelluksissa erittäin yleisen "matriisin transpoosin
kerrottuna matriisilla itsellään", siis tyyppiä X'X olevan laskun.
Vastaava operaatio toisinpäin (XX') on MMT, ja muitakin samantyyppisiä
löytyy kyselyllä MAT - B - C.

MAT R=MTM(NRM(CENTER(NHL)))
MAT LOAD R
MATRIX R
NRM(CENTER(NHL))'*NRM(CENTER(NHL))
///         Goals  ShortHG   EvenSG
Goals     1.00000  0.55433  0.38642
ShortHG   0.55433  1.00000 -0.50303
EvenSG    0.38642 -0.50303  1.00000

CENTER-funktion sivutuotteena syntyy rivivektori MEAN:

MAT LOAD MEAN
MATRIX MEAN
MEAN(NHL)
///         Goals  ShortHG   EvenSG
Mean     25.23333 12.26667 10.70000

NRM-funktion sivutuotteena syntyy rivivektori NORM:

MAT LOAD NORM
MATRIX NORM
NORM(CENTER(NHL))
///         Goals  ShortHG   EvenSG
Norm     33.27712 40.12314 23.41581

Skaalaamalla nämä luvut saadaan sarakkeiden keskihajonnat:

MAT NORM=(1/sqrt(n-1))*NORM   / n=30
MAT LOAD NORM
MATRIX NORM
(1/sqrt(n-1))*NORM(CENTER(NHL))
///         Goals  ShortHG   EvenSG
Norm     6.179406 7.450681 4.348206

Verrataan edellä CORR-komennolla saatuihin tuloksiin (CORR tallettaa
myös MSN.M-nimisen matriisin, jossa on keskiarvot, hajonnat ja
havaintojen lukumäärät muuttujittain):

MAT LOAD MSN.M
MATRIX MSN.M
MSN(NHL.MAT)
///          mean   stddev  N
Goals    25.23333  6.17941 30.00000
ShortHG  12.26667  7.45068 30.00000
EvenSG   10.70000  4.34821 30.00000

Jos halutaan katsella vektoreita samoin päin kuin yllä, voidaan ottaa
tiedot esille vaikkapa näin:

MAT LOAD MSN.M'(mean:stddev,*)
MATRIX MSN.M'
MSN(NHL.MAT)'
///         Goals  ShortHG   EvenSG
mean     25.23333 12.26667 10.70000
stddev    6.17941  7.45068  4.34821

........................................................................

Muita matriisilaskelmia

Spektraalihajotelma (symmetrisen matriisin pääakseliesitys):
(ks. esim. Patovaara s. 243)

MAT SPECTRAL DECOMPOSITION OF R TO U,L

MAT LOAD L / ominaisarvot (talletettuna pystyvektorina)
MATRIX L
L(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///      eigenval
ev1      1.583204
ev2      1.382594
ev3      0.034202

MAT LOAD U / ominaisvektorit
MATRIX U
S(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///           ev1      ev2      ev3
Goals     0.52941 -0.62793  0.57047
ShortHG   0.78361  0.10425 -0.61245
EvenSG   -0.32510 -0.77126 -0.54723

MAT L=DV(L)        / Diagonaalimatriisi Vektorista L
MAT R2=U*L*U'      / pääakseliesitys (ULU') (teor. L yleensä Lambda)
MAT EROTUS=R2-R    / *EROTUS~... 3*3
MAT LOAD EROTUS
MATRIX EROTUS
...
///         Goals  ShortHG   EvenSG
Goals     0.00000  0.00000  0.00000
ShortHG   0.00000  0.00000 -0.00000
EvenSG    0.00000 -0.00000  0.00000



Singulaariarvohajotelma:
(ks. esim. Patovaara s. 280)

MAT SVD OF R TO U,D,V
tai
MAT SINGULAR VALUE DECOMPOSITION OF  R TO U,D,V

MAT LOAD U / vasemmanpuoleiset singulaarivektorit
MATRIX U
Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///          svd1     svd2     svd3
Goals     0.52941  0.62793  0.57047
ShortHG   0.78361 -0.10425 -0.61245
EvenSG   -0.32510  0.77126 -0.54723

MAT LOAD D / singulaariarvot (talletettuna pystyvektorina)
MATRIX D
Dsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///      sing.val
svd1     1.583204
svd2     1.382594
svd3     0.034202

Huom. Tässä tapauksessa singulaariarvot ja ominaisarvot ovat samat,
koska R on symmetrinen ja positiivisesti definiitti matriisi.
Yleisesti ko. arvot eivät ole samoja (ks. esim. Patovaara s. 282).

MAT LOAD V / oikeanpuoleiset singulaarivektorit
MATRIX V
Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///          svd1     svd2     svd3
Goals     0.52941  0.62793  0.57047
ShortHG   0.78361 -0.10425 -0.61245
EvenSG   -0.32510  0.77126 -0.54723

MAT D=DV(D)        / (vast. kuin edellä)
MAT R2=U*D*V'      / singulaariarvohajotelman perusmuoto (UDV')
MAT EROTUS=R2-R    / *EROTUS~... 3*3
MAT LOAD EROTUS
MATRIX EROTUS
...
///         Goals  ShortHG   EvenSG
Goals    -0.00000 -0.00000  0.00000
ShortHG  -0.00000  0.00000 -0.00000
EvenSG   -0.00000 -0.00000  0.00000

Molemmissa hajotelmissa ominais/singulaarivektoreiden matriisit
ovat ortogonaalisia eli rivit/sarakkeet ovat ykkösen mittaisia
ja niiden sisätulot ovat nollia (ts. ne ovat ortonormaalisia).
Ensimmäisen ominaisuuden voi tarkistaa mm. NRM-operaatiolla:

MAT N=NRM(U)      / *N~NRM(Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))) 3*3
MAT LOAD NORM / vektorien pituudet NORM-matriisissa
MATRIX NORM
NORM(Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL))))
///          svd1     svd2     svd3
Norm     1.000000 1.000000 1.000000

MAT N=NRM(V)     / *N~NRM(Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))) 3*3
MAT LOAD NORM
MATRIX NORM
NORM(Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL))))
///          svd1     svd2     svd3
Norm     1.000000 1.000000 1.000000

Ortogonaalisuus selviää kätevimmin laskemalla tulosummamatriiseja
U'U, VV' jne., sillä niiden tulisi olla yksikkömatriiseja:

MAT T1=U'*U        / *T1~Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'*Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL))) S3*3
MAT LOAD T1
MATRIX T1
Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'*Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///          svd1     svd2     svd3
svd1      1.00000 -0.00000  0.00000
svd2     -0.00000  1.00000  0.00000
svd3      0.00000  0.00000  1.00000

MAT T2=U*U'         / *T2~Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))*Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))' S3*3
MAT LOAD T2
MATRIX T2
Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))*Usvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'
///         Goals  ShortHG   EvenSG
Goals     1.00000 -0.00000 -0.00000
ShortHG  -0.00000  1.00000 -0.00000
EvenSG   -0.00000 -0.00000  1.00000

MAT T3=V'*V        / *T3~Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'*Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL))) S3*3
MAT LOAD T3
MATRIX T3
Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'*Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))
///          svd1     svd2     svd3
svd1      1.00000 -0.00000 -0.00000
svd2     -0.00000  1.00000 -0.00000
svd3     -0.00000 -0.00000  1.00000

MAT T4=V*V'        / *T4~Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))*Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))' S3*3
MAT LOAD T4
MATRIX T4
Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))*Vsvd(NRM(CENTER(NHL))'*NRM(CENTER(NHL)))'
///         Goals  ShortHG   EvenSG
Goals    1.000000 0.000000 0.000000
ShortHG  0.000000 1.000000 0.000000
EvenSG   0.000000 0.000000 1.000000



QR-hajotelma:
(vrt. esim. Patovaara s. 76 ja Gram-Schmidt alla)
Soveltuu myös ei-symmetriselle matriisille kuten tässä alkuperäinen
havaintomatriisi NHL. Tuloksena numeerisen laskennan kannalta
edulliset ortogonaalinen matriisi Q ja yläkolmiomatriisi R:

MAT QR OF NHL TO Q,R

MAT DIM Q /* rowQ=30 colQ=30
MAT DIM R /* rowR=30 colR=3
/MATSHOW Q
/MATSHOW R

MAT NHL2=Q*R         / *NHL2~Q(NHL)*R(NHL) 30*3
MAT EROTUS=NHL2-NHL  / *EROTUS~Q(NHL)*R(NHL)-NHL 30*3
/MATSHOW EROTUS (15)



Gram-Schmidt-hajotelma:
Vastaavanlainen hajotelma kuin QR, huomaa kuitenkin erot muodostuvien
matriisien dimensioissa.
(ks. esim. Patovaara s. 76)

MAT GRAM-SCHMIDT DECOMPOSITION OF NHL TO S,U

MAT DIM S /* rowS=30 colS=3
MAT DIM U /* rowU=3 colU=3
/MATSHOW S
/MATSHOW U

MAT NHL2=S*U         / *NHL2~GS(NHL)*GU(NHL) 30*3
MAT EROTUS=NHL2-NHL  / *EROTUS~GS(NHL)*GU(NHL)-NHL 30*3
/MATSHOW EROTUS (15)


Matriisihajotelmat tarjoavat numeerisesti stabiilimpia tapoja laskea
mm. regressioanalyysin tuloksia. Lisäksi hajotelmilla on keskeisiä
tehtäviä muissakin menetelmissä (mm. useat monimuuttujamenetelmät
palautuvat oleellisesti singulaariarvohajotelman laskemiseen).

........................................................................

-------------------------------------------------------------------------------

Vastaukset:

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.