Lunds universitet Kemometri Lunds Tekniska Högskola FMS 210, 5p / MAS 234, 5p Matematikcentrum VT 2007 Matematisk statistik version 24 januari Datorlaboration 2 1 Inledning I denna laboration behandlas Kapitel 4.1-4.5.3 i kursboken (Chemometrics av Brereton). Laborationen behandlar tre metoder, principalkomponentanalys (PCA), klusteranalys och diskriminantanalys. De två första går under beteckningen Unsupervised Pattern Recognition medan den sista betecknas Supervised Pattern Recognition, och skillnaden är att man i diskriminantanalys redan har grupper och vill använda dessa för att göra en regel för hur man bestämmer grupptillhörigheten, medan man i PCA och klusteranalys inte har några grupper utan låter datorprogrammet försöka hitta dessa. I denna laboration finns nu riktiga datamaterial som inte är tillrättalagda för att passa en viss metod, och därmed finns det ju också flera olika lösningar på problemen. 1.1 Förberedelse Läs igenom avsnitt 4.1 så att du får strukturen på kapitlet klar för dig. 1.2 Förberedelseuppgift För att få ett datamaterial att arbeta med, välj 12 tvådimensionella mätningar där det helst skall vara ett visst beroende mellan variablerna. (Bäst är givetvis att du hittar ett intressant datamaterial från din egen verksamhet, och om det då inte är exakt 12 observationer så kan man ha överseende med detta.) Skriv upp matrisen X, och kalla den första kolumnen för x 1 och den andra kolumnen för x 2. Eftersom variablerna senare skall centreras men inte skalas är det bra om de två variablerna är mätta i samma enhet och är i ungefär samma storleksordning. 2 Grunderna i PCA 2.1 Förberedelse Läs först igenom avsnitt 4.2 för att få ett grepp om vad PCA kan användas till. Framställningen av PCA är ibland olika i olika böcker, och det framgår också av att det finns två varianter på PCA i Matlab, princomp respektive pcacov. 1
Skillnaden är att man i princomp försöker dela upp observationsmatrisen X i olika delar (som man gör i boken) och i pcacov försöker dela upp kovariansmatrisen. De båda metoderna ger samma resultat (så när som på ett tecken), men pcacov har fördelen att man inte behöver känna de enskilda observationerna utan bara kovariansmatrisen. Först skall vi göra en ändring av beteckningarna i boken: Boken använder uppdelningen X = TP av matrisen X, vilket är ett ganska ovanligt sätt att skriva PCA-uppdelningen, och för att få en överensstämmelse med teorin ovan så väljer vi det vanligaste sättet att skriva uppdelningen, nämligen X = TP 0. Läs nu avsnitt 4.3, men här finns en hel del ganska svårlästa avsnitt, så koncentrera dig framförallt på avsnitt 4.3.2, 4.3.5 och 4.3.7. Rekommendation: Räkna Problem 4.1 genom att standardisera (så som anges i uppgiften) med hjälp av populationsstandardavvikelsen. När matrisen med värden är standardiserad så använder man princomp för att få resultatet. Egenvärdena från boken överensstämmer inte med de egenvärden som ges av latent i utskriften. Lägg dock märke till att den procent som komponenterna förklarar blir densamma. Varför det är skillnad kommer att utredas nedan. Korrelationsmatrisen i Matlab beräknas med hjälp av kommandot corrcoef. 2.2 Illustration av insamlat datamaterial Använd nu de 12 mätningar som du har samlat in i förberedelseuppgiften och som finns i matrisen X. Centrera variablerna genom att dra ifrån medelvärdet av varje kolumn så att båda kolumnerna har medelvärdet 0. I beskrivningen nedan är X den centrerade matrisen, även om beräkningen också hade kunnat göras på den ursprungliga matrisen. Rita in de centrerade observationerna i en scatterplot (plot i Matlab), beräkna regressionen av x 2 med avseende på x 1 och rita in regressionslinjen i figuren. Dra på fri hand den linje som du tycker borde vara den första principalkomponenten. Tala om vad det är som gör att du gissar att principalkomponenten kommer att ligga där. För en centrerad matris gäller att kovariansmatrisen kan beräknas med hjälp av formeln C = X0 X N 1 där N är antalet rader i matrisen X. Kovariansmatrisen beräknas i Matlab med hjälp av kommandot cov. Beräkna kovariansmatrisen för det insamlade materialet både genom formeln ovan och genom att använda cov för att se att formeln stämmer. 2
2.3 Bokens metod Om man använder den första metoden för PCA så delar man upp matrisen X med en så kallad Singular Value Decomposition enligt X = U S V 0 där S är en diagonalmatris (men skrivs av Matlab i samma storlek som X)ochmatriserna U och V är matriser som är ortonormerade matriser (dvs U 0 U = UU 0 = VV 0 = V 0 V = I). Dessutom gäller att kvadraten på diagonalelementen i S är egenvärdena till matriserna X 0 X och XX 0 (dessa båda matriser har samma egenvärden). Använd kommandot svd i Matlab för att göra en uppdelning av din matris X. SkrivutU, S och V.Verifiera att U och V är ortonormerade samt att S innehåller roten ur egenvärdena (eig) till X 0 X. Vad är det för storlek på U och V? Om man begränsar sig till de de två första kolumnerna i U och kallar denna matris för U 1, de två första raderna i S och kallar denna matris S 1, så gäller att X = U 1 S 1 V 0 eftersom X bara har två kolumner. Sätt T = U 1 S 1 och P = V.Lått i vara den i:te kolumnen i matrisen T och p i den i:te kolumnen i matrisen P.Man har då i detta fallet att X = t 1 p 0 1 + t 2 p 0 2 = t 1 p 0 1 + E. Om man försöker ersätta den tvådimensionella variabeln som ges av X av en endimensionell så är den bästa varianten att använda t 1. Kan du illustrera värdena på t 1 i den tidigare figuren? OmmannuharvärdetpåP och därur vill hitta T så kan man multiplicera från höger: XP = TP 0 P = T eftersom matrisen P är ortonormerad. För varje enskild komponent kan detta resultat skrivas Xp i = t i. Går detta att illustrera på något sätt i figuren? Om man skall få motsvarande resultat i Matlab så använder man alltså kommandot princomp. Här får man både scores (= T ), loadings (= P ) och egenvärden (för kovariansmatrisen), men man kan också få Hotellings T 2, som man använder för att avgöra vilka observationer som ligger utanför det område man kan förvänta sig, och därför eventuellt skall betraktas som outliers. Lägg märke till att Hotellings T 2 baseras på alla variablerna i materialet och inte på att man har reducerat genom att välja ut de första principalkomponenterna. 3
2.4 Metoden som delar upp kovariansmatrisen Kovariansmatrisen för ett datamaterial är som bekant alla skattade kovarianser mellan variablerna skrivna i en matris. I Matlab beräknas kovariansmatrisen med hjälp av kommandot cov och som nämnts ovan så beräknas kovariansmatrisen för centrerade variabler med hjälp av formeln C = X0 X N 1. Eftersom C är en symmetrisk och positivt semidefinit matris kan man med hjälp av egenvärdena och egenvektorerna diagonalisera matrisen C enligt C = PDP 0, där D är en diagonalmatris med alla element större än eller lika med 0. PCA på en kovariansmatris gör man med hjälp av kommandot pcacov, och med hjälp av detta kommandot får man diagonalelementen i D (dvs egenvärdena) och egenvektorerna (som är kolumnerna i P ). Om man inte har de ursprungliga observationerna så kan man givetvis inte heller få de scores som beräknas med hjälp av princomp, men däremot kan man ju med hjälp av matrisen P få fram scores för en ny observation. Använd pcacov för att beräkna principalkomponenterna för kovariansmatrisen för X. Jämför med det tidigare resultatet. Man kan alltså nu också förklara skillnaden mellan de egenvärden som finns i boken och de egenvärden som produceras av Matlab. De egenvärden som anges i boken är egenvärdena för matrisen X 0 X, medan egenvärdena som anges i Matlab är egenvärdena för kovariansmatrisen C = X0 X N 1. Det innebär att de egenvärden som ges av Matlab skall multipliceras med N 1 för att man skall få de egenvärden som finns i boken. Med hjälp av uppdelningen X = USV 0 kan man också se sambandet X 0 X = USV 0 0 USV 0 = VS 0 U 0 USV 0 = VS 0 SV 0 = VS 2 V 0 och därmed C = X0 X N 1 = V S2 N 1 V 0 vilket innebär att den matris av egenvektorer man får vid diagonaliseringen av C är identisk med matrisen med loadings man får vid uppdelningen av X, det är bara egenvärdena som skiljer sig åt. I boken (sid 219) anges att man för att göra en biplot skall dividera scores med ett där angivet värde. Detta argument är lite svårt att förstå och det är också 4
så att man i andra datorprogram helt enkelt multiplicerar alla loadings med ett lämpligt valt värde så att det går att ha t och p isammafigur. Sedan kan man visa att det approximativt gäller att x ij = kt i k kp j k cos v där v är vinkeln mellan de båda vektorerna. Detta resultat kan man alltså använda för att avgöra vilka observationer som har ett stort värde på variabel j,ochdärmed förklara hur variabler och observationer hör ihop. Nedanstående datamaterial är insamlat för att ta reda på hur man bäst etablerar träd i parkmiljö, men här koncentrerar vi oss bara på att se om det är någon skillnad på de tretton träd som valdes slumpmässigt i Kungsträdgården i Stockholm. De insamlade data beskriver medelvärdet av tillväxten hos fyra grenar (en i vardera väderstreck) på trädet under tre år och klassificeringen av trädet. Här anger klass A mycket bra kvalitet, klass a någon mindre anmärkning och klass B något sämre kvalitet. Träd Tillv 03 Tillv 04 Tillv 05 Klass 1 31.30 32.00 30.40 A 2 34.80 43.80 25.80 A 3 54.50 27.40 25.00 A 4 13.50 37.90 37.40 A 5 40.25 21.90 25.60 a 6 47.30 30.30 26.10 A 7 47.00 32.50 20.40 A 8 51.40 30.90 42.30 A 9 28.80 18.80 12.00 B 10 32.30 9.40 5.90 a 11 45.50 17.40 10.00 a 12 33.30 21.80 15.40 B 13 35.00 22.50 19.00 B Gör en PCA av tillväxterna för att reducera till två dimensioner. Tycker du att två dimensioner är lämpligt? Hade det kanske räckt med en eller behövs det fler dimensioner? För samman observationer som ser likadana ut i scoreplotten och försök att förklara varför de är likadana med hjälp av en biplot. 3 Grunderna i klusteranalys 3.1 Förberedelse Läs avsnitt 4.4. Rekommendation: Räkna Problem 4.3. 3.2 Beräkningsgång i klusteranalys Klusteranalys är ganska bra beskrivet i boken och det intressanta är oftast att få fram ett dendrogram för att se hur de olika observationerna är grupperade. Det finns tre saker som man måste bestämma sig för. 5
1. Om man skall standardisera variablerna innan man börjar beräkningen. 2. Hur man definierar avstånd mellan observationerna. Att använda korrelationsmatrisen för att skilja på observationer är mindre vanligt, men däremot kan man ibland se att man använder kvadratiskt Euklidiskt avstånd. 3. Hur man mäter avstånd och slår ihop två kluster. I boken anges tre metoder men det finns betydligt fler i de statistiska programpaketen, och ibland kan det vara svårt att avgöra vilken metod som passar bäst. Här får det nog användas lite fingertoppskänsla. 3.3 Uppgift Problemet är att det inte är helt automatiskt att göra klusteranalys i Matlab, men har man gjort det en gång så är det lätt att upprepa. Här används Problem 4.6 som exempel: Standardisera de fyra variablerna genom att subtrahera medelvärdet och dividera med standardavvikelsen. Man får en vektor med alla avstånden genom att använda kommandot pdist. Här kan man också välja vilken typ av avstånd man skall använda. På den vektor som bildas använder man sedan linkage, där man talar om hur man slår ihop kluster, och avslutningsvis dendrogram för att få trädet som visar hur observationerna hör ihop. Använd olika metoder för att se om du får olika resultat, och undersök också om det blir någon skillnad om du inte standardiserar. Gör en klusteranalys baserad på de tre tillväxterna i trädmaterialet och prova lite olika avstånd och klustermetoder för att se om det ger olika resultat. Grupperar detta ihop samma observationer som PCA? Grupperar sig träden efter klassindelningen? 4 Grunderna i diskriminantanalys 4.1 Förberedelse Läs avsnitt 4.5.1-4.5.2. Diskriminantanalys är alltså det som kallas Supervised Pattern Recognition, här är grupperna givna för de observationer som har samlats in. Metoden är ganska väl beskriven i boken och man behöver bara veta att Matlab gör det som kallas linjär diskriminantanalys där man väger ihop kovariansmatriserna för de olika grupperna. Den andra metoden med olika kovariansmatriser kallas ibland kvadratisk diskriminantanalys, men den har det uppenbara problemet att ge det lite konstiga resultatet att avståndet från punkten A till B inte är detsamma som avståndet från punkten B till A. 4.2 Uppgift Diskriminantanalys i Matlab använder kommandot classify, och det finns givetvis ingenting som hindrar att man har samma observationer i både sample och training. Ibland använder man korsvalidering, som innebär att man tar bort den observation som skall klassificeras när man skall bestämma dess tillhörighet. Det finns 6
också möjlighet att beräkna Mahalanobisavståndet med hjälp av kommandot mahal. Rekommendation: Räkna Problem 4.8. Gör en diskriminantanalys baserad på de tre värdena av årstillväxter hos träden med klassificeringen i kvalitet som den grupperande variabeln. Kan man förutse kvaliteten med hjälp av tillväxterna? Redogör ordentligt för hur metoden fungerar. Gör också en korsvalidering för att se om detta förändrar resultatet. 5 Blandade problem Rekommendation: Räkna Problem 4.12 som egentligen är det enda Problemet som binder ihop punkterna och försöker tolka PCA-plotten på det viset. Rekommendation: Lös Problem 4.11 för centrerade data (lösningen i facit är för ej centrerade data). Här beräknar man alltså PCA för varje grupp för sig och försöker sedan använda detta för att skilja grupperna åt. Lös Problem 4.5. Detta Problem innehåller så mycket intressanta diskussioner och eventuellt även andra lösningsförslag som inte står i facit att det kan ingå även om man kan hitta en del av lösningen på hemsidan. Här följer nu två problem av mycket generell karaktär där du skall försöka använda dina kunskaper och din fantasi för att lösa frågeställningen. Här finns givetvis inte någon given lösning, men det är givetvis framförallt bland metoderna ovan som du skall leta när du försöker att hitta en eller flera lösningar. Det är också viktigt att poängtera att det inte säkert finns en riktigt bra lösning, datamaterialen är alltså inte på något sätt tillrättalagda för att passa för våra syften. 5.1 Nationella rekord Syftet med denna uppgift är att försöka strukturera upp länder i förhållande till rekordtiderna i löpning för kvinnor och män på 15 sträckor, från 100 meter till maraton. På de kortare sträckorna är tidsenheten sekunder, på de längre minuter. Uppgifterna är gamla och därför är t.ex. Tyskland uppdelat i två länder och USSR inte uppdelat. Datamängden i textfilen är uppdelad i män och kvinnor av typografiska skäl, du skall slå ihop materialet till en matris med 55 rader och 15 kolumner med tider. Datamaterialet finns i en textfil på hemsidan med namnet track.txt. Frågan är om man kan strukturera upp länderna och eventuellt också sträckorna på något sätt. Kan man på något sätt reducera modellen så att den inte innehåller så många variabler, måste man på något sätt dela upp materialet, kan man få ut något av scores och loadings, har några länder väldigt stort inflytande på resultatet, etc. En avslutande fråga kan vara: Vilket land är bäst på att springa? 7
5.2 Hjärnvävnadsprover Uppgiften går ut på att studera hjärnvävnadsprover från friska och cancersjuka personer och försöka skapa en modell för att kunna skilja friska och sjuka åt. 16 kromatogram, varav 10 från cancerpatienter, var ursprungsmaterialet som användes för att skapa modellerna. Det fattas ett fåtal värden i materialet, och dessa har betecknats med -99. Datamaterialet finns i en textfil på hemsidan med namnet brain.txt. 8
Lunds universitet Lunds Tekniska Högskola Matematikcentrum Matematisk statistik FMS 210 / MAS 234 VT 2007 Laboranter (namn och grupp): Utförd/Inlämnad: Godkänd: Redovisning av datorlaboration nr 2 Checklista Ja Nej 1. Är alla momenten i laborationen utförda? 2 2 2. Har rapporten blivit korrekturläst? Är språk- och skrivfel rättade? 2 2 3. Är figurer, tabeller och liknande försedda med figurtexter och tydlig numrering? 2 2 4. Har alla figurer storheter inskrivna på alla axlar? 2 2 5. Är de beräkningar som kan kontrollräknas kontrollräknade? 2 2 6. Har du gjort en rimlighetsbedömning av samtliga resultat? 2 2 7. Har eventuella orimliga resultat blivit vederbörligen kontrollerade och kommenterade? 2 2 8. Är den löpande texten väl strukturerad med tydliga avsnittsrubriker? 2 2 9. Är skriften försedd med: Sammanfattning? 2 2 Innehållsförteckning? 2 2 Sidnumrering? 2 2 Datum? 2 2 10. Har förutsättningar, förenklingar och gjorda antaganden tydligt redovisats? 2 2 11. Är din rapport läsbar utan tillgång till laborationshandledningen? 2 2 12. Är detta försättsblad med checklista fullständigt ifyllt? 2 2