#### Stochastik IV, Übungsblatt 7 ### Aufgabe 4 library(MASS) library(ellipse) # Einlesen der Daten und Einbinden in Suchpfad data.olives <- read.table("D:/Univ Augsburg/Lehre/SS07/VO_MultiVar/Datensaetze/Olives.txt", head = TRUE, sep = "\t", quote = "") attach(data.olives) ## Teilaufgabe (a) Region.int <- unclass(Region) plot(stearic, oleic, main = "Streuungsdiagramm mit Konfidenzellipsen (Regionen nach Farben)", xlim = c(120, 400), pch = 19, col = Region.int, cex = 1.5) for( i in 1:3 ) { lines(ellipse(cov(cbind(stearic[Region.int == i], oleic[Region.int == i])), centre = c(mean(stearic[Region.int == i]), mean(oleic[Region.int == i])), level = 0.95), col = i, lwd = 2) } legend(300, 8350, c("North", "Sardinia", "South"), fill = c(1, 2, 3)) ## Teilaufgabe (b) # ACHTUNG: Nachfolgend werden Proportionen in der Gesamtstichprobe als a-priori # Wahrscheinlichkeiten benutzt. # (A) Ohne 'Training und Test' (im Allgemeinen nicht empfehlenswert) (olives.lda <- lda(Region ~ stearic + oleic, data.olives)) (olives.lda.pred <- predict(olives.lda)) # Konfusionsmatrix der Gruppenzugehörigkeitsvorhersagen (konf.matrix <- table(Region, olives.lda.pred$class, dnn = c("True Region", "Predicted Region"))) # Als ein zusammenfassendes 'Gütemaß' für die Gruppenzugehörigkeitsvorhersagen # durch die lineare Diskriminanzanalyse, z.B., Prozentsatz von korrekten Klassifikationen guete <- ( (konf.matrix[1,1] + konf.matrix[2,2] + konf.matrix[3,3]) / length(oleic) ) * 100 round(guete, 1) # Verglichen werden könnte diese Zahl, z.B., mit dem Prozentsatz korrekter Klassifikationen, # wenn jeder Fall derjenigen Gruppe mit größtem Umfang in der Gesamtstichprobe # zugeordnet wird. vgl.guete <- ( max( sum(konf.matrix[1, ]), sum(konf.matrix[2, ]), sum(konf.matrix[3, ]) ) / length(oleic) ) * 100 round(vgl.guete, 1) # (B) 'Leave-one-out' Kreuzvalidierung (eventuell noch besser wäre 'allgemeinere' # Kreuzvalidierung; vgl. Folie Seite 178) olives.lda.cv <- lda(Region ~ stearic + oleic, data.olives, CV = TRUE) # Konfusionsmatrix der Gruppenzugehörigkeitsvorhersagen # (Man erhält die gleiche Konfusionsmatrix wie vorhergehend in (A). Somit ergibt sich insbesondere # auch der gleiche Prozentsatz von korrekten Klassifikationen ('Gütemaß') wie in (A).) table(Region, olives.lda.cv$class, dnn = c("True Region", "Predicted Region"))