* a vizsgálatba bevont adatok. DESCRIPTIVES VARIABLES=mpg engine horse weight accel /STATISTICS=MEAN STDDEV . * Látható, hogy vannak hiányzó adatok. Mivel a változók szórása nem nagy, ezért ahol lehet, ott a Replace with mean stratégiával fogunk dolgozni. * faktoranalízis (főkompones elemzéssel) a CARS.SAV táblára, két faktort kérünk, hogy rajzban is szemléltetni lehessen, de a SAVE opcióban megadjuk utólag a mezőnevet. * A generált parancsok a syntax editor ablakból lettek idemásolva. * Lépések: Statistics - Data Reduction -Factor - Variables ablakba átküldjük a megfelelő adatokat Descriptives ablakban: Correlations matrix minden jelölő négyzetét kijelöljük Extraction ablakban: Number of factors 2-re állítani Rotation ablakban: Varimax Scores ablakban: Save as variables, Display factor score.. kijelölni Options: Missing variables - replace with means kijelölni Paste: syntax editor ablakba kerülő parancsba a /SAVE REG(ALL) sorba a faktorok mentési nevét beírni. FACTOR /VARIABLES mpg engine horse weight accel /MISSING MEANSUB /ANALYSIS mpg engine horse weight accel /PRINT UNIVARIATE INITIAL CORRELATION SIG DET KMO INV REPR AIC EXTRACTION ROTATION FSCORE /CRITERIA FACTORS(2) ITERATE(25) /EXTRACTION PC /CRITERIA ITERATE(25) /ROTATION VARIMAX /SAVE REG(ALL x) /METHOD=CORRELATION . * látható, hogy a hiányzó adatokat tartalmazó sorban nincs faktortérbeli koordináta. * ellenőrzésként visszaszámítjuk az engine változót a rotált faktor-együttható mátrix megfelelő sora (0,893 ; -0,359) , a faktorkoordináták és a engine változó várható értéke és szórása (105,21 ; 194,04) segítségével. COMPUTE eng_est = (0.8932990058142 * x1 - 0.359351026527 * x2) * 105.2073623138 + 194.0406403941 . EXECUTE . * az engine és az eng_est változók korrelációját is megnézzük. CORRELATIONS /VARIABLES=engine eng_est /PRINT=TWOTAIL NOSIG /MISSING=PAIRWISE . * 0,963-as nagyon erős korrelációt kaptunk, tehát a faktorokkal történő magyarázat nagyon jó. * Számítsuk ki az engine változó faktorokkal nem magyarázott részét. COMPUTE eng_res = engine - eng_est. EXECUTE. * Vizsgáljuk meg grafikusan ennek eloszlását. GRAPH /HISTOGRAM(NORMAL)=eng_res . * Látható, hogy 0 várható értékű maradékot (egyedi faktort) kaptunk, mely normális eloszlásúnak tekinthető. *---------------------------------------------------------------------------. * scatterplot a két faktor terében. * látható hogy két jól elkülönült csoport képződik. * a faktoranalízis /SAVE opciója mentette el a faktortérbeli koordinátákat x1 és x2 névvel. GRAPH /SCATTERPLOT(BIVAR)=x1 WITH x2 /MISSING=LISTWISE REPORT. * a grafikonon a (-1,-3) és (3,4) pontok közötti egyenes szeparál, ezért a két csoportot jelentő kódértékeket mi számíttatjuk ki ("manuális" klaszterezés!!). * Transform - Compute menü - Target variable: kod Numeric expression: (4 * x2 > (7 * x1 - 5)) + 1 . COMPUTE kod = (4 * x2 > (7 * x1 - 5)) + 1. EXECUTE . FORMATS kod (F1). * megjelenítjük a szétvágást színezéssel. GRAPH /SCATTERPLOT(BIVAR)=x1 WITH x2 BY kod /MISSING=LISTWISE . * szétvágás ellenőrzése, finomítása az eredeti változókon való diszkriminancia analízissel, miközben a javasolt osztálytagságot elmentjük "ujkod" névvel, az ujkod mentési nevet a generált parancsba utólag mi írtunk be. * Lépések: Statistics - Classify - Discriminant Independent ablakba az eredeti numerikus változókat átküldeni Grouping Variable: kod Define Range: 1 és 2 Enter independents together beállítás marad Classify panel: Summary table, Replace missing values with mean, és mindhárom Plots jelölőnégyzetet kijelölni Save panel: Predicted group membership és Probabilities of group membership Generált parancsba a /SAVE opcióban az új besorolást mentő változó nevét (ujkod) beírjuk. DISCRIMINANT /GROUPS=kod(1 2) /VARIABLES=accel engine horse mpg weight /ANALYSIS ALL /SAVE=CLASS(ujkod) /PRIORS EQUAL /STATISTICS=TABLE /PLOT=COMBINED SEPARATE MAP /CLASSIFY=NONMISSING POOLED MEANSUB . * ezt is megjelenítjük. GRAPH /SCATTERPLOT(BIVAR)=x1 WITH x2 BY ujkod /MISSING=LISTWISE . *----------------------------------------------------------------------------------- * most a géppel fogunk osztályba sorolni. * lefuttatjuk a K-mean klaszterezést, a kezdő centrumokat mi választjuk mégpedig a scatterplot-on jól elkülönült két csoport közepén lévő pontok koordinátáival. * A generált parancsba utólag illesztettük az /INITIAL opciót a kezdő koordinátákkal (a scatterplot-on két jellemző helyet mi választottuk ki), és utólag írtuk be a parancsba a mentő változók nevét is. * Lépések: Statistics - Classify - K-means cluster Variables: x1 x2, Number of Cluster: 2 Method: Iterate and classify Iterate: Max iteration: 30, use running means kijelölve Save: tagságot kijelölni Options: nem bántjuk. QUICK CLUSTER x1 x2 /MISSING=LISTWISE /CRITERIA= CLUSTER(2) MXITER(30) CONVERGE(0) /METHOD=KMEANS(UPDATE ) /SAVE CLUSTER(tagsag) DISTANCE(tavolsag) /PRINT INITIAL /INITIAL=(1.5,-1 -0.5,0.5). * Ezt is ellenőrizzük diszkriminancia analízissel, de a csoportokba sorolás valószínűségeit is mentjük. DISCRIMINANT /GROUPS=tagsag(1 2) /VARIABLES=accel engine horse mpg weight /ANALYSIS ALL /SAVE=CLASS(ujtag) PROBS(esely) /PRIORS SIZE /STATISTICS=TABLE /PLOT=COMBINED SEPARATE MAP /PLOT=CASES /CLASSIFY=NONMISSING POOLED MEANSUB . GRAPH /SCATTERPLOT(BIVAR)=x1 WITH x2 BY ujtag /MISSING=LISTWISE . * az előző osztályozáshoz nagyon közeli eredményt kaptunk. *-------------------------------------------------------------------- * K-mean klaszterezés kezdőpont megadása nélkül, és use running means kijelölése nélkül, kicsi iterációszámmal, a klaszterközéppontok file-ba mentésével, hogy tovább lehessen folytatni az iterációt. QUICK CLUSTER x1 x2 /MISSING=LISTWISE /CRITERIA= CLUSTER(2) MXITER(5) CONVERGE(0) /METHOD=KMEANS(NOUPDATE ) /SAVE CLUSTER(clus1) /PRINT INITIAL CLUSTER DISTAN /OUTFILE="c:\temp\carstmp1.sav" . * a klaszterezés folytatása az elmentett klaszterközéppontok segítségével. QUICK CLUSTER x1 x2 /MISSING=LISTWISE /CRITERIA= CLUSTER(2) MXITER(50) CONVERGE(0) /METHOD=KMEANS(NOUPDATE ) /SAVE CLUSTER(clus2) /PRINT INITIAL CLUSTER DISTAN /FILE="c:\temp\carstmp1.sav" . * Ezt is ellenőrizzük diszkriminancia analízissel. DISCRIMINANT /GROUPS=clus2(1 2) /VARIABLES=accel engine horse mpg weight /ANALYSIS ALL /SAVE=CLASS(ujclus) /PRIORS SIZE /STATISTICS=TABLE /PLOT=COMBINED SEPARATE MAP /PLOT=CASES /CLASSIFY=NONMISSING POOLED MEANSUB . GRAPH /SCATTERPLOT(BIVAR)=x1 WITH x2 BY ujclus /MISSING=LISTWISE . * láthatóan egészen más besorolást kaptunk mint eddig!!!. * olyan részen történt a kettévágás, ahol ponthalmaz "sűrű". * tehát vigyázat, a teljesen gépre bízott osztályozás "tévútra" is vezethet.