Empirische Softwaretechnik Datenanalyse mit R Dr. Victor Pankratius ∙ Andreas Höfer Wintersemester 2009/2010 IPD Tichy, Fakultät für Informatik KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) R 2 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R R ist vektororientiert verkettet Objekte zu Vektoren. Die Datentypen sind: c() Numerical > c(2, 0, 1) [1] 2 0 1 Character > c("a", "b", "c") [1] "a" "b" "c" Logical > c(T, F, T) [1] TRUE FALSE 3 16.11.2009 TRUE Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R So kann man auch Vektoren erzeugen: > 0:2 [1] 0 1 2 > 2:0 [1] 2 1 0 > seq(0, 1, 0.2) [1] 0.0 0.2 0.4 0.6 0.8 1.0 > rep(0:1, 2) [1] 0 1 0 1 > rep(0:1, length.out = 3) [1] 0 1 0 > rep(0:1, each = 2) [1] 0 0 1 1 Verwendung von Vektoren R behandelt Vektoren wie andere Programmiersprachen einzelne Variablen. > v > v [1] > v [1] > v [1] <- 0:5 0 1 2 3 4 5 * 2 0 2 4 6 * 0:1 0 1 0 3 0 5 8 10 <- ist der Zuweisungsoperator. 4 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Mit eckigen Klammer kann man aus Vektoren (und Feldern, etc.) auswählen. Indizes beginnen bei 1. > v[1:3] [1] 0 1 2 > v[-(1:3)] [1] 3 4 5 > v[v > 3] [1] 4 5 > v[v < 2 | v > 3] [1] 0 1 4 5 Felder und Matrizen Matrizen sind 2-dimensionale Felder. > m <- matrix(1:4, nrow = 2, ncol = 2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 > m[1,] [1] 1 3 Um n-dimensionale Felder zu erhalten, gibt es die arrayFunktion. > cube <- array(1:8, dim = c(2, 2, 2)) 5 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Listen und Datenbehälter Eine Liste ist eine Sammlung benannter Objekte. Auf die einzelnen Objekte kann über die $-Notation zugegriffen werden. > l <- list(x = 3:4, y = 8:9) > l$x [1] 3 4 > l$y [1] 8 9 Datenbehälter sind Listen aus Vektoren gleicher Länge. > as.data.frame(l) x y 1 3 8 2 4 9 6 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Kontrollfluss Bedingte Ausführung > + + + + + + if (a && b) { […] } else if (c || d) { […] } else { […] } Wiederholte Ausführung > for (i in 0:1) […] > j <- 0 > while (j <= 1) { + j <- j + 1 + if (j <= 1) next + […] + } > k <- 2 > repeat { + k <- k – 1 + […] + if (j < 1) break + } 7 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Schleifen? Schleifen sind langsam besser vermeiden. Verwenden Sie vektor- und matrixorientierte Befehle. > x <- 1:1000000 > system.time(for (i in 1:length(x)) x[i] <- x[i] + 1) User System elapsed 10.45 0.03 10.89 > system.time(x <- x + 1) User System elapsed 0.04 0.00 0.03 Es gibt auch ein vektororientiertes if/else: > ifelse(1:4 > 2, c("ja", "yes", "oui", "si"), + c("nein", "no", "non", "no")) [1] "nein" "no" "oui" "si" 8 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Daten lesen und schreiben Aus einer Datei lesen: > data <- read.table(file = "d:/file.csv", + sep = ";", header = T) > data <- read.csv(file = "d:/file.csv”) > data <- read.csv2(file = "d:/file.csv”) In eine Datei schreiben: > write.table(data, file = "d:/file.csv", + sep = ";", row.names = F) > write.csv(data, file ="d:/file.csv") > write.csv2(data, file ="d:/file.csv") 9 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Zeichnungen speichern Zeichengerät erstellen, zeichnen, Zeichengerät schließen. > pdf(file = "C:/Users/myuser/Desktop/test.pdf") > plot(LakeHuron) > dev.off() windows 2 Andere Zeichengeräte: postscript png, jpeg, tiff and bmp pictex, xfig Über zusätzliche Pakete auch: tikz svg 10 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Eigene Funktionen definieren Funktionsparameter haben Namen und können vorbelegt werden. Sie werden der Reihenfolge oder dem Namen nach zugeordnet. > randmat <- function(rows = 1, cols = 1) { + matrix(runif(rows * cols), rows, cols) + } > randmat() [,1] [1,] 0.3737975 > randmat(1, 2) [,1] [,2] [1,] 0.6450843 0.9586873 > randmat(cols = 1, rows = 2) [,1] [1,] 0.5226739 [2,] 0.7912819 11 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Hilfe erhalten Mit dem Befehl > help("plot") öffnen Sie ein Hilfe-Dialog. Einfacher geht es so: > ?plot Falls Sie nicht genau wissen, wie ein Befehl heißt, können Sie auch suchen: > help.search( + "plo") > ??plo 12 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Zentralitäts- und Streuungsmaße > v <- (1:10) ^2 > v [1] 1 4 9 16 > mean(v) [1] 38.5 > median(v) [1] 30.5 > range(v) [1] 1 100 > var(v) [1] 1167.833 > sd(v) [1] 34.17358 13 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R 25 36 49 64 81 100 Punktwolken Geben einen ersten Eindruck über den Zusammenhang zwischen zwei Variablen Abszisse: Unabhängige Variable Ordinate: Abhängige Variable > speed <- cars$speed * + 1.609344 > dist <- cars$dist * 0.3048 > plot(speed, dist, + main = "…", xlab = "…", + ylab = "…") 14 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Faustregel zur Korrelation Zählen der Datenpunkte in den durch die Mittelwerte von X und Y gebildeten Quadranten C D A B A + D >> B + C: erwarte starke positive Korrelation B + C >> A + D: erwarte starke negative Korrelation > abline(h = mean(dist), lty = 2) > abline(v = mean(speed), lty = 2) 15 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Wiederholung: Kovarianz und Pearsons Korrelationskoeffizient Zu Erinnerung: (X X)(Y Y ) Die Kovarianz ist wie folgt definiert: s XY N 1 Die extremsten Werte sind ±sXsY Pearsons Korrelationskoeffizient r normalisiert die Kovarianz mit sXsY: r s XY sXsY Bereich: -1≤ r ≤ 1 16 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R > cov(speed, dist) [1] 53.93206 > p <- cor.test(speed, dist) > p$estimate cor 0.8068949 > p$p.value [1] 1.489919e-12 p-Wert und Korrelation H0: der Korrelationskoeffizient der Population (ρ) aus der die Stichprobe entnommen wurde ist 0. ρ=0 HA: ρ ≠ 0 Der p-Wert drückt also die Wahrscheinlichkeit aus, in der Stichprobe eine Korrelation zw. X und Y der Größe │r│ zu beobachten, obwohl X und Y in der Population nicht korreliert sind. Überprüfen des kritischen Werts für Korrelationskoeffizienten in Tabellen wie Tabelle E.2 in [Howell 1999] (oder mit R). Freiheitsgrade = N – 2 17 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Spearmans Rangkorrelationskoeffizient (rs) Nicht parametrisch Die Stichproben müssen mindestens ordinal skaliert sein, d.h. Rangbildung muss möglich sein. Setzt keine Normalverteilung voraus Bei Intervall- und Verhältnisskala kommt es zum Informationsverlust Bereich: -1≤ rs ≤ 1 > s <- cor.test(speed, dist, method = "spearman") > s$estimate rho 0.8303568 > s$p.value [1] 8.824558e-14 18 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Kendalls Rangkorrelationskoeffizient (τ) Nicht parametrisch Die Stichproben müssen mindestens ordinal skaliert sein, d.h. Rangbildung muss möglich sein. Setzt keine Normalverteilung voraus Zählt die Anzahl der konkordanten Paare Range: -1≤ τ ≤ 1 > k <- cor.test(speed, dist, method = "kendall") > k$estimate tau 0.6689901 > k$p.value [1] 2.638267e-11 19 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Regressionsgerade mit R ~ “hängt ab von” Die lm-Funktion berrechnet das lineare Modell > rg <- lm(dist ~ speed) > abline(rg) 20 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Residuen Zur Erinnerung: Residuen sind die Unterschiede zwischen den gemessen Werten Yi und den vorausgesagten Werten Ŷi. Einfärben der Datenpunkte gemäß ihrer Residuen: > > > > + > 21 16.11.2009 res <- abs(resid(rg)) sres <- (res-min(res))/(max(res)-min(res)) colors <- grey(1 - sqrt(sres)) plot(dist ~ speed, bg = colors, pch = 21, main = "…", xlab = "…", ylab = "…") abline(rg, col = "…") Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Regression für zwei Variable > > > + + > 22 16.11.2009 library(scatterplot3d) attach(trees) s3d <- scatterplot3d(Girth, Height, Volume, type = 'h', pch = 17, highlight.3d = T, angle = 60, main = "Holz…") s3d$plane3d(lm(Volume ~ Girth + Height)) Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Anscombes Quartett Vorsicht bei der Interpretation von Korrelation und Regression! 23 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Boxplots mit Zusatzinformationen versehen 1 Bei wenigen Datenpunkten: evtl. die Datenpunkte anzeigen. > > > > 24 16.11.2009 v <- c(0, seq(2, 8, 0.1), 10, 15) boxplot(v) x <- jitter(rep(1, length(v)), factor = 5) points(x, v, pch = 20, col = "…") Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Boxplots mit Zusatzinformationen versehen 2 Auch denkbar: Mittelwert Standardabweichung Ausgangswert … > > > + > > > + 25 16.11.2009 m <- mean(v) s <- sd(v) arrows(1.15, m - s, 1.15, m + s, code = 3, col = …) points(1.15, m, pch = 15, col = …) abline(h = 2, col = …, lty = 5) text(x = 0.7, y = 2, "Ausgangswert", pos = 3, col = "…") Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Übung: Boxplots Lesen Sie die Daten aus der Datei „Coverage.csv“ ein. Zeichnen Sie Boxplots, welche die Gruppen A und B bezüglich der Testabdeckung vergleichen. Zeichnen Sie die Boxplots nochmal. Färben Sie nun den Umriss der Boxplots dunkelgrau und die Füllung hellgrau. Zeichnen Sie die Datenpunkte mit ein. Zeichnen Sie die ursprüngliche Testabdeckung als horizontale Linie ein. 26 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Die Normalverteilung 1 f(X) e σ 2π (X μ) 2σ 2 2 > x <- seq(-5, 5, 0.05) > plot(x, dnorm(x, mean = 2, sd = 0.5), + type = "l", col = "orange") 27 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Die Konfidenzintervalle der Normalverteilung 28 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Übung: Der IQ Wie wahrscheinlich ist es, dass eine Person einen IQ zw. 115 und 130 hat? N(100, 15) 29 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R z z X μ σ Größerer Teil Kleinerer Teil 0.0 0.5000 0.5000 0.1 … 0.5398 … 0.4602 … 0.9 0.8159 0.1841 1.0 0.8413 0.1587 1.1 … 0.8643 … 0.1357 … 1.9 0.9713 0.0287 2.0 0.9772 0.0228 Münzwurf Eine Münze wird 20 Mal geworfen. Ergebnis: 15 Mal Kopf. Wir nehmen an, die Münze sei fair balanciert, d.h. Kopf hat die Wahrscheinlichkeit p = 0,5. Wie wahrscheinlich ist unsere Beobachtung? Die Wahrscheinlichkeit von n Würfen k Mal Kopf zu beobachten, ist durch die Binomialverteilung gegeben. P(k) 30 16.11.2009 n k p (1 p)n k k Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Münzwurf Eine Münze wird 20 Mal geworfen. Ergebnis: 15 Mal Kopf. Wir nehmen an, die Münze sei fair balanciert, d.h. Kopf hat die Wahrscheinlichkeit p = 0,5. Wie wahrscheinlich ist unsere Beobachtung? Die Wahrscheinlichkeit von n Würfen k Mal Kopf zu beobachten, ist durch die > x <- 0:20 Binomialverteilung > y <- dbinom(x, gegeben. P(k) 31 16.11.2009 size = 20, prob = 0.5) > plot(x, y, type = "o", pch = 16, main = n k n k p (1 p) + "Binom…", xlab = "Num…", ylab = "Pro…") k Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Hypothesentest Münzwurf Wir nahmen an, dass die Wahrscheinlichkeit für Kopf 0,5 ist. (Nullhypothese H0). Aber vielleicht ist die Wahrscheinlichkeit für Kopf ungleich 0,5 (Alternativhypothese HA). Signifikanzniveau α = 0,05 Das bedeutet: Wenn bei unserem Versuch ein Ergebnis herauskommt, dessen Wahrscheinlichkeit kleiner gleich α ist, dann sind wir bereit, die Nullhypothese zugunsten der Alternativhypothese zu verwerfen, weil dann das, was man beobachtet hat, unwahrscheinlich ist (≤ α). Wenn wir eine Wahrscheinlichkeit kleiner oder gleich α erhalten, lehnen wir H0 ab und nehmen HA an Trotzdem könnte es sein, dass die Münze fair ist. Die Irrtumswahrscheinlichkeit, oder die Wahrscheinlichkeit für einen Fehler erster Art ist α. Das bedeutet: wenn wir das Experiment mit 20 Würfen einer fairen Münze sehr oft durchführen würden, käme in 5% der Experimente ein Ergebnis heraus, dass so unwahrscheinlich ist, dass wir die Nullhypothese fälschlicherweise ablehnen würden. 32 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R P-Wert im Münzwurf-Beispiel Nun führen wir 20 Würfe aus und stellen fest, dass 15 Mal Kopf erscheint. Wir rechnen aus, wie wahrscheinlich es ist, dass bei 20 Würfen 15 mal oder häufiger Kopf erscheint; ferner die Wahrscheinlichkeit, dass 15 mal oder häufiger Zahl erschienen wäre. Wir addieren diese beiden Wahrscheinlichkeiten, weil wir aufgrund der Alternativhypothese beide Fälle berücksichtigen müssen (zweiseitiger Test). Das Ergebnis ist der sog. p-Wert. Den p-Wert berechnen Der p-Wert ist nicht die Wahrscheinlichkeit eines Einzelereignisses (15 Mal Kopf). Der p-Wert ist die Summe der Wahrscheinlichkeiten aller Ereignisse, die mind. so extrem sind wie 15 Mal Kopf (15 – 20 Mal). Dazu gehört auch 15 Mal Zahl (0 – 5 Mal Kopf). 34 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Münzwurf-Beispiel Der p-Wert ist nicht nur die Wahrscheinlichkeit eines einzelnen Ergebnisses (15 Mal Kopf), sondern die Summe der Wahrscheinlichkeiten aller Ergebnisse, die mindestens so extrem sind (also 15 – 20 Mal Kopf), da die zusätzlichen Ergebnisse noch ungünstiger für die Nullhypothese sind. Das Gleiche für 15-20 Mal Zahl, oder äquivalent 1-5 Mal Kopf. Wenn wir von vorne herein wissen, dass eine Münze nur in einer Richtung unfair sein könnte (z.B. q>0,5), dann genügt der einseitige Test. Als Hypothesentest mit R > binom.test(15, 20, 0.5) Exact binomial test data: 15 and 20 number of successes = 15, number of trials = 20, p-value = 0.04139 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.5089541 0.9134285 sample estimates: probability of success 0.75 Zweiseitiger Test, mit 95 % Konfidenz-intervall (Voreinstellung). Argumente: Anzahl Kopf, Anzahl der Würfe, angenommene Wahrscheinlichkeit für Kopf 36 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Der Zentrale Grenzwertsatz Ziehen von n Stichproben der Größen N aus ein Population mit dem Mittelwert μ und der Varianz σ2. Die Verteilung der Stichproben-Mittelwerte hat… Einen Mittelwert μX μ . Eine Varianz σ 2X σ 2 N . Ein Standardabweichung σ X σ N. Die Verteilung der Stichproben-Mittelwerte nähert sich der Normalverteilung an, wenn die Anzahl n der Stichproben steigt. 37 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Ein Beispiel: Würfeln Würfeln mit einem idealen Würfel erzeugt eine Gleichverteilung mit Mittelwert von 3,5 und einer Standardabweichung von 1,707. Nehmen wir an, wir würfeln mit 10 Würfeln unendlich oft und zeichnen die Verteilung der Stichproben-Mittelwerte. Theoretisch sollte… der Mittelwert 3,5 sein und die Standardabweichung 1,707/√10 = 0,540. 38 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R 10000 Mal Würfeln mit 10 (100) Würfeln Voraussage: Mittelw. = 3,5 Std. abw. = 0,540 (= 1,707/√10) 39 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Voraussage: Mittelw. = 3,5 Std. abw. = 0,171 (= 1,707/√100) Einstichproben-Test – Varianz bekannt Auch Gauß-Test genannt Die Standardabweichung der Population ist bekannt. Die Formel für z bei Einzelbeobachtungen lässt sich wie folgt umschreiben: X μX X μ wird zu z z σX σ 40 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R X μ N σ Einstichproben-Test – Varianz unbekannt Die Standardabweichung der Population ist unbekannt. Wir benutzen die Standardabweichung der Stichprobe s: z 41 16.11.2009 X μX σX X μX X μ N wird zu t sX σ Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R X μ N s Verteilung der Stichproben-Varianz s2 42 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Warum brauchen wir die Student t-Verteilung? Besonders für kleine Stichproben ist es wahrscheinlich, dass s2 σ2 unterschätzt. Das gilt auch für s und σ. Würden wir die Normalverteilung nehmen und den z-Wert berechnen, erhielten wir mehr „signifikante“ Ergebnisse als erwünscht. Ausweg: Wir berechnen den t-Wert und verwenden die Student t-Verteilung! 43 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Eigenschaften der Student t-Verteilung Hängt von den Freiheitsgraden ab. Nähert sich für große N der Standard-Normalverteilung N(0, 1) an. 44 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Die Student t-Verteilung > x <- seq(-5, 5, 0.05) > plot(x, dt(x, df = 100), + type = "l", col = …) 45 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Einstichproben-t-Test mit R > cm <- women$height * 2.54 > cm [1] 147.32 149.86 152.40 154.94 157.48 160.02 162.56 165.10 [9] 167.64 170.18 172.72 175.26 177.80 180.34 182.88 > t.test(cm, mu = 165) One Sample t-test data: cm t = 0.0341, df = 14, p-value = 0.9733 alternative hypothesis: true mean is not equal to 165 95 percent confidence interval: 158.8095 171.3905 sample estimates: mean of x 165.1 46 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Zweistichproben-t-Test – Abhängige Stichproben 1 Auch paarweiser t-Test genannt Nur anwendbar für… Datensätze von den gleichen Subjekten. Datensätze von verschiedenen Subjekten, die jedoch zusammen gehören und für die keine andere Zuordnung denkbar ist. Z.B.: Größe von Mutter und Kind. D bezeichnet die Differenz der beiden Datensätze X, Y. Teste H0: μX = μY bzw. μX – μY = μD = 0 47 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Zweistichproben-t-Test – Abhängige Stichproben 2 t war ursprünglich als Differenz der Mittelwerte der Stichprobe und der Gesamtpopulation, geteilt durch die Standardabweichung der Mittelwerts definiert. Jetzt besteht die Stichprobe selbst aus Differenzen, daher kann man die Formel für t nun wie folgt umformen: t 48 16.11.2009 D μD sD D N sD Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Beispiel: Vergleich zweier Schlafmittel 49 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Paarweiser t-Test mit R > t.test(sleep$extra ~ sleep$group, paired = T) Paired t-test data: sleep$extra by sleep$group t = -4.0621, df = 9, p-value = 0.002833 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -2.4598858 -0.7001142 sample estimates: mean of the differences -1.58 50 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Zweistichproben t-Test – Unabhängige Stichproben 1 Teste H0: μX = μY bzw. μX – μY = μD = 0 ( X Y ) (μX μY ) X Y t sX Y sX Y Verwende die geschätzte gemeinsame Varianz, wenn die Homogenität der Varianz der Stichproben nicht verletzt ist: sX Y 51 16.11.2009 1 2 sP NX 1 2 mit sP NY Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R (NX 1)s2X (NY 1)s2Y NX NY 2 Zweistichproben t-Test – Unabhängige Stichproben 2 Homogenität der Varianz bedeutet, dass die Stichproben aus Populationen mit den gleichen Varianzen stammen. Ist die Annahme der Homogenität der Varianz verletzt, wird die Varianz wie folgt geschätzt: sX Y s2X NX s2Y NY Faustregel: Die Homogenität der Varianz ist verletzt, wenn gilt: s 2X 4s 2Y (oder umgekehrt). 52 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Übung zum t-Test Laden sie den R-internen Datensatz „women“ und prüfen Sie, ob die Frauen aus einer Population mit dem Durchschnittsgewicht 60 kg stammen könnten (1 lbs = 0,454 kg). Laden Sie die Datei „Couples.csv“ (Quelle: [Howell 1999]). Darin finden Sie die sexuelle Zufriedenheit von verheirateten Paaren von 1 (sehr unzufrieden) bis 4 (sehr zufrieden). Testen Sie, ob es einen Unterschied zwischen Mann und Frau gibt. Welche Art von t-Test verwenden Sie und warum? Lesen Sie die Daten aus der Datei „Coverage.csv“ erneut ein. Testen Sie mit einem t-Test, ob es einen Unterschied in der Testabdeckung der Gruppen A und B gibt. Argumentieren Sie: Wäre ein Wilcoxon-Test hier besser? Führen Sie diesen Test ebenfalls durch. 53 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R Literatur [R 2.10.0 Manuals], http://www.r-project.org [Dalgaard 2003], Dalgaard, P.; Introductory Statistics with R, Springer, 2003 [Howell 1999], Howell, D. C.; Fundamental Statistics for the Behavioral Sciences, Brooks/Cole Publishing Company, 1999 [Büning Trenkler 1994] Büning, H. & Trenkler, G.; Nichtparametrische statistische Methoden, de Gruyter, 1994 54 16.11.2009 Empirische Softwaretechnik – Wintersemester 2009/2010 Datenanalyse mit R