#### Stochastik IV, Übungsblatt 7 ### Aufgabe 2 # Einlesen und Auswahl der Daten und Einbinden in Suchpfad data.crabs <- read.table("D:/Univ Augsburg/Lehre/SS07/VO_MultiVar/Datensaetze/crabs.txt", head = TRUE, sep = "\t", quote = "") crabs.bl <- subset(data.crabs, sp == 1) attach(crabs.bl) ## Teilaufgabe (a) # Teildatenmatrizen für 'male' und 'female' Gruppen crabs.bl.male <- as.data.frame(cbind(subset(FL, sex == 1), subset(RW, sex == 1))) names(crabs.bl.male) <- c("FL", "RW") crabs.bl.female <- as.data.frame(cbind(subset(FL, sex == 2), subset(RW, sex == 2))) names(crabs.bl.female) <- c("FL", "RW") # Gruppenmittelwertvektoren x.male <- mean(crabs.bl.male) x.female <- mean(crabs.bl.female) # 'Gepoolte' Kovarianzmatrix S.male <- cov(crabs.bl.male) S.female <- cov(crabs.bl.female) S.pooled <- (S.male + S.female) / 2 S.pooled.inv <- solve(S.pooled) # Der Vektor, der die Diskriminanzgerade (Projektionsgerade optimaler # Separation) durch den Nullpunkt aufspannt. Die Gerade ist beschrieben # durch die Geradengleichung y = mx, wobei # m = RW-Komponente (delta_y) / FL-Komponente (delta_x) # = -3.859 / 3.066 (auf drei Dezimalstellen gerundet). (vekt.diskr.ger <- S.pooled.inv %*% (x.male - x.female)) # Scatterplot mit zur Sichtbarkeit parallel verschobener Diskriminanzgerade plot(FL, RW, main = "Scatterplot mit (zur Sichtbarkeit parallel verschobener) Diskriminanzgerade", pch = 19, cex = 1.25, col = sex) abline(28, vekt.diskr.ger[2, ] / vekt.diskr.ger[1, ], lwd = 2, col = "lightblue") text(12, 16, "y = -1.26 x + 28", col = "lightblue") legend(17, 10, pch = 19, col = c(1, 2), c("Blue Male", "Blue Female")) ## Teilaufgabe (b) # Graphik / Plot # Diskriminanzscores 'Blue Male' und 'Blue Female' diskr.scores.male <- as.matrix(crabs.bl.male) %*% vekt.diskr.ger diskr.scores.female <- as.matrix(crabs.bl.female) %*% vekt.diskr.ger # Projizierte Dichten mittels Dichteschätzern windows() plot(density(diskr.scores.male, bw = 2), main = "Projizierte Dichten mittels Dichteschätzern", xlim = c(-15, 10), ylim = c(0,0.15), col = 1, lwd = 2) lines(density(diskr.scores.female, bw = 2), col = 2, lwd = 2) text(c(-11, 4.1), c(0.10, 0.10), c("Blue Female", "Blue Male"), col = c(2, 1)) # Entscheidungsgrenze (d.h. 'Entscheidungspunkt') im Diskriminanzraum # (d.h. auf der Diskriminanzgerade) (diskr.ger.grenze <- ((x.male %*% vekt.diskr.ger) + (x.female %*% vekt.diskr.ger)) / 2) abline(v = diskr.ger.grenze, col = "lightblue", lwd = 2) text(1, 0.14, "Entscheidungspunkt x = -2.93", col = "lightblue") ## Teilaufgabe (c) # Weil n.male = n.female = 50 ist, gilt D(x.gesamt) = (D(x.male) + D(x.female)) / 2. # Die Entscheidungsregel lautet daher: # Gruppe 'Male' genau dann wenn (gdw.) D(x) - D(x.gesamt) > 0, # Gruppe 'Female' gdw. D(x) - D(x.gesamt) < 0.