Zbornik Instituta za kriminološka i sociološka istraživanja

2005 / Vol. XXIV / 1-2 / 213-232

Originalni naučni rad

UDK: 159.9.072.5

 

JEDAN NOVI METOD ZA ROTACIJU U DISKRIMINACIONOJ ANALIZI

 

Lazar Tenjović i Aleksandar Zorić

Filozofski fakultet Univerziteta u Beogradu

 

Radi jednostavnije interpretacije diskriminacionih funkcija dobijenih kanoničkom diskriminacionom analizom primenjuju se različiti postupci rotacije matrice strukture ili matrice koeficijenata za funkciju. U ovom radu predložen je Centrovax postupak rotacije matrice strukture i matrice koeficijenata koji se zasniva na prethodnoj rotaciji matrice centroida grupa na značajnim diskriminacionim funkcijama. Program za implementaciju predloženog algoritma napisan je u MATRIX jeziku, a predloženi postupak rotacije prikazan je na jednom ilustrativnom numeričkom primeru.

 

KLJUČNE REČI: kanonička diskriminaciona analiza / rotacija centroida

 

„...i za metodu koja se ovde predlaže potrebne su brojne empirijske provere njenog stvarnog ponašanja

da bi se mogao doneti konačan sud o njenoj vrednosti, upotrebljivosti i korisnosti, bez obzira na formalnu adekvatnost operacija na osnovu kojih je ta metoda izvedena“.

Konstantin Momirović

 

UVOD

 

Kanonička diskriminaciona analiza uobičajeno se primenjuje za analizu razlika između dveju ili više subpopulacija u pogledu skupa kvantitativnih normalno distribuiranih varijabli (Rao, 1965; Anderson, 1984; Momirović, 1997). Pri tumačenju strukture razlika između subpopulacija od prvorazrednog značaja je otkrivanje sadržaja značajnih diskriminacionih funkcija. Sadržaj diskriminacionih funkcija identifikuje se na osnovu matrice koeficijenata i matrice strukture ovih funkcija (Tatsuoka, 1971; Momirović & Zorić, 1996). Radi lakše identifikacije diskriminacionih funkcija matrice koeficijenata i strukture se često rotiraju (Rencher, 1992; Lunneborg & Lunneborg, 1978).

Kanonička diskriminaciona analiza često se koristi i za analizu razlika između grupa koje su rezultat neke prethodno izvedene analize grupisanja (Tenjović, 2002). U tom slučaju osnovni problem koji treba rešiti nije definisanje prirode razlika između grupa već teorijsko definisanje samih grupa. Definisanje grupa u takvim situacijama vršimo prvenstveno na osnovu matrice centroida na diskriminacionim funkcijama. Jedan od načina da se olakša korišćenje matrice centroida u definisanju grupa mogao bi se sastojati u rotaciji ove matrice u poziciju u kojoj su grupe predstavljene centroidima koji su što je moguće više međusobno udaljeni i, istovremeno, raspoređeni tako da njihov raspored na različitim funkcijama bude što jednostavniji.

 

PRELIMINARNE DEFINICIJE

 

Neka je E skup entiteta koji je na slučajan način izvučen iz jedne nehomogene populacije P koja se sastoji od g subpopulacija

E = {ei, i = 1,...,n} Ì P = ÈPk,  k = 1,...,g

i neka skup V predstavlja reprezentativan uzorak varijabli iz univerzuma varijabli U

V = {vј, ј = 1,...,m} Ì U

koje su multivarijatno normalo distribuirane u svakoj od subpopulacija Pk. Tada se opisom entiteta iz skupa E na skupu varijabli V dobija matrica

Z = (z) = E Ä V

pri čemu element zij predstavlja meru i-tog entiteta na j-toj varijabli. Radi jednostavnosti u notaciji pretpostavimo da važe sledeće jednakosti

Zte = 0

diag (ZtZ) = I

pri čemu e predstavlja sumacioni vektor reda n, a I matricu identiteta reda m. Tada se matrica interkorelacija varijabli iz skupa V, u oznaci R, definiše na sledeći način:

R = ZtZ

Neka je W jedna nominalna varijabla koja na dovoljan i potpun način definiše subpopulacije iz P. Varijabla W sadrži g modaliteta:

W = {wk, k = 1,..., g}

U tom slučaju opisom entiteta iz skupa E na varijabli W dobijamo matricu S,

S = (sik) = E Ä W

koja predstavlja selektorsku matricu, dakle matricu u kojoj je varijabla W predstavljena u kompletnoj disjunktnoj formi. Elementi matrice S, u oznaci sik određeni su na osnovu sledećeg pravila:

sik = 1 ½ еi Î wk sik = 0 ½ еi Ï wk

Unakrsni proizvod matrice S predstavlja regularnu matricu. Prema tome, nema nepraznih kategorija nominalne varijable W u uzorku entiteta E.

Definišimo projektorsku matricu

P = S(StS)-1St

i matricu

G = PZ = S(StS)-1StZ

koja predstavlja projekcije vektora iz Z u prostor koji razapinju vektori iz S. Element gij u matrici G predstavlja aritmetičku sredinu varijable vj za subpopulaciju kojoj element ei pripada.

Unakrsni proizvod matrice G je matrica A:

A = GtG = ZtPtPZ = ZtPZ = ZtS(StS)-1StZ

koja, budući da je jednaka i proizvodu matrica Z i G, predstavlja matricu međugrupnog varijabiliteta. Naravno, u tom slučaju je matrica unutargrupnog varijabiliteta W jednaka

W = R A

 

KANONIČKA DISKRIMINACIONA ANALIZA

 

Kanonička diskriminaciona analiza je metoda koja ekstremizuje linearne veze između linearne kombinacije kvantitativnih varijabli iz skupa V i nominalne varijable W, ili, drugačije rečeno, metoda koja ekstremizuje linearne veze između vektora matrice Z i matrice G. Na ovaj način definisan problem može se zapisati ovako:

Zxp = kp

Gyp = lp

rp = k tl = x tZtGy = x tAy = max

k tk = x tZtZx = x tRx = d

l tl = y tGtGy = y tAy = d

k tl = 0,  p ¹ q

p, q = 1,...,b , b = min (g – 1, m)

 

Pri tome dpq predstavlja Kronekerov simbol. Postavljeni problem ekstremizacije sa konzistentnim linearnim ograničenjima može se rešiti metodom Lagranžovih multiplikatora definisanjem funkcije

F(xp, yp, lp, hp) = xptAyp - lp(xptRxp - 1) - hp(yptAyp - 1),

 

te njenim parcijalnim diferenciranjem po nepoznatim argumentima,

F / ¶xp = Ayp - 2lpRxp

F / ¶yp = Axp - 2hpAyp

i izjednačavanjem dobijenih izvoda sa nulom. Sređivanjem ovih izraza i množenjem sleva prvog izraza sa x t, a drugog sa y t dobija se

p                                                                                               p

rp = xptAyp = 2lpxptRxp = 2lp

rp = yptAxp = 2hpyptAyp = 2hp

Iz prethodnih jednakosti sledi da je

lp = hp

Na osnovu izvedenih relacija dobijaju se sledeće jednakosti:

Ayp = rpRxp

Axp = rpAyp

Sređivanjem drugog izraza dobija se relacija između vektora linearnih koeficijenata za varijable iz matrice Z i koeficijenata za varijable iz matrice G

yp = rp-1xp

Na osnovu ove relacije i izraza Ayp = rpRxp sledi

rp-1Axp = rpRxp

Daljim sređivanjem dobijamo

(A - rp2R)xp = 0

čime se problem svodi na opšti problem svojstvenih vrednosti. Svojstvene vrednosti dobijene rešavanjem ovog problema predstavljaju kvadrate kanoničkih korelacija, a svojstveni vektori koji odgovaraju dobijenim svojstvenim vrednostima služe za konstruisanje kanoničkih diskriminacionih funkcija.

 

Neka je

X = (xp), p = 1,...,b

matrica čije su kolone netrivijalni svojstveni vektori matrice R-1A, a

P = (rpp), p = 1,...,b

dijagonalna matrica sa koeficijentima kanoničkih korelacija na dijagonali. Tada je

K = ZX

matrica kanoničkih diskriminacionih funkcija. Na osnovu uslova pod kojima se rešava problem ekstremizacije važe i sledeće jednakosti:

XtRX = I XtAX = P2

Prema tome linearne kombinacije početnih varijabli iz Z i početnih varijabli iz G čine biortogonalni sistem varijabli, ali koeficijenti u matricama X i Y nisu ortogonalni.

Interpretacija kanoničkih diskriminacionih funkcija uobičajeno se zasniva na matrici koeficijenata za diskriminacione funkcije (matrici X) i matrici strukture. Matrica strukture diskriminacionih funkcija, tj. matrica korelacija početnih varijabli iz matrice Z i kanoničkih diskriminacionih funkcija iz matrice K, u oznaci F, definisana je na sledeći način:

F = ZtK = ZtZX = RX

Identifikacija sadržaja kanoničkih diskriminacionih funkcija vrši se i na osnovu položaja ispitivanih grupa na dobijenim diskriminacionim dimenzijama. U tu svrhu koristi se matrica centroida, u oznaci C, koja je definisana na sledeći način:

C = (ckj) = (StS)-1StK ,         k = 1,...,g     j = 1,...,b.

Pri tome, element ckj matrice C predstavlja aritmetičku sredinu grupe k na diskriminacionoj funkciji j.

 

DEFINICIJA CENTROVAX POSTUPKA ROTACIJE

 

Radi lakše interpretacije prirode diskriminacionih funkcija primenjuju se različiti postupci rotacije matrica koeficijenata i strukture. Na taj način pojednostavljuje se i struktura razlika između ispitivanih subpopulacija. Kada je primarni cilj kanoničke diskriminacione analize identifikacija grupa, a ne identifikacija strukture razlika između grupa, što je vrlo čest slučaj kada su grupe definisane kao rezultat neke taksonomske tehnike, nameće se problem transformacije matrice centroida u interpretativno pogodnu poziciju. Takvu transformaciju matrice centroida moguće je izvesti nekom od ortogonalnih tehnika rotacije, koje zadržavaju ortogonalnost diskriminacionih funkcija.

Problem pogodne transformacije matrice centroida C može se definisati na sledeći način:

CT = D ½ f(D) = ext,  TtT = TTt = I

pri čemu matrica T predstavlja transformacionu matricu, a funkcija f neku parsimonijsku funkciju kakva je, na primer, Varimaks H.Kajzera. Varimaks funkcija, kao što je poznato, maksimizuje varijansu kolona matrice čiji su elementi kvadrirani. U skalarnom obliku ova funkcija može se zapisati na sledeći način (Mulaik 1972, str. 259):

 

Pri tome, dkj predstavlja element u redu k i koloni j, a g broj elemenata u koloni matrice koju treba rotirati.

Korišćenje transformacione matrice T za rotaciju matrice centroida u neku parsimonijsku poziciju može se protumačiti i kao rotacija diskriminacionih funkcija u položaj u kojem centroidi grupa na tim funkcijama grade jednostavnu strukturu. Naime, budući da je

CT = (StS)-1StKT = (StS)-1StZXT

očigledno je da se ortogonalna rotacija matrice centroida istovremeno može posmatrati i kao rotacija diskriminacionih funkcija. Prema tome transformacionu matricu T moguće je upotrebiti za ortogonalnu rotaciju matrice koeficijenata i matrice strukture.

Na osnovu ovoga sledi da je rotirana matrica koeficijenata za diskriminacione funkcije u stvari matrica Xr

Xr = XT

tj. da su rotirane diskriminacione funkcije u matrici Kr

Kr = ZXr = ZXT = KT

a matrica strukture rotiranih funkcija Fr

Fr = ZtKr = ZtKT = FT

predstavlja rotiranu originalnu matricu strukture. Naravno, diskriminacione funkcije posle rotacije ostaju ortogonalne jer je matrica kovarijansi rotiranih diskriminacionih funkcija:

KrtKr = TtXtZtZXT = TtXtRXT = TtT = I

Koeficijenti kanoničkih korelacija koji odgovaraju rotiranim diskriminacionim funkcijama jednaki su dijagonalnim elementima matrice Pr koja je definisana na sledeći način:

Pr = KrtL = TtXtZtGY = TtXtAY = TtXtAXP-1

 

PROGRAMSKA IMPLEMENTACIJA PREDLOŽENOG METODA

 

Makro program CENTVAX za Centrovax postupak rotacije implementiran je u MATRIX jeziku statističkog paketa SPSS.1 Način njegovog aktiviranja objašnjen je na početku priloženog simboličkog koda.

 

1 Makro program nije mogao biti nazvan po nazivu postupka jer SPSS (barem do verzije 11.5) ne dozvoljava da ime makro programa ima više od osam karaktera!

 

Numerički primer

 

Slučajnom uzorku 307 srednjoškolaca muškog pola iz učeničkih internata u Beogradu, uzrasta od 15 do 18 godina, zadat je Ahenbahov "Upitnik samoprocene za mlade". Na osnovu ukupnih rezultata na osam skala problema u ponašanju (TWS = skala povlačenja, TSCS = skala somatskih teškoća, TADS = skala anksioznosti/depresivnosti, TSPS = skala socijalnih problema, TTPS = skala problema u mišljenju, TAPS = skala problema pažnje, TDBS = skala delinkventnog ponašanja, TABS = skala agresivnog ponašanja) dečaci su grupisani u pet grupa primenom postupka "pokretnih sredina" (K-means algoritam). Radi identifikacije dobijenih grupa primenjena je kanonička diskriminaciona analiza u kojoj su korišćene iste varijable na osnovu kojih su učenici grupisani. U Tabeli 1 prikazane su veličine grupa koje su dobijene postupkom grupisanja, a u tabelama 2, 3, 4 i 5 rezultati kanoničke diskriminacione analize pre primene postupka rotacije.

 

Tabela 1.

Veličine grupa dobijenih postupkom "pokretnih sredina"

Grupa

n

%

g1

79.0

25.7

g2

39.0

12.7

g3

98.0

31.9

g4

13.0

4.2

g5

78.0

25.4

 

Tabela 2.

Kanoničke korelacije (kolona rho) i ishodi asimptotskih testova značajnosti (kolone f i sig) kanoničkih diskriminacionih funkcija

Funkcija

rho

f

sig

f1

.913

1530.511

.000

f2

.737

361.668

.000

f3

.468

85.414

.000

f4

.056

.973

.325

 

Kao što se iz Tabele 2 može videti prve tri diskriminacione funkcije su statistički značajne. U kolonama Tabele 3 prikazani su koeficijenti za statistički značajne diskriminacione funkcije, a u Tabeli 4 prikazana je struktura značajnih diskriminacionih funkcija.

 

Tabela 3.

Nerotirana matrica koeficijenata statistički značajnih kanoničkih diskriminacionih funkcija

Početne  varijable

f1

f2

f3

TWS

-.092

.247

-.192

TSCS

-.063

.135

1.070

TADS

-.286

.696

-.482

TSPS

.015

.045

.045

TTPS

-.051

.082

.220

TAPS

-.181

-.101

-.360

TDBS

-.066

.022

.239

TABS

-.580

-.808

-.209

 

Tabela 4.

Nerotirana matrica strukture kanoničkih diskriminacionih funkcija

Početne varijable

f1

f2

f3

TWS

-.498

.557

-.059

TSCS

-.559

.292

.716

TADS

-.726

.619

-.155

TSPS

-.433

.354

-.088

TTPS

-.559

.262

.205

TAPS

-.754

.112

-.150

TDBS

-.666

-.151

.226

TABS

-.876

-.457

.008

 

Nerotirana matrica centroida grupa na kanoničkim diskriminacionim funkcijama

Grupe

f1

f2

f3

g1

-.281

.992

-.426

g2

-1.467

-.875

-.353

g3

.135

-.668

.083

g4

-2.039

1.057

1.845

g5

1.188

.095

.196

 

Radi pojednostavljenja identifikacije grupa dobijenih postupkom grupisanja početne matrice centroida, matrica strukture i matrica koeficijenata za značajne diskriminacione funkcije rotirane su Centrovax postupkom, tj. korišćenjem transformacione matrice koja je prikazana u Tabeli 6. Matrice dobijene rotacijom početnih matrica prikazane su u tabelama 7, 8 i 9.

 

Tabela 6.

Transformaciona matrica

 

f1

f2

f3

f1

.651

.730

.209

f2

-.373

.548

-.749

f3

-.661

.409

.629

 

Tabela 7.

Rotirana matrica koeficijenata kanoničkih diskriminacionih funkcija

Početne varijable

f1

f2

f3

TWS

-.026

-.010

-.325

TSCS

-.799

.465

.559

TADS

-.127

-.025

-.884

TSPS

-.037

.055

-.002

TTPS

-.209

.097

.067

TAPS

.158

-.335

-.189

TDBS

-.209

.061

.120

TABS

.062

-.951

.352

 

Tabela 8.

Rotirana matrica strukture kanoničkih diskriminacionih funkcija

Početne varijable

f1

f2

f3

TWS

-.493

-.083

-.558

TSCS

-.947

.045

.115

TADS

-.601

-.255

-.713

TSPS

-.356

-.158

-.411

TTPS

-.597

-.181

-.184

TAPS

-.434

-.551

-.336

TDBS

-.526

-.477

.116

TABS

-.405

-.887

.164

 

Tabela 9.

Rotirana matrica centroida grupa na kanoničkim diskriminacionim funkcijama

Grupe

f1

f2

f3

g1

-.271

.164

-1.070

g2

-.394

-1.694

.126

g3

.282

-.233

.581

g4

-2.942

-.155

-.058

g5

.608

.999

.301

 

Rezultati dobijeni Centrovax postupkom rotacije pokazuju da grupu 4 (g4) čine mladići iz internata koji imaju veoma izražene probleme ponašanja, a pre svega sklonost somatizaciji problema, anksioznost, depresivnost i probleme mišljenja. Grupu 5 čine mladići sa najmanje izraženim problemima ponašanja, a, pre svega, smanjenom agresivnošću, delinkventnošću i problemima pažnje, a grupu 2 oni mladići kod kojih su ovi problemi veoma izraženi. Grupu 1 odlikuje sklonost povlačenju, anksioznost i depresivnost ali i nesklonost somatizacijama problema. Na kraju, grupa 3 odlikuje se društvenošću koja je udružena sa agresivnošću i odsustvom somatskih teškoća.

U Tabeli 10 prikazani su koeficijenti kanoničke korelacije (Rho_rot) koji odgovaraju rotiranim dikriminacionim funkcijama. Očigledno, postignuta jednostavost u strukturi centroida grupa ima "cenu" koja se iskazuje smanjenjem koeficijenta kanoničke korelacije. Ovo ne čudi, budući da primenjeni postupak rotacije dovodi do toga da se na svakoj diskriminacionoj funkciji izdvoji jedna grupa koja je udaljena od presotalih grupa, dok se razlike među ostalim grupama umanjuju.

 

Tabela 10.

Koeficijenti kanoničke korelacije posle rotacije

Funkcija

Rho_rot

f1

.594

f2

.403

f3

.294

 

ZAKLJUČAK

 

Postupak rotacije matrice centroida koji je prikazan u ovom radu može biti koristan pre svega u situacijama kada je potrebno definisati karakter grupa koje su dobijene nekom prethodnom analizom grupisanja ili eksperimentalnom selekcionom procedurom. Interpretacija ili definisanje karaktera grupa olakšano je ovim postupkom rotacije budući da postupak dovodi do toga da se na svakoj rotiranoj diskriminacionoj funkciji najčešće izdvaja po jedna grupa koja je bitno različita od ostalih. Naravno, postupak nije moguće primeniti u situacijama kada postoji samo jedna značajna diskriminaciona funkcija. Potrebne su dodatne empirijske provere ponašanja ovog postupka kako bi se utvrdila stvarna korist od njegove primene.

 

LITERATURA

 

(1)   ANDERSON, T.W. (1984). An Introduction to Multivariate Statistical Analysis, New York: Wiley.

(2)   LUNNEBORG, C.E., & LUNNEBORG, P.W. (1978). Improved counseling information through rotation of discriminant functions, Educational and Psychological Measurement, 38, 737–754.

(3)   MULAIK, S.A. (1972). The foundations of factor analysis, New York: McGraw-Hill Inc.

(4)   MOMIROVIĆ, K. (1997). O diskriminativnim funkcijama, diskriminativnim faktorima i nekim očiglednim glupostima, Statistička revija, 46, 79–100.

(5)   MOMIROVIĆ, K. & ZORIĆ, A. (1996). On the variance, reliability, significance and importance of canonical discriminant functions, U S. Bogosavljević i M. Kovačević, Analiza grupisanja, 2 (str. 79-91), Beograd: Savezni zavod za statistiku.

(6)   RAO, C.R. (1974). Linear statistical inference and its application, Second edition, New Delhi: Wiley Eastern Private Limited.

(7)   RENCHER, A. (1992). Interpretation of Canonical Discriminant Functions, Canonical Variates, and Principal Components, American Statistician, 46, 217–225.

(8)   TATSUOKA, M.M. (1971). Multivariate analysis. New York: John Wiley & Sons, Inc.

(9)   TENJOVIĆ, L. (2002). Statistika u psihologiji priručnik, Beograd:Centar za primenjenu psihologiju.

 

 

PRILOG: KOD PROGRAMA ZA CENTROVAX ROTACIJU

 

preserve

set printback=no mprint=no mxloops=999

*

*                                                                    CENTVAX MACRO

*                                               Program za Centrovax rotaciju matrice centroida

*                                                     u kanonickoj diskriminacionoj analizi

*                                                        Napisali A. Zoric & L. Tenjovic

*                                                                    Verzija 1.0.

*                                                                     10.11.2005.

*                            

*                               Program CENTVAX se aktivira na sledeci nacin:

*                            

*                               INCLUDE 'CENTROVAX.SPS'.

*                               CENTVAX VARS = imena kvantitativnih varijabli/

*                                         GROUPS = ime nominalne varijable/.

*                            

*                            

define centvax (vars=!charend('/')

/groups=!charend('/'))

COUNT majmun = !vars (SYSMIS) . EXECUTE .

FILTER OFF. USE ALL.

SELECT IF(NOT(majmun)).

EXECUTE .

*                            

*                               Cuvanje originalnog zapisa.

*                            

save outfile='cntvx_tmp.sav'

*                            

*                               Aktiviranje Matrix jezika i preliminarne operacije

*                              matrix

print /title '* * *  C E N T R O V A X                  * * *' /space 1

print /title '                     VARIMAX ROTACIJA CENTROIDA'/space 0

print /title 'U KANONICKOJ DISKRIMINACIONOJ ANALIZI'/space 0

get x/file=*/variables=!vars/names=nx get g/file=*/variable=!groups/names=ng

compute s=design(g) compute kont=t(s)*s compute num=trace(kont)

compute numg={"g1","g2","g3","g4","g5","g6","g7","g8","g9","g10",

"g11","g12","g13","g14","g15","g16","g17","g18","g19","g20",

"g21","g22","g23","g24","g25","g26","g27","g28","g29","g30"}

compute ngr=ncol(kont) compute nvr=ncol(x)

print num/format "f8.0"/title 'Broj entiteta' print ngr/format "f8.0"/title 'Broj grupa' print nvr/format "f8.0"/title 'Broj varijabli'

compute numg=numg(1:ngr) compute dkont=diag(kont)

compute pkont=(dkont&/num)&*100 compute majmun1={dkont,pkont} compute majmun2={"n","%"}

print majmun1 /format "f8.1"/title 'Velicine grupa'

/rname=numg/cname=majmun2

compute en=make(num,1,1) compute mmm=(csum(x))&/num compute mmmm=en*mmm compute x=x-mmmm

compute c=(t(x)*x)&/num

compute dc=sqrt(inv(mdiag(diag(c)))) compute x=x*dc

compute rmat=dc*c*dc release mmm,mmmm,dc,c call eigen(rmat,xxx,lambda)

do if lambda(nvr)=0

print /title 'GRESKA:'/space 2

print /title 'Matrica interkorelacija je singularna'/space 0 else

print rmat /format "f8.3"/title 'Interkorelacije varijabli'

/rname=nx/cname=nx

compute amat=t(x)*s*inv(kont)*t(s)*x compute amat=amat&/num

print amat /format "f8.3"/title 'Intergrupne kovarijanse varijabli'

/rname=nx/cname=nx

compute wmat=rmat-amat

print wmat /format "f8.3"/title 'Intragrupne kovarijanse varijabli'

/rname=nx/cname=nx compute mmat=t(x)*s*inv(kont)

*                            

*                               Kanonicka diskriminativna analiza

*                            

do if nvr<(ngr-1)

.compute nf=nvr else

.compute nf=ngr-1 end if

compute lambda=mdiag(lambda) compute lambda=sqrt(inv(lambda)) compute qmat=xxx*lambda*t(xxx)

compute mahmat=inv(qmat) compute omega=qmat*amat*qmat

compute numf={"f1","f2","f3","f4","f5","f6","f7","f8","f9","f10",

"f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",

"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30",

"f31","f32","f33","f34","f35","f36","f37","f38","f39","f40",

"f41","f42","f43","f44","f45","f46","f47","f48","f49","f50",

"f51","f52","f53","f54","f55","f56","f57","f58","f59","f60",

"f61","f62","f63","f64","f65","f66","f67","f68","f69","f70",

"f71","f72","f73","f74","f75","f76","f77","f78","f79","f80",

"f81","f82","f83","f84","f85","f86","f87","f88","f89","f90",

"f91","f92","f93","f94","f95","f96","f97","f98","f99","f100"}

compute numf=numf(1:nf) call svd(omega,y1,lambda,y2)

compute y1=y1(:,1:nf) compute y2=y2(:,1:nf) compute dtr=t(y1)*omega*y2 compute dtr=diag(dtr)

compute rho=sqrt(dtr)

compute df1=1 compute df2=num-2

compute ftest1=make(nf,1,1) compute ftest2=ftest1 compute sig1=ftest1

loop s=1 to nf

. compute ftest1(s,1)=dtr(s,1)*((num-2)/(1-dtr(s,1)))

. compute ftest2=ftest1(s,1)

. compute sig1(s,1)=1-fcdf(ftest2,df1,df2) end loop

compute srez={rho,dtr,ftest1,sig1}

print srez/format "f8.3"

/title 'Kanonicke korelacije i asimptotski testovi znacajnosti'

/space=2

/rnames=numf/cnames={"rho","dtr","ftest","sig"}

compute suma=make(nvr,1,0) loop k=1 to nf

do if sig1(k,1) < 0.01

. compute suma(k,1)=1 end if

end loop

do if k<ncol(s) compute k=ncol(s) else

compute k=csum(suma) end if

print k /title 'Broj znacajnih kanonickih korelacija'/space=2 do if k>1

compute numf=numf(1:k) compute y=y1(:,1:k)

compute rhosq=t(y)*omega*y compute rhosq=mdiag(diag(rhosq)) compute rho=sqrt(rhosq)

compute invrho=inv(rho)

compute fmat=mahmat*y compute rinv=inv(rmat) compute beta=rinv*fmat compute cent=t(mmat)*beta

print beta/format "f8.3"

/title 'Nerotirana matrica koeficijenata kanonickih diskriminacionih funkcija'

/rnames=nx /cnames=numf print fmat /format "f8.3"

/title 'Nerotirana matrica strukture kanonickih diskriminacionih funkcija'

/rname=nx/cname=numf print cent/format "f8.3"

/title 'Nerotirana matrica centroida grupa na kanonickim diskriminacionim funkcijama'

/rnames=numg /cnames=numf

*

*                               Varimax rotacija

*                            

compute nfak=k compute nkat2=ngr compute f=cent

compute tv=0 compute nc=0 compute stabil=1

compute trans=ident(nfak,nfak) loop if (stabil = 1 and nc le 50)

+ compute sv=0

+ loop j=1 to nfak

+ compute sa=0

+ compute sb=0

+ loop i=1 to nkat2

+ compute v2=f(i,j)**2

+ compute sa=sa + v2

+ compute sb=sb + v2 * v2

+ end loop

+ compute sv=sv + ((nkat2 * sb - sa * sa) / (nkat2 * nkat2))

+ end loop

+ compute nc=nc + 1

+ do if (abs(sv-tv) le 1e-7)

+ compute stabil=stabil+1

+ else

+ compute stabil=1

+ end if

+ compute tv=sv

+ loop j=1 to nfak-1

+ loop k=j+1 to nfak

+ compute as=0

+ compute bs=0

+ compute cs=0

+ compute ds=0

+ loop i=1 to nkat2

+ compute xs=(f(i,j) **2 - f(i,k) **2)

+ compute ys=f(i,j) * f(i,k) * 2

+ compute as=as+xs

+ compute bs=bs+ys

+ compute cs=cs + (xs * xs - ys * ys)

+ compute ds=ds + xs * ys

+ end loop

+ compute ds=ds * 2

+ compute xs=ds - ((2 * as * bs) / nkat2)

+ compute ys=cs - ((as * as - bs * bs) / nkat2)

+ do if xs>0

+ do if ys>0

+ compute p=(artan(xs/ys))

+ else if ys<0

+ compute p=(artan(xs/ys)+ 314159265359e-11)

+ end if

+ else if xs<0

+ do if ys>0

+ compute p=(artan(xs/ys))

+ else if ys<0

+ compute p=(artan(xs/ys)- 314159265359e-11)

+ end if

+ else if xs=0

+ do if ys>0

+ compute p=0

+ else if ys<0

+ compute p= 314159265359e-11

+ end if

+ else

+ compute p= 314159265359e-11 / 2

+ end if

+ compute p = p / 4

+ compute sinp=sin(p)

+ compute cosp=cos(p)

+ do if abs(sinp) gt 1e-30

+ loop i=1 to nkat2

+ compute xs=f(i,j) * cosp + f(i,k) * sinp

+ compute ys=f(i,k) * cosp - f(i,j) * sinp

+ compute f(i,j)=xs

+ compute f(i,k)=ys

+ end loop

+ loop i=1 to nfak

+ compute xs=trans(i,j) * cosp + trans(i,k) * sinp

+ compute ys=trans(i,k) * cosp - trans(i,j) * sinp

+ compute trans(i,j)=xs

+ compute trans(i,k)=ys

+ end loop

+ end if

+ end loop

+ end loop end loop

*                            

*                               Rotirane strukture

*                            

compute centr=cent*trans compute betar=beta*trans compute fmatr=fmat*trans compute rhor= diag(t(trans)*rho)

print trans /format "f8.3"

/title 'Transformaciona matrica'/space=2

/rnames=numf/cnames=numf print betar /format "f8.3"

/title 'Rotirana matrica koeficijenata kanonickih diskriminacionih funkcija'

/rnames=nx /cnames=numf print fmatr /format "f8.3"

/title 'Rotirana matrica strukture kanonickih diskriminacionih funkcija'

/rname=nx/cname=numf print centr /format "f8.3"

/title 'Rotirana matrica centroida grupa na kanonickim diskriminacionim funkcijama'

/rnames=numg /cnames=numf print rhor /format "f8.3"

/title 'Kanonicke korelacije posle rotacije'

/rnames=numf end if

end if

*                            

*                               Kraj programa i zavrsne operacije

*                            

end matrix

get file='cntvx_tmp.sav' restore

!enddefine

 

 

ONE NEW METHOD FOR THE ROTATION IN DISCRIMINANT ANALYSIS

 

Different methods of discriminant weights and structure matrices rotation has been applied in canonical discriminant analysis to facilatate the interpretation of the discriminant functions. A new ("Centrovax") method of discriminant structure and discriminant weights matrices rotation has been proposed in this paper. The proposed method is based on the rotation of group centroid matrix based on the significant discriminant functions. A program implementation of proposed algorithm has been written in SPSS MATRIX language. An illustrative numerical example of use of the method has been presented.

 

KEY WORDS: canonical discriminant analysis / centroid rotation