Empirische Softwaretechnik Datenanalyse mit R

Werbung
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
Herunterladen